diff --git a/cli/completion/daemon.go b/cli/completion/daemon.go new file mode 100644 index 0000000..12dad18 --- /dev/null +++ b/cli/completion/daemon.go @@ -0,0 +1,34 @@ +package completion + +import ( + "os" + + "github.com/spf13/cobra" +) + +// InitCmd initialize all daemon subcommands +func InitCmd(cmd *cobra.Command) error { + completionCmd := &cobra.Command{ + Use: "completion", + Short: "Generate completion script", + Example: "flucky completion [bash|zsh|fish]", + ValidArgs: []string{"bash", "zsh", "fish"}, + Args: cobra.ExactValidArgs(1), + RunE: run, + } + cmd.AddCommand(completionCmd) + + return nil +} + +func run(cmd *cobra.Command, args []string) error { + switch args[0] { + case "bash": + return cmd.Root().GenBashCompletion(os.Stdout) + case "zsh": + return cmd.Root().GenZshCompletion(os.Stdout) + case "fish": + return cmd.Root().GenFishCompletion(os.Stdout, true) + } + return nil +} diff --git a/cli/root.go b/cli/root.go index b60ede6..0b8e59b 100644 --- a/cli/root.go +++ b/cli/root.go @@ -8,6 +8,7 @@ import ( "path/filepath" "time" + "git.cryptic.systems/volker.raschek/flucky/cli/completion" "git.cryptic.systems/volker.raschek/flucky/cli/daemon" imp "git.cryptic.systems/volker.raschek/flucky/cli/imp" "git.cryptic.systems/volker.raschek/flucky/cli/sensor" @@ -23,8 +24,7 @@ import ( func Execute(version *semver.Version) error { rootCmd := &cobra.Command{ - Use: "flucky", - // Short: "flucky - operate with differen sensors, his values and remote servers to synchronize measured values", + Use: "flucky", PersistentPreRunE: preRunError, Version: version.String(), } @@ -38,6 +38,7 @@ func Execute(version *semver.Version) error { rootCmd.PersistentFlags().String("loglevel", "info", "Set the Loglevel. Possible values: debug, info, warn, error, fatal") subCommands := []func(cmd *cobra.Command) error{ + completion.InitCmd, daemon.InitCmd, imp.InitCmd, sensor.InitCmd,