J'utilise https://github.com/jessevdk/go-flags et tente de regrouper les sous-commandes en utilisant l'option de premier niveau "group" dans le champ struct. Mais au lieu de regrouper les sous-commandes, il regroupe en fait les options dans les sous-commandes. Voici mon code :
type Cmd1 struct {
Opt1 string `long:"opt1" description:"first opt" required:"true"`
Opt2 int `long:"opt2" description:"second opt" default:"10"`
}
type Cmd2 struct {
OptA string `long:"optA" description:"opt a" default:":8080"`
OptB string `long:"optB" description:"opt b" default:"debug"`
}
type MainCmd struct {
Cmd1 Cmd1 `group:"group1" namespace:"group1" env-namespace:"group1"`
Cmd2 Cmd2 `group:"group2" namespace:"group2" env-namespace:"group2"`
}
func main() {
var mainCmd MainCmd
parser := flags.NewParser(&mainCmd, flags.Default)
if _, err := parser.Parse(); err != nil {
if err, ok := err.(*flags.Error); ok {
if err.Type == flags.ErrHelp {
os.Exit(0)
}
parser.WriteHelp(os.Stdout)
}
os.Exit(1)
}
}
Ce que je recherche, c'est que lorsque j'exécute la fonction principale, elle imprime le message d'aide avec les sous-commandes groupées, par exemple :
groupe1 :
--Cmd1
groupe2 :
--Cmd2
Cependant il regroupe les options des sous-commandes comme :
groupe1 :
--groupe1.opt1=
--groupe1.opt2=
groupe2 :
--groupe2.optA=
--groupe2.optB=
Des idées ou de l'aide ? Merci !