mirror of
https://github.com/rsteube/carapace-bin.git
synced 2025-05-05 15:32:53 +00:00
Added completer for tealdeer tldr client
Co-authored-by: aftix <aftix@aftix.xyz>
This commit is contained in:
parent
6c4f9c119e
commit
085165e310
55
completers/tealdeer_completer/cmd/root.go
Normal file
55
completers/tealdeer_completer/cmd/root.go
Normal file
@ -0,0 +1,55 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"github.com/carapace-sh/carapace"
|
||||
"github.com/carapace-sh/carapace-bin/pkg/actions/os"
|
||||
"github.com/carapace-sh/carapace-bin/pkg/actions/tools/tldr"
|
||||
"github.com/carapace-sh/carapace-bridge/pkg/actions/bridge"
|
||||
"github.com/carapace-sh/carapace/pkg/style"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "tealdeer",
|
||||
Short: "A fast TLDR client",
|
||||
Long: "https://github.com/dbrgn/tealdeer",
|
||||
Run: func(cmd *cobra.Command, args []string) {},
|
||||
}
|
||||
|
||||
func Execute() error {
|
||||
return rootCmd.Execute()
|
||||
}
|
||||
func init() {
|
||||
carapace.Gen(rootCmd).Standalone()
|
||||
|
||||
rootCmd.Flags().BoolP("clear-cache", "c", false, "Clear the local cache")
|
||||
rootCmd.Flags().String("color", "", "Control whether to use color")
|
||||
rootCmd.Flags().BoolP("help", "h", false, "Print help information")
|
||||
rootCmd.Flags().StringP("language", "L", "", "Override the language")
|
||||
rootCmd.Flags().BoolP("list", "l", false, "List all commands in the cache")
|
||||
rootCmd.Flags().Bool("no-auto-update", false, "If auto update is configured, disable it for this run")
|
||||
rootCmd.Flags().Bool("pager", false, "Use a pager to page output")
|
||||
rootCmd.Flags().StringP("platform", "p", "", "Override the operating system")
|
||||
rootCmd.Flags().BoolP("quiet", "q", false, "Suppress informational messages")
|
||||
rootCmd.Flags().BoolP("raw", "r", false, "Display the raw markdown instead of rendering it")
|
||||
rootCmd.Flags().StringP("render", "f", "", "Render a specific markdown file")
|
||||
rootCmd.Flags().Bool("seed-config", false, "Create a basic config")
|
||||
rootCmd.Flags().Bool("show-paths", false, "Show file and directory paths used by tealdeer")
|
||||
rootCmd.Flags().BoolP("update", "u", false, "Update the local cache")
|
||||
rootCmd.Flags().BoolP("version", "v", false, "Print the version")
|
||||
|
||||
carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{
|
||||
"color": carapace.ActionValues("always", "auto", "never").StyleF(style.ForKeyword),
|
||||
"language": os.ActionLanguages(),
|
||||
"platform": carapace.ActionValues("linux", "macos"),
|
||||
"render": carapace.ActionFiles(),
|
||||
})
|
||||
|
||||
carapace.Gen(rootCmd).PositionalCompletion(
|
||||
tldr.ActionCommands(),
|
||||
)
|
||||
|
||||
carapace.Gen(rootCmd).PositionalAnyCompletion(
|
||||
bridge.ActionCarapaceBin(),
|
||||
)
|
||||
}
|
7
completers/tealdeer_completer/main.go
Normal file
7
completers/tealdeer_completer/main.go
Normal file
@ -0,0 +1,7 @@
|
||||
package main
|
||||
|
||||
import "github.com/carapace-sh/carapace-bin/completers/tealdeer_completer/cmd"
|
||||
|
||||
func main() {
|
||||
cmd.Execute()
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
"github.com/carapace-sh/carapace"
|
||||
"github.com/carapace-sh/carapace-bin/pkg/actions/os"
|
||||
"github.com/carapace-sh/carapace-bin/pkg/actions/tools/tldr"
|
||||
"github.com/carapace-sh/carapace-bridge/pkg/actions/bridge"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@ -32,29 +32,15 @@ func init() {
|
||||
rootCmd.Flags().BoolP("version", "v", false, "show program's version number and exit")
|
||||
|
||||
carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{
|
||||
"language": os.ActionLanguages(),
|
||||
"platform": carapace.ActionValues("linux", "osx", "sunos", "windows", "common"),
|
||||
})
|
||||
|
||||
carapace.Gen(rootCmd).PositionalCompletion(
|
||||
ActionCommands(),
|
||||
tldr.ActionCommands(),
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
func ActionCommands() carapace.Action {
|
||||
return carapace.ActionCallback(func(c carapace.Context) carapace.Action {
|
||||
return carapace.ActionExecCommand("tldr", "--list")(func(output []byte) carapace.Action {
|
||||
var commands []string
|
||||
fixedOutput := strings.Replace(string(output), `'`, `"`, -1)
|
||||
if err := json.Unmarshal([]byte(fixedOutput), &commands); err != nil {
|
||||
return carapace.ActionMessage(err.Error())
|
||||
} else {
|
||||
if len(commands) == 0 {
|
||||
return carapace.ActionMessage("execute `tldr -u` first")
|
||||
} else {
|
||||
return carapace.ActionValues(commands...)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
carapace.Gen(rootCmd).PositionalAnyCompletion(
|
||||
bridge.ActionCarapaceBin(),
|
||||
)
|
||||
}
|
||||
|
48
pkg/actions/tools/tldr/command.go
Normal file
48
pkg/actions/tools/tldr/command.go
Normal file
@ -0,0 +1,48 @@
|
||||
package tldr
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
"github.com/carapace-sh/carapace"
|
||||
)
|
||||
|
||||
func ActionCommands() carapace.Action {
|
||||
return carapace.ActionExecCommand("tldr", "--help")(func(output []byte) carapace.Action {
|
||||
switch {
|
||||
case strings.Contains(string(output), "Python"):
|
||||
return actionCommandsPython()
|
||||
case strings.Contains(string(output), "tealdeer"):
|
||||
return actionCommandsTealdeer()
|
||||
default:
|
||||
return carapace.ActionValues()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func actionCommandsPython() carapace.Action {
|
||||
return carapace.ActionCallback(func(c carapace.Context) carapace.Action {
|
||||
return carapace.ActionExecCommand("tldr", "--list")(func(output []byte) carapace.Action {
|
||||
var commands []string
|
||||
fixedOutput := strings.Replace(string(output), `'`, `"`, -1)
|
||||
if err := json.Unmarshal([]byte(fixedOutput), &commands); err != nil {
|
||||
return carapace.ActionMessage(err.Error())
|
||||
} else {
|
||||
if len(commands) == 0 {
|
||||
return carapace.ActionMessage("execute `tldr -u` first")
|
||||
} else {
|
||||
return carapace.ActionValues(commands...)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func actionCommandsTealdeer() carapace.Action {
|
||||
return carapace.ActionCallback(func(c carapace.Context) carapace.Action {
|
||||
return carapace.ActionExecCommand("tldr", "--list")(func(output []byte) carapace.Action {
|
||||
lines := strings.Split(string(output), "\n")
|
||||
return carapace.ActionValues(lines...)
|
||||
})
|
||||
})
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user