package cmd import ( "log/slog" ripsort "git.kapelle.org/niklas/ripsort/internal" "github.com/alexflint/go-arg" ) type InfoCmd struct { File string `arg:"positional,required"` } type SortCmd struct { Dst string `arg:"positional,required"` Path string `arg:"positional,required"` } type args struct { Info *InfoCmd `arg:"subcommand:info"` Sort *SortCmd `arg:"subcommand:sort"` Verbose bool `arg:"-v" default:"false"` } func Run() { var args args p := arg.MustParse(&args) if args.Verbose { slog.SetLogLoggerLevel(slog.LevelDebug) } switch { case args.Info != nil: ripsort.Scan(args.Info.File) case args.Sort != nil: ripsort.Sort(args.Sort.Dst, args.Sort.Path) default: p.Fail("Must specify command") } }