diff --git a/flags/flags.go b/flags/flags.go index 8a769e6..fd7a0e9 100644 --- a/flags/flags.go +++ b/flags/flags.go @@ -43,20 +43,26 @@ func Help(subcmd string, opts any) { v := reflect.ValueOf(opts) t := v.Type() - fmt.Printf("um %s usage:\n", subcmd) w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0) + positional := "" for i := 0; i < v.NumField(); i++ { field := t.Field(i) value := v.Field(i) switch value.Interface().(type) { case Arg: + positional += fmt.Sprintf(" [%s]", strings.ToLower(field.Name)) fmt.Fprintf(w, "[%v]\tstring\t%v\n", strings.ToLower(field.Name), value.FieldByName("Help")) case Flag[string]: + positional += fmt.Sprintf(" [%s]", value.FieldByName("Long")) fmt.Fprintf(w, "%v | %v\tstring\t%v\n", value.FieldByName("Long"), value.FieldByName("Short"), value.FieldByName("Help")) case Flag[bool]: + if field.Name != "Help" { + positional += fmt.Sprintf(" [%s]", value.FieldByName("Long")) + } fmt.Fprintf(w, "%v | %v\tbool\t%v\n", value.FieldByName("Long"), value.FieldByName("Short"), value.FieldByName("Help")) } } + fmt.Printf("um %s%s\n", subcmd, positional) w.Flush() } diff --git a/sort/sort.go b/sort/sort.go index ceeca8d..eb10865 100644 --- a/sort/sort.go +++ b/sort/sort.go @@ -37,7 +37,7 @@ func parseArgs(args []string) options { } opts.Key.Val = args[i+1] case arg == opts.Help.Long || arg == opts.Help.Short: - flags.Help("tag", opts) + flags.Help("sort", opts) return opts } }