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  }