diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2025-10-24 17:18:35 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2025-10-24 17:18:35 -0700 |
| commit | 22300a4ed7e0d36c2fd749df2e70ed3f3bfff1c7 (patch) | |
| tree | ee18d1b611804ec9ab379b75333191384ffdf78e /sym.go | |
| parent | Get rid of defaultOptions (diff) | |
| download | sym-22300a4ed7e0d36c2fd749df2e70ed3f3bfff1c7.tar.zst | |
Add in-tool documentation
Diffstat (limited to 'sym.go')
| -rw-r--r-- | sym.go | 38 |
1 files changed, 28 insertions, 10 deletions
@@ -13,7 +13,7 @@ type subcommand interface { } func whichSubcommand(name string) (subcommand, bool) { - switch filepath.Base(name) { + switch name { case "enc": return &encryptOptions{ passwordIn: termReadPassword, @@ -33,20 +33,38 @@ func whichSubcommand(name string) (subcommand, bool) { } func run(args []string) error { - cmd, ok := whichSubcommand(args[0]) + name := filepath.Base(args[0]) + cmd, ok := whichSubcommand(name) if !ok { - if len(args) < 2 { - return fmt.Errorf("missing subcommand") + flag.Usage = func() { + fmt.Fprintf(os.Stderr, `usage: sym <subcommand> [OPTION]... [FILE]... +Encrypt or decrypt files using a password. + +Subcommands: + enc encrypt + dec decrypt + +Try sym <subcommand> -h for command-specific help. + +Pro tip: use "ln sym enc" or "ln sym dec" to create shortcuts for each subcommand. +`) + } + flag.CommandLine.Parse(args[1:]) + args = flag.Args() + if len(args) == 0 { + return fmt.Errorf("missing subcommand (use sym -h for help)") } - cmd, ok = whichSubcommand(args[1]) + subcommand := filepath.Base(args[0]) + name = "sym " + subcommand + cmd, ok = whichSubcommand(subcommand) if !ok { - return fmt.Errorf("invalid subcommand %q", args[1]) + return fmt.Errorf("invalid subcommand %q", args[0]) } - args = args[1:] } - cmd.registerFlags(flag.CommandLine) - flag.CommandLine.Parse(args[1:]) - return cmd.run(flag.Args()...) + fs := flag.NewFlagSet(name, flag.ExitOnError) + cmd.registerFlags(fs) + fs.Parse(args[1:]) + return cmd.run(fs.Args()...) } func main() { |
