// Package options holds the flags that every command has and reads // them back. package options import ( "fmt" "git.eeqj.de/sneak/keyfunc/internal/mnemonic" "github.com/spf13/cobra" ) // Add gives a command the flags that every command has. They are // persistent, so every command below it has them too. func Add(cmd *cobra.Command) { cmd.PersistentFlags().String( "mnemonic-command", "", "shell command whose output is the mnemonic", ) cmd.PersistentFlags().Uint32P( "index", "n", 0, "which key to derive", ) } // Index returns the key index the user asked for. func Index(cmd *cobra.Command) (uint32, error) { index, err := cmd.Flags().GetUint32("index") if err != nil { return 0, fmt.Errorf("reading the index: %w", err) } return index, nil } // Mnemonic returns the mnemonic, from the first source that has one. func Mnemonic(cmd *cobra.Command) (string, error) { command, err := cmd.Flags().GetString("mnemonic-command") if err != nil { return "", fmt.Errorf("reading the mnemonic command: %w", err) } return mnemonic.Read(cmd.Context(), command) }