// Package export provides command structure export
package export import ( ) type command struct { Name string Short string Long string `json:",omitempty"` Aliases []string `json:",omitempty"` Commands []command `json:",omitempty"` LocalFlags []flag `json:",omitempty"` PersistentFlags []flag `json:",omitempty"` } type flag struct { Longhand string `json:",omitempty"` Shorthand string `json:",omitempty"` Usage string Type string NoOptDefVal string `json:",omitempty"` } func convertFlag( *pflag.Flag) flag { := "" if (pflagfork.Flag{Flag: }).Mode() != pflagfork.ShorthandOnly { = .Name } := "" if .Value.Type() != "bool" { = .NoOptDefVal } return flag{ Longhand: , Shorthand: .Shorthand, Usage: .Usage, Type: .Value.Type(), NoOptDefVal: , } } func convert( *cobra.Command) command { := command{ Name: .Name(), Short: .Short, Long: .Long, Aliases: .Aliases, } := make([]flag, 0) .LocalFlags().VisitAll(func( *pflag.Flag) { = append(, convertFlag()) }) .LocalFlags = := make([]flag, 0) .PersistentFlags().VisitAll(func( *pflag.Flag) { = append(, convertFlag()) }) .PersistentFlags = := make([]command, 0) for , := range .Commands() { if !.Hidden { = append(, ()) } } .Commands = return } // Snippet exports the command structure as json. func ( *cobra.Command) string { , := json.Marshal(convert()) if == nil { return string() } return .Error() }