github.com/sercand/please@v13.4.0+incompatible/third_party/go/flags_subcommand.patch (about) 1 diff --git a/parser.go b/parser.go 2 index fd2fd5f..3af2af9 100644 3 --- a/parser.go 4 +++ b/parser.go 5 @@ -633,10 +633,6 @@ func (p *parseState) addArgs(args ...string) error { 6 } 7 8 func (p *Parser) parseNonOption(s *parseState) error { 9 - if len(s.positional) > 0 { 10 - return s.addArgs(s.arg) 11 - } 12 - 13 if len(s.command.commands) > 0 && len(s.retargs) == 0 { 14 if cmd := s.lookup.commands[s.arg]; cmd != nil { 15 s.command.Active = cmd 16 @@ -649,6 +645,10 @@ func (p *Parser) parseNonOption(s *parseState) error { 17 } 18 } 19 20 + if len(s.positional) > 0 { 21 + return s.addArgs(s.arg) 22 + } 23 + 24 if (p.Options & PassAfterNonOption) != None { 25 // If PassAfterNonOption is set then all remaining arguments 26 // are considered positional 27 diff --git a/group.go b/group.go 28 index 9341d23..7f269b2 100644 29 --- a/group.go 30 +++ b/group.go 31 @@ -128,6 +128,11 @@ func (g *Group) FindOptionByShortName(shortName rune) *Option { 32 }) 33 } 34 35 +// AddOption adds a new option to this group. 36 +func (g *Group) AddOption(option *Option) { 37 + g.options = append(g.options, option) 38 +} 39 + 40 func newGroup(shortDescription string, longDescription string, data interface{}) *Group { 41 return &Group{ 42 ShortDescription: shortDescription,