Я хотел бы сделать подкоманду в Golang, которая печатает все родительские команды. Пример:
$ cli-tool list
Commands available:
- h, help for more info
- version for current version of tool
- list to list all commands
Текущий код:
package main
import (
"fmt"
"os"
"flag"
)
func main() {
version := flag.NewFlagSet("version", flag.ExitOnError)
list := flag.NewFlagSet("list", flag.ExitOnError)
switch os.Args[1] {
case "version":
version.Parse(os.Args[2:])
case "list":
list.Parse(os.Args[2:])
}
if version.Parsed() {
fmt.Println("5e")
os.Exit(1)
}
if list.Parsed() {
flag.PrintDefaults()
os.Exit(1)
}
}
Результаты:
$cli-tool list
$
(без команд печати.)
Я думаю, что это вытягивая из списка команду, а не все базовые команды. Я ожидаю, что он напечатает «версию» и «список», но ничего не печатает. Есть ли способ, которым я могу настроить это, чтобы «PrintDefaults» всегда ссылался на родительскую команду?
Заранее спасибо!