Signed-off-by: Vincent Demeester <vincent@sbr.pm>
| ... | ... |
@@ -139,7 +139,7 @@ clone git github.com/docker/docker-credential-helpers v0.3.0 |
| 139 | 139 |
clone git github.com/docker/containerd 57b7c3da915ebe943bd304c00890959b191e5264 |
| 140 | 140 |
|
| 141 | 141 |
# cli |
| 142 |
-clone git github.com/spf13/cobra acf60156558542e78c6f3695f74b0f871614ff55 https://github.com/dnephin/cobra.git |
|
| 142 |
+clone git github.com/spf13/cobra 75205f23b3ea70dc7ae5e900d074e010c23c37e9 https://github.com/dnephin/cobra.git |
|
| 143 | 143 |
clone git github.com/spf13/pflag cb88ea77998c3f024757528e3305022ab50b43be |
| 144 | 144 |
clone git github.com/inconshreveable/mousetrap 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75 |
| 145 | 145 |
|
| ... | ... |
@@ -123,6 +123,9 @@ type Command struct {
|
| 123 | 123 |
DisableSuggestions bool |
| 124 | 124 |
// If displaying suggestions, allows to set the minimum levenshtein distance to display, must be > 0 |
| 125 | 125 |
SuggestionsMinimumDistance int |
| 126 |
+ |
|
| 127 |
+ // Disable the flag parsing. If this is true all flags will be passed to the command as arguments. |
|
| 128 |
+ DisableFlagParsing bool |
|
| 126 | 129 |
} |
| 127 | 130 |
|
| 128 | 131 |
// os.Args[1:] by default, if desired, can be overridden |
| ... | ... |
@@ -556,12 +559,16 @@ func (c *Command) execute(a []string) (err error) {
|
| 556 | 556 |
return flag.ErrHelp |
| 557 | 557 |
} |
| 558 | 558 |
|
| 559 |
- if err := c.ValidateArgs(a); err != nil {
|
|
| 560 |
- return err |
|
| 561 |
- } |
|
| 562 |
- |
|
| 563 | 559 |
c.preRun() |
| 560 |
+ |
|
| 564 | 561 |
argWoFlags := c.Flags().Args() |
| 562 |
+ if c.DisableFlagParsing {
|
|
| 563 |
+ argWoFlags = a |
|
| 564 |
+ } |
|
| 565 |
+ |
|
| 566 |
+ if err := c.ValidateArgs(argWoFlags); err != nil {
|
|
| 567 |
+ return err |
|
| 568 |
+ } |
|
| 565 | 569 |
|
| 566 | 570 |
for p := c; p != nil; p = p.Parent() {
|
| 567 | 571 |
if p.PersistentPreRunE != nil {
|
| ... | ... |
@@ -702,7 +709,7 @@ func (c *Command) ValidateArgs(args []string) error {
|
| 702 | 702 |
if c.Args == nil {
|
| 703 | 703 |
return nil |
| 704 | 704 |
} |
| 705 |
- return c.Args(c, stripFlags(args, c)) |
|
| 705 |
+ return c.Args(c, args) |
|
| 706 | 706 |
} |
| 707 | 707 |
|
| 708 | 708 |
func (c *Command) initHelpFlag() {
|
| ... | ... |
@@ -1200,6 +1207,9 @@ func (c *Command) persistentFlag(name string) (flag *flag.Flag) {
|
| 1200 | 1200 |
|
| 1201 | 1201 |
// ParseFlags parses persistent flag tree & local flags |
| 1202 | 1202 |
func (c *Command) ParseFlags(args []string) (err error) {
|
| 1203 |
+ if c.DisableFlagParsing {
|
|
| 1204 |
+ return nil |
|
| 1205 |
+ } |
|
| 1203 | 1206 |
c.mergePersistentFlags() |
| 1204 | 1207 |
err = c.Flags().Parse(args) |
| 1205 | 1208 |
return |