github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/pkg/cmd/keys.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/spf13/cobra" 8 "golang.org/x/exp/slices" 9 ) 10 11 func keysCmd() *cobra.Command { 12 cmd := &cobra.Command{ 13 Use: "keys", 14 Short: "Manage keys", 15 Long: "Manage keys for signing & verifying update packages.", 16 Aliases: []string{"k"}, 17 Args: cobra.NoArgs, 18 PersistentPreRunE: func(cmd *cobra.Command, args []string) error { 19 if len(args) > 0 && !slices.Contains(cmd.ValidArgs, args[0]) { 20 var b strings.Builder 21 for _, s := range cmd.ValidArgs { 22 b.WriteString(fmt.Sprintf("\t%v\n", s)) 23 } 24 return fmt.Errorf("invalid argument %q for %q\n\nDid you mean this?\n%s", args[0], cmd.CommandPath(), b.String()) 25 } 26 return nil 27 }, 28 } 29 30 cmd.AddCommand(keysCreateCmd(), keysPublicCmd(), keysImportCmd()) 31 32 return cmd 33 }