check / check (push) Successful in 54s
REPO_POLICIES.md sets the Go module root to sneak.berlin/go/<name>. go.mod, every import of the old path and the -X path in the Makefile LDFLAGS now use sneak.berlin/go/keyfunc; make fmt moved those imports to their new place in the sort order. The old path keeps no alias. The README gives the go install line next to the build from a clone and drops this issue from its TODO list. Model: opus-5-5
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
// Package options holds the flags that every command has and reads
|
|
// them back.
|
|
package options
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/spf13/cobra"
|
|
"sneak.berlin/go/keyfunc/internal/mnemonic"
|
|
)
|
|
|
|
// 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)
|
|
}
|