From a976dfd7537ec87cbc99c7f14a8e8e24f37abb55 Mon Sep 17 00:00:00 2001 From: bth Date: Sun, 18 Jan 2026 15:23:55 -0800 Subject: [PATCH] sort : flags --- sort/sort.go | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/sort/sort.go b/sort/sort.go index ac02820..ceeca8d 100644 --- a/sort/sort.go +++ b/sort/sort.go @@ -2,8 +2,49 @@ package sort import ( "fmt" + + "github.com/brtholomy/um/go/flags" ) -func Sort(args []string) { - fmt.Printf("args: %#v\n", args) +type options struct { + Source flags.Flag[string] + Key flags.Flag[string] + Help flags.Flag[bool] +} + +func initOpts() options { + return options{ + flags.Flag[string]{"--source", "-s", "", "path to source list. reads from stdin if omitted."}, + flags.Flag[string]{"--key", "-k", "", "path to sort key"}, + flags.Flag[bool]{"--help", "-h", false, "show help"}, + } +} + +func parseArgs(args []string) options { + opts := initOpts() + for i, arg := range args { + switch { + case arg == opts.Source.Long || arg == opts.Source.Short: + if flags.MissingValueArg(args, i) { + flags.HelpMissingVal(arg) + break + } + opts.Source.Val = args[i+1] + case arg == opts.Key.Long || arg == opts.Key.Short: + if flags.MissingValueArg(args, i) { + flags.HelpMissingVal(arg) + break + } + opts.Key.Val = args[i+1] + case arg == opts.Help.Long || arg == opts.Help.Short: + flags.Help("tag", opts) + return opts + } + } + return opts +} + +func Sort(args []string) { + opts := parseArgs(args) + fmt.Println(opts) }