mirror of
https://github.com/rsteube/carapace-bin.git
synced 2025-05-12 18:54:31 +00:00
92 lines
4.5 KiB
Go
92 lines
4.5 KiB
Go
package cmd
|
|
|
|
import (
|
|
"github.com/rsteube/carapace"
|
|
"github.com/rsteube/carapace-bin/completers/code_completer/cmd/action"
|
|
"github.com/rsteube/carapace-bin/pkg/actions/os"
|
|
"github.com/rsteube/carapace/pkg/style"
|
|
"github.com/rsteube/carapace/pkg/util"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var rootCmd = &cobra.Command{
|
|
Use: "code",
|
|
Short: "Visual Studio Code",
|
|
Long: "https://code.visualstudio.com/",
|
|
Run: func(cmd *cobra.Command, args []string) {},
|
|
}
|
|
|
|
func Execute() error {
|
|
return rootCmd.Execute()
|
|
}
|
|
|
|
func init() {
|
|
carapace.Gen(rootCmd).Standalone()
|
|
|
|
rootCmd.Flags().StringP("add", "a", "", "Add folder(s) to the last active window.")
|
|
rootCmd.Flags().String("category", "", "Filters installed extensions by provided category, when using --list-extensions.")
|
|
rootCmd.Flags().Bool("diff", false, "Compare two files with each other.")
|
|
rootCmd.Flags().String("disable-extension", "", "Disable an extension.")
|
|
rootCmd.Flags().Bool("disable-extensions", false, "Disable all installed extensions.")
|
|
rootCmd.Flags().Bool("disable-gpu", false, "Disable GPU hardware acceleration.")
|
|
rootCmd.Flags().String("enable-proposed-api", "", "Enables proposed API features for extensions.")
|
|
rootCmd.Flags().String("extensions-dir", "", "Set the root path for extensions.")
|
|
rootCmd.Flags().StringP("goto", "g", "", "Open a file at the path on the specified line and character position.")
|
|
rootCmd.Flags().BoolP("help", "h", false, "Print usage.")
|
|
rootCmd.Flags().String("inspect-brk-extensions", "", "Allow debugging and profiling of extensions with the extension host being paused after start.")
|
|
rootCmd.Flags().String("inspect-extensions", "", "Allow debugging and profiling of extensions.")
|
|
rootCmd.Flags().String("install-extension", "", "Installs or updates the extension.")
|
|
rootCmd.Flags().Bool("list-extensions", false, "List the installed extensions.")
|
|
rootCmd.Flags().String("locale", "", "The locale to use (e.g. en-US or zh-TW).")
|
|
rootCmd.Flags().String("log", "", "Log level to use.")
|
|
rootCmd.Flags().String("max-memory", "", "Max memory size for a window (in Mbytes).")
|
|
rootCmd.Flags().BoolP("new-window", "n", false, "Force to open a new window.")
|
|
rootCmd.Flags().Bool("prof-startup", false, "Run CPU profiler during startup.")
|
|
rootCmd.Flags().BoolP("reuse-window", "r", false, "Force to open a file or folder in an already opened window.")
|
|
rootCmd.Flags().Bool("show-versions", false, "Show versions of installed extensions, when using --list-extensions.")
|
|
rootCmd.Flags().BoolP("status", "s", false, "Print process usage and diagnostics information.")
|
|
rootCmd.Flags().String("sync", "", "Turn sync on or off.")
|
|
rootCmd.Flags().Bool("telemetry", false, "Shows all telemetry events which VS code collects.")
|
|
rootCmd.Flags().String("uninstall-extension", "", "Uninstalls an extension.")
|
|
rootCmd.Flags().String("user-data-dir", "", "Specifies the directory that user data is kept in.")
|
|
rootCmd.Flags().Bool("verbose", false, "Print verbose output (implies --wait).")
|
|
rootCmd.Flags().BoolP("version", "v", false, "Print version.")
|
|
rootCmd.Flags().BoolP("wait", "w", false, "Wait for the files to be closed before returning.")
|
|
|
|
carapace.Gen(rootCmd).FlagCompletion(carapace.ActionMap{
|
|
"add": carapace.ActionDirectories(),
|
|
"category": carapace.ActionValues("Programming Languages", "Snippets", "Linters", "Themes", "Debuggers", "Other"),
|
|
"disable-extension": action.ActionExtensions(rootCmd),
|
|
"extensions-dir": carapace.ActionDirectories(),
|
|
"goto": carapace.ActionMultiParts(":", func(c carapace.Context) carapace.Action {
|
|
switch len(c.Parts) {
|
|
case 0:
|
|
return carapace.ActionFiles().NoSpace()
|
|
default:
|
|
return carapace.ActionValues()
|
|
}
|
|
}),
|
|
"install-extension": carapace.ActionCallback(func(c carapace.Context) carapace.Action {
|
|
if util.HasPathPrefix(c.Value) {
|
|
return carapace.ActionFiles(".vsix")
|
|
}
|
|
return action.ActionExtensionSearch(rootCmd.Flag("category").Value.String())
|
|
}),
|
|
"locale": os.ActionLocales(),
|
|
"log": carapace.ActionValues("critical", "error", "warn", "info", "debug", "trace", "off").StyleF(style.ForLogLevel),
|
|
"sync": carapace.ActionValues("on", "off"),
|
|
"uninstall-extension": action.ActionExtensions(rootCmd),
|
|
"user-data-dir": carapace.ActionDirectories(),
|
|
})
|
|
|
|
carapace.Gen(rootCmd).PositionalAnyCompletion(
|
|
carapace.ActionCallback(func(c carapace.Context) carapace.Action {
|
|
if rootCmd.Flag("diff").Changed &&
|
|
len(c.Args) > 1 {
|
|
return carapace.ActionValues()
|
|
}
|
|
return carapace.ActionFiles()
|
|
}),
|
|
)
|
|
}
|