// Package cli builds the command tree and runs it. package cli import ( "fmt" "os" "git.eeqj.de/sneak/keyfunc/internal/cli/age" "git.eeqj.de/sneak/keyfunc/internal/cli/mnemonic" "git.eeqj.de/sneak/keyfunc/internal/cli/options" "git.eeqj.de/sneak/keyfunc/internal/cli/ssh" "github.com/spf13/cobra" ) // Version is what --version prints. The build sets it. // //nolint:gochecknoglobals // set at build time with -ldflags var Version = "dev" // Root returns the whole command tree. func Root() *cobra.Command { root := &cobra.Command{ Use: "keyfunc", Short: "derive key pairs from a BIP-39 mnemonic", Long: "keyfunc turns a BIP-39 mnemonic into key pairs that can " + "be recreated from that mnemonic at any time. The same " + "mnemonic, key type and index always give the same key.", Version: Version, SilenceUsage: true, SilenceErrors: true, } options.Add(root) root.AddCommand(ssh.Command(), age.Command(), mnemonic.Command()) return root } // Main runs the tool and returns the status the process should exit // with. func Main() int { err := Root().Execute() if err != nil { fmt.Fprintln(os.Stderr, "keyfunc: "+err.Error()) return 1 } return 0 }