vendor: github.com/urfave/cli v1.22.9
The regression in v1.22.2 has been resolved, so we can drop the replace rule and use the latest v1.22.x version. full diff: https://github.com/urfave/cli/compare/v1.22.1...v1.22.9 Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
		
							
								
								
									
										6
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.mod
									
									
									
									
									
								
							| @@ -50,7 +50,7 @@ require ( | ||||
| 	github.com/sirupsen/logrus v1.8.1 | ||||
| 	github.com/stretchr/testify v1.7.1 | ||||
| 	github.com/tchap/go-patricia/v2 v2.3.1 | ||||
| 	github.com/urfave/cli v1.22.2 | ||||
| 	github.com/urfave/cli v1.22.9 | ||||
| 	github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5 | ||||
| 	go.etcd.io/bbolt v1.3.6 | ||||
| 	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 | ||||
| @@ -135,7 +135,3 @@ require ( | ||||
| 	sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect | ||||
| 	sigs.k8s.io/yaml v1.3.0 // indirect | ||||
| ) | ||||
|  | ||||
| // When updating replace rules, make sure to also update the rules in integration/client/go.mod and api/go.mod | ||||
| // urfave/cli must be <= v1.22.1 due to a regression: https://github.com/urfave/cli/issues/1092 | ||||
| replace github.com/urfave/cli => github.com/urfave/cli v1.22.1 | ||||
|   | ||||
							
								
								
									
										6
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.sum
									
									
									
									
									
								
							| @@ -908,8 +908,12 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1 | ||||
| github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | ||||
| github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= | ||||
| github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= | ||||
| github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= | ||||
| github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= | ||||
| github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= | ||||
| github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||
| github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||
| github.com/urfave/cli v1.22.9 h1:cv3/KhXGBGjEXLC4bH0sLuJ9BewaAbpk5oyMOveu4pw= | ||||
| github.com/urfave/cli v1.22.9/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||
| github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= | ||||
| github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= | ||||
| github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= | ||||
|   | ||||
| @@ -65,17 +65,9 @@ require ( | ||||
| 	sigs.k8s.io/yaml v1.3.0 // indirect | ||||
| ) | ||||
|  | ||||
| replace ( | ||||
| 	// use the containerd module from this repository instead of downloading | ||||
| 	// | ||||
| 	// IMPORTANT: this replace rule ONLY replaces containerd itself; dependencies | ||||
| 	// in the "require" section above are still taken into account for version | ||||
| 	// resolution if newer. | ||||
| 	github.com/containerd/containerd => ../../ | ||||
|  | ||||
| 	// Replace rules below must be kept in sync with the main go.mod file at the | ||||
| 	// root, because that's the actual version expected by the "containerd/containerd" | ||||
| 	// dependency above. | ||||
| 	// urfave/cli must be <= v1.22.1 due to a regression: https://github.com/urfave/cli/issues/1092 | ||||
| 	github.com/urfave/cli => github.com/urfave/cli v1.22.1 | ||||
| ) | ||||
| // use the containerd module from this repository instead of downloading | ||||
| // | ||||
| // IMPORTANT: this replace rule ONLY replaces containerd itself; dependencies | ||||
| // in the "require" section above are still taken into account for version | ||||
| // resolution if newer. | ||||
| replace github.com/containerd/containerd => ../../ | ||||
|   | ||||
| @@ -645,6 +645,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1 | ||||
| github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= | ||||
| github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= | ||||
| github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||
| github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||
| github.com/urfave/cli v1.22.9/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||
| github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= | ||||
| github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= | ||||
| github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/urfave/cli/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/urfave/cli/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,5 @@ | ||||
| *.coverprofile | ||||
| coverage.txt | ||||
| node_modules/ | ||||
| vendor | ||||
| .idea | ||||
|   | ||||
							
								
								
									
										35
									
								
								vendor/github.com/urfave/cli/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								vendor/github.com/urfave/cli/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,35 +0,0 @@ | ||||
| language: go | ||||
| sudo: false | ||||
| dist: bionic | ||||
| osx_image: xcode10 | ||||
| go: | ||||
|   - 1.11.x | ||||
|   - 1.12.x | ||||
|   - 1.13.x | ||||
|  | ||||
| os: | ||||
|   - linux | ||||
|   - osx | ||||
|  | ||||
| env: | ||||
|   GO111MODULE=on | ||||
|   GOPROXY=https://proxy.golang.org | ||||
|  | ||||
| cache: | ||||
|   directories: | ||||
|     - node_modules | ||||
|  | ||||
| before_script: | ||||
|   - go get github.com/urfave/gfmrun/cmd/gfmrun | ||||
|   - go get golang.org/x/tools/cmd/goimports | ||||
|   - npm install markdown-toc | ||||
|   - go mod tidy | ||||
|  | ||||
| script: | ||||
|   - go run build.go vet | ||||
|   - go run build.go test | ||||
|   - go run build.go gfmrun | ||||
|   - go run build.go toc | ||||
|  | ||||
| after_success: | ||||
|   - bash <(curl -s https://codecov.io/bash) | ||||
							
								
								
									
										504
									
								
								vendor/github.com/urfave/cli/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										504
									
								
								vendor/github.com/urfave/cli/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,504 +0,0 @@ | ||||
| # Change Log | ||||
|  | ||||
| **ATTN**: This project uses [semantic versioning](http://semver.org/). | ||||
|  | ||||
| ## [Unreleased] | ||||
|  | ||||
| ## [1.22.1] - 2019-09-11 | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| * Hide output of hidden commands on man pages in [urfave/cli/pull/889](https://github.com/urfave/cli/pull/889) via [@crosbymichael](https://github.com/crosbymichael) | ||||
| * Don't generate fish completion for hidden commands [urfave/cli/pull/891](https://github.com/urfave/891) via [@saschagrunert](https://github.com/saschagrunert) | ||||
| * Using short flag names for required flags throws an error in [urfave/cli/pull/890](https://github.com/urfave/cli/pull/890) via [@asahasrabuddhe](https://github.com/asahasrabuddhe) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| * Remove flag code generation logic, legacy python test runner in [urfave/cli/pull/883](https://github.com/urfave/cli/pull/883) via [@asahasrabuddhe](https://github.com/asahasrabuddhe) | ||||
| * Enable Go Modules support, drop support for `Go 1.10` add support for `Go 1.13` in [urfave/cli/pull/885](https://github.com/urfave/cli/pull/885) via [@asahasrabuddhe](https://github.com/asahasrabuddhe) | ||||
|  | ||||
| ## [1.22.0] - 2019-09-07 | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| * Fix Subcommands not falling back to `app.ExitEventHandler` in [urfave/cli/pull/856](https://github.com/urfave/cli/pull/856) via [@FaranIdo](https://github.com/FaranIdo) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| * Clarify that altsrc supports both TOML and JSON in [urfave/cli/pull/774](https://github.com/urfave/cli/pull/774) via [@whereswaldon](https://github.com/whereswaldon) | ||||
| * Made the exit code example more clear in [urfave/cli/pull/823](https://github.com/urfave/cli/pull/823) via [@xordspar0](https://github.com/xordspar0) | ||||
| * Removed the use of python for internal flag generation in [urfave/cli/pull/836](https://github.com/urfave/cli/pull/836) via [@asahasrabuddhe](https://github.com/asahasrabuddhe) | ||||
| * Changed the supported go versions to `1.10`, `1.11`, `1.12` in [urfave/cli/pull/843](https://github.com/urfave/cli/pull/843) via [@lafriks](https://github.com/lafriks) | ||||
| * Changed the v1 releases section in the readme in [urfave/cli/pull/862](https://github.com/urfave/cli/pull/862) via [@russoj88](https://github.com/russoj88) | ||||
| * Cleaned up go modules in [urfave/cli/pull/874](https://github.com/urfave/cli/pull/874) via [@saschagrunert](https://github.com/saschagrunert) | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| * Added `UseShortOptionHandling` for combining short flags in [urfave/cli/pull/735](https://github.com/urfave/cli/pull/735) via [@rliebz](https://github.com/rliebz) | ||||
| * Added support for flags bash completion in [urfave/cli/pull/808](https://github.com/urfave/cli/pull/808) via [@yogeshlonkar](https://github.com/yogeshlonkar) | ||||
| * Added the `TakesFile` indicator to flag in [urfave/cli/pull/851](https://github.com/urfave/cli/pull/851) via [@saschagrunert](https://github.com/saschagrunert) | ||||
| * Added fish shell completion support in [urfave/cli/pull/848](https://github.com/urfave/cli/pull/848) via [@saschagrunert](https://github.com/saschagrunert) | ||||
|  | ||||
| ## [1.21.0] - 2019-08-02 | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| * Fix using "slice" flag types with `EnvVar` in [urfave/cli/pull/687](https://github.com/urfave/cli/pull/687) via [@joshuarubin](https://github.com/joshuarubin) | ||||
| * Fix regression of `SkipFlagParsing` behavior in [urfave/cli/pull/697](https://github.com/urfave/cli/pull/697) via [@jszwedko](https://github.com/jszwedko) | ||||
| * Fix handling `ShortOptions` and `SkipArgReorder` in [urfave/cli/pull/686](https://github.com/urfave/cli/pull/686) via [@baude](https://github.com/baude) | ||||
| * Fix args reordering when bool flags are present in [urfave/cli/pull/712](https://github.com/urfave/cli/pull/712) via [@windler](https://github.com/windler) | ||||
| * Fix parsing of short options in [urfave/cli/pull/758](https://github.com/urfave/cli/pull/758) via [@vrothberg](https://github.com/vrothberg) | ||||
| * Fix unaligned indents for the command help messages in [urfave/cli/pull/806](https://github.com/urfave/cli/pull/806) via [@mingrammer](https://github.com/mingrammer) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| * Cleaned up help output in [urfave/cli/pull/664](https://github.com/urfave/cli/pull/664) via [@maguro](https://github.com/maguro) | ||||
| * Remove redundant nil checks in [urfave/cli/pull/773](https://github.com/urfave/cli/pull/773) via [@teresy](https://github.com/teresy) | ||||
| * Case is now considered when sorting strings in [urfave/cli/pull/676](https://github.com/urfave/cli/pull/676) via [@rliebz](https://github.com/rliebz) | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| * Added _"required flags"_ support in [urfave/cli/pull/819](https://github.com/urfave/cli/pull/819) via [@lynncyrin](https://github.com/lynncyrin/) | ||||
| * Backport JSON `InputSource` to v1 in [urfave/cli/pull/598](https://github.com/urfave/cli/pull/598) via [@jszwedko](https://github.com/jszwedko) | ||||
| * Allow more customization of flag help strings in [urfave/cli/pull/661](https://github.com/urfave/cli/pull/661) via [@rliebz](https://github.com/rliebz) | ||||
| * Allow custom `ExitError` handler function in [urfave/cli/pull/628](https://github.com/urfave/cli/pull/628) via [@phinnaeus](https://github.com/phinnaeus) | ||||
| * Allow loading a variable from a file in [urfave/cli/pull/675](https://github.com/urfave/cli/pull/675) via [@jmccann](https://github.com/jmccann) | ||||
| * Allow combining short bool names in [urfave/cli/pull/684](https://github.com/urfave/cli/pull/684) via [@baude](https://github.com/baude) | ||||
| * Added test coverage to context in [urfave/cli/pull/788](https://github.com/urfave/cli/pull/788) via [@benzvan](https://github.com/benzvan) | ||||
| * Added go module support in [urfave/cli/pull/831](https://github.com/urfave/cli/pull/831) via [@saschagrunert](https://github.com/saschagrunert) | ||||
|  | ||||
| ## [1.20.0] - 2017-08-10 | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| * `HandleExitCoder` is now correctly iterates over all errors in | ||||
|   a `MultiError`. The exit code is the exit code of the last error or `1` if | ||||
|   there are no `ExitCoder`s in the `MultiError`. | ||||
| * Fixed YAML file loading on Windows (previously would fail validate the file path) | ||||
| * Subcommand `Usage`, `Description`, `ArgsUsage`, `OnUsageError` correctly | ||||
|   propogated | ||||
| * `ErrWriter` is now passed downwards through command structure to avoid the | ||||
|   need to redefine it | ||||
| * Pass `Command` context into `OnUsageError` rather than parent context so that | ||||
|   all fields are avaiable | ||||
| * Errors occuring in `Before` funcs are no longer double printed | ||||
| * Use `UsageText` in the help templates for commands and subcommands if | ||||
|   defined; otherwise build the usage as before (was previously ignoring this | ||||
|   field) | ||||
| * `IsSet` and `GlobalIsSet` now correctly return whether a flag is set if | ||||
|   a program calls `Set` or `GlobalSet` directly after flag parsing (would | ||||
|   previously only return `true` if the flag was set during parsing) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| * No longer exit the program on command/subcommand error if the error raised is | ||||
|   not an `OsExiter`. This exiting behavior was introduced in 1.19.0, but was | ||||
|   determined to be a regression in functionality. See [the | ||||
|   PR](https://github.com/urfave/cli/pull/595) for discussion. | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| * `CommandsByName` type was added to make it easy to sort `Command`s by name, | ||||
|   alphabetically | ||||
| * `altsrc` now handles loading of string and int arrays from TOML | ||||
| * Support for definition of custom help templates for `App` via | ||||
|   `CustomAppHelpTemplate` | ||||
| * Support for arbitrary key/value fields on `App` to be used with | ||||
|   `CustomAppHelpTemplate` via `ExtraInfo` | ||||
| * `HelpFlag`, `VersionFlag`, and `BashCompletionFlag` changed to explictly be | ||||
|   `cli.Flag`s allowing for the use of custom flags satisfying the `cli.Flag` | ||||
|   interface to be used. | ||||
|  | ||||
|  | ||||
| ## [1.19.1] - 2016-11-21 | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Fixes regression introduced in 1.19.0 where using an `ActionFunc` as | ||||
|   the `Action` for a command would cause it to error rather than calling the | ||||
|   function. Should not have a affected declarative cases using `func(c | ||||
|   *cli.Context) err)`. | ||||
| - Shell completion now handles the case where the user specifies | ||||
|   `--generate-bash-completion` immediately after a flag that takes an argument. | ||||
|   Previously it call the application with `--generate-bash-completion` as the | ||||
|   flag value. | ||||
|  | ||||
| ## [1.19.0] - 2016-11-19 | ||||
| ### Added | ||||
| - `FlagsByName` was added to make it easy to sort flags (e.g. `sort.Sort(cli.FlagsByName(app.Flags))`) | ||||
| - A `Description` field was added to `App` for a more detailed description of | ||||
|   the application (similar to the existing `Description` field on `Command`) | ||||
| - Flag type code generation via `go generate` | ||||
| - Write to stderr and exit 1 if action returns non-nil error | ||||
| - Added support for TOML to the `altsrc` loader | ||||
| - `SkipArgReorder` was added to allow users to skip the argument reordering. | ||||
|   This is useful if you want to consider all "flags" after an argument as | ||||
|   arguments rather than flags (the default behavior of the stdlib `flag` | ||||
|   library). This is backported functionality from the [removal of the flag | ||||
|   reordering](https://github.com/urfave/cli/pull/398) in the unreleased version | ||||
|   2 | ||||
| - For formatted errors (those implementing `ErrorFormatter`), the errors will | ||||
|   be formatted during output. Compatible with `pkg/errors`. | ||||
|  | ||||
| ### Changed | ||||
| - Raise minimum tested/supported Go version to 1.2+ | ||||
|  | ||||
| ### Fixed | ||||
| - Consider empty environment variables as set (previously environment variables | ||||
|   with the equivalent of `""` would be skipped rather than their value used). | ||||
| - Return an error if the value in a given environment variable cannot be parsed | ||||
|   as the flag type. Previously these errors were silently swallowed. | ||||
| - Print full error when an invalid flag is specified (which includes the invalid flag) | ||||
| - `App.Writer` defaults to `stdout` when `nil` | ||||
| - If no action is specified on a command or app, the help is now printed instead of `panic`ing | ||||
| - `App.Metadata` is initialized automatically now (previously was `nil` unless initialized) | ||||
| - Correctly show help message if `-h` is provided to a subcommand | ||||
| - `context.(Global)IsSet` now respects environment variables. Previously it | ||||
|   would return `false` if a flag was specified in the environment rather than | ||||
|   as an argument | ||||
| - Removed deprecation warnings to STDERR to avoid them leaking to the end-user | ||||
| - `altsrc`s import paths were updated to use `gopkg.in/urfave/cli.v1`. This | ||||
|   fixes issues that occurred when `gopkg.in/urfave/cli.v1` was imported as well | ||||
|   as `altsrc` where Go would complain that the types didn't match | ||||
|  | ||||
| ## [1.18.1] - 2016-08-28 | ||||
| ### Fixed | ||||
| - Removed deprecation warnings to STDERR to avoid them leaking to the end-user (backported) | ||||
|  | ||||
| ## [1.18.0] - 2016-06-27 | ||||
| ### Added | ||||
| - `./runtests` test runner with coverage tracking by default | ||||
| - testing on OS X | ||||
| - testing on Windows | ||||
| - `UintFlag`, `Uint64Flag`, and `Int64Flag` types and supporting code | ||||
|  | ||||
| ### Changed | ||||
| - Use spaces for alignment in help/usage output instead of tabs, making the | ||||
|   output alignment consistent regardless of tab width | ||||
|  | ||||
| ### Fixed | ||||
| - Printing of command aliases in help text | ||||
| - Printing of visible flags for both struct and struct pointer flags | ||||
| - Display the `help` subcommand when using `CommandCategories` | ||||
| - No longer swallows `panic`s that occur within the `Action`s themselves when | ||||
|   detecting the signature of the `Action` field | ||||
|  | ||||
| ## [1.17.1] - 2016-08-28 | ||||
| ### Fixed | ||||
| - Removed deprecation warnings to STDERR to avoid them leaking to the end-user | ||||
|  | ||||
| ## [1.17.0] - 2016-05-09 | ||||
| ### Added | ||||
| - Pluggable flag-level help text rendering via `cli.DefaultFlagStringFunc` | ||||
| - `context.GlobalBoolT` was added as an analogue to `context.GlobalBool` | ||||
| - Support for hiding commands by setting `Hidden: true` -- this will hide the | ||||
|   commands in help output | ||||
|  | ||||
| ### Changed | ||||
| - `Float64Flag`, `IntFlag`, and `DurationFlag` default values are no longer | ||||
|   quoted in help text output. | ||||
| - All flag types now include `(default: {value})` strings following usage when a | ||||
|   default value can be (reasonably) detected. | ||||
| - `IntSliceFlag` and `StringSliceFlag` usage strings are now more consistent | ||||
|   with non-slice flag types | ||||
| - Apps now exit with a code of 3 if an unknown subcommand is specified | ||||
|   (previously they printed "No help topic for...", but still exited 0. This | ||||
|   makes it easier to script around apps built using `cli` since they can trust | ||||
|   that a 0 exit code indicated a successful execution. | ||||
| - cleanups based on [Go Report Card | ||||
|   feedback](https://goreportcard.com/report/github.com/urfave/cli) | ||||
|  | ||||
| ## [1.16.1] - 2016-08-28 | ||||
| ### Fixed | ||||
| - Removed deprecation warnings to STDERR to avoid them leaking to the end-user | ||||
|  | ||||
| ## [1.16.0] - 2016-05-02 | ||||
| ### Added | ||||
| - `Hidden` field on all flag struct types to omit from generated help text | ||||
|  | ||||
| ### Changed | ||||
| - `BashCompletionFlag` (`--enable-bash-completion`) is now omitted from | ||||
| generated help text via the `Hidden` field | ||||
|  | ||||
| ### Fixed | ||||
| - handling of error values in `HandleAction` and `HandleExitCoder` | ||||
|  | ||||
| ## [1.15.0] - 2016-04-30 | ||||
| ### Added | ||||
| - This file! | ||||
| - Support for placeholders in flag usage strings | ||||
| - `App.Metadata` map for arbitrary data/state management | ||||
| - `Set` and `GlobalSet` methods on `*cli.Context` for altering values after | ||||
| parsing. | ||||
| - Support for nested lookup of dot-delimited keys in structures loaded from | ||||
| YAML. | ||||
|  | ||||
| ### Changed | ||||
| - The `App.Action` and `Command.Action` now prefer a return signature of | ||||
| `func(*cli.Context) error`, as defined by `cli.ActionFunc`.  If a non-nil | ||||
| `error` is returned, there may be two outcomes: | ||||
|     - If the error fulfills `cli.ExitCoder`, then `os.Exit` will be called | ||||
|     automatically | ||||
|     - Else the error is bubbled up and returned from `App.Run` | ||||
| - Specifying an `Action` with the legacy return signature of | ||||
| `func(*cli.Context)` will produce a deprecation message to stderr | ||||
| - Specifying an `Action` that is not a `func` type will produce a non-zero exit | ||||
| from `App.Run` | ||||
| - Specifying an `Action` func that has an invalid (input) signature will | ||||
| produce a non-zero exit from `App.Run` | ||||
|  | ||||
| ### Deprecated | ||||
| - <a name="deprecated-cli-app-runandexitonerror"></a> | ||||
| `cli.App.RunAndExitOnError`, which should now be done by returning an error | ||||
| that fulfills `cli.ExitCoder` to `cli.App.Run`. | ||||
| - <a name="deprecated-cli-app-action-signature"></a> the legacy signature for | ||||
| `cli.App.Action` of `func(*cli.Context)`, which should now have a return | ||||
| signature of `func(*cli.Context) error`, as defined by `cli.ActionFunc`. | ||||
|  | ||||
| ### Fixed | ||||
| - Added missing `*cli.Context.GlobalFloat64` method | ||||
|  | ||||
| ## [1.14.0] - 2016-04-03 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Codebeat badge | ||||
| - Support for categorization via `CategorizedHelp` and `Categories` on app. | ||||
|  | ||||
| ### Changed | ||||
| - Use `filepath.Base` instead of `path.Base` in `Name` and `HelpName`. | ||||
|  | ||||
| ### Fixed | ||||
| - Ensure version is not shown in help text when `HideVersion` set. | ||||
|  | ||||
| ## [1.13.0] - 2016-03-06 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - YAML file input support. | ||||
| - `NArg` method on context. | ||||
|  | ||||
| ## [1.12.0] - 2016-02-17 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Custom usage error handling. | ||||
| - Custom text support in `USAGE` section of help output. | ||||
| - Improved help messages for empty strings. | ||||
| - AppVeyor CI configuration. | ||||
|  | ||||
| ### Changed | ||||
| - Removed `panic` from default help printer func. | ||||
| - De-duping and optimizations. | ||||
|  | ||||
| ### Fixed | ||||
| - Correctly handle `Before`/`After` at command level when no subcommands. | ||||
| - Case of literal `-` argument causing flag reordering. | ||||
| - Environment variable hints on Windows. | ||||
| - Docs updates. | ||||
|  | ||||
| ## [1.11.1] - 2015-12-21 (backfilled 2016-04-25) | ||||
| ### Changed | ||||
| - Use `path.Base` in `Name` and `HelpName` | ||||
| - Export `GetName` on flag types. | ||||
|  | ||||
| ### Fixed | ||||
| - Flag parsing when skipping is enabled. | ||||
| - Test output cleanup. | ||||
| - Move completion check to account for empty input case. | ||||
|  | ||||
| ## [1.11.0] - 2015-11-15 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Destination scan support for flags. | ||||
| - Testing against `tip` in Travis CI config. | ||||
|  | ||||
| ### Changed | ||||
| - Go version in Travis CI config. | ||||
|  | ||||
| ### Fixed | ||||
| - Removed redundant tests. | ||||
| - Use correct example naming in tests. | ||||
|  | ||||
| ## [1.10.2] - 2015-10-29 (backfilled 2016-04-25) | ||||
| ### Fixed | ||||
| - Remove unused var in bash completion. | ||||
|  | ||||
| ## [1.10.1] - 2015-10-21 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Coverage and reference logos in README. | ||||
|  | ||||
| ### Fixed | ||||
| - Use specified values in help and version parsing. | ||||
| - Only display app version and help message once. | ||||
|  | ||||
| ## [1.10.0] - 2015-10-06 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - More tests for existing functionality. | ||||
| - `ArgsUsage` at app and command level for help text flexibility. | ||||
|  | ||||
| ### Fixed | ||||
| - Honor `HideHelp` and `HideVersion` in `App.Run`. | ||||
| - Remove juvenile word from README. | ||||
|  | ||||
| ## [1.9.0] - 2015-09-08 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - `FullName` on command with accompanying help output update. | ||||
| - Set default `$PROG` in bash completion. | ||||
|  | ||||
| ### Changed | ||||
| - Docs formatting. | ||||
|  | ||||
| ### Fixed | ||||
| - Removed self-referential imports in tests. | ||||
|  | ||||
| ## [1.8.0] - 2015-06-30 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Support for `Copyright` at app level. | ||||
| - `Parent` func at context level to walk up context lineage. | ||||
|  | ||||
| ### Fixed | ||||
| - Global flag processing at top level. | ||||
|  | ||||
| ## [1.7.1] - 2015-06-11 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Aggregate errors from `Before`/`After` funcs. | ||||
| - Doc comments on flag structs. | ||||
| - Include non-global flags when checking version and help. | ||||
| - Travis CI config updates. | ||||
|  | ||||
| ### Fixed | ||||
| - Ensure slice type flags have non-nil values. | ||||
| - Collect global flags from the full command hierarchy. | ||||
| - Docs prose. | ||||
|  | ||||
| ## [1.7.0] - 2015-05-03 (backfilled 2016-04-25) | ||||
| ### Changed | ||||
| - `HelpPrinter` signature includes output writer. | ||||
|  | ||||
| ### Fixed | ||||
| - Specify go 1.1+ in docs. | ||||
| - Set `Writer` when running command as app. | ||||
|  | ||||
| ## [1.6.0] - 2015-03-23 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Multiple author support. | ||||
| - `NumFlags` at context level. | ||||
| - `Aliases` at command level. | ||||
|  | ||||
| ### Deprecated | ||||
| - `ShortName` at command level. | ||||
|  | ||||
| ### Fixed | ||||
| - Subcommand help output. | ||||
| - Backward compatible support for deprecated `Author` and `Email` fields. | ||||
| - Docs regarding `Names`/`Aliases`. | ||||
|  | ||||
| ## [1.5.0] - 2015-02-20 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - `After` hook func support at app and command level. | ||||
|  | ||||
| ### Fixed | ||||
| - Use parsed context when running command as subcommand. | ||||
| - Docs prose. | ||||
|  | ||||
| ## [1.4.1] - 2015-01-09 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Support for hiding `-h / --help` flags, but not `help` subcommand. | ||||
| - Stop flag parsing after `--`. | ||||
|  | ||||
| ### Fixed | ||||
| - Help text for generic flags to specify single value. | ||||
| - Use double quotes in output for defaults. | ||||
| - Use `ParseInt` instead of `ParseUint` for int environment var values. | ||||
| - Use `0` as base when parsing int environment var values. | ||||
|  | ||||
| ## [1.4.0] - 2014-12-12 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Support for environment variable lookup "cascade". | ||||
| - Support for `Stdout` on app for output redirection. | ||||
|  | ||||
| ### Fixed | ||||
| - Print command help instead of app help in `ShowCommandHelp`. | ||||
|  | ||||
| ## [1.3.1] - 2014-11-13 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - Docs and example code updates. | ||||
|  | ||||
| ### Changed | ||||
| - Default `-v / --version` flag made optional. | ||||
|  | ||||
| ## [1.3.0] - 2014-08-10 (backfilled 2016-04-25) | ||||
| ### Added | ||||
| - `FlagNames` at context level. | ||||
| - Exposed `VersionPrinter` var for more control over version output. | ||||
| - Zsh completion hook. | ||||
| - `AUTHOR` section in default app help template. | ||||
| - Contribution guidelines. | ||||
| - `DurationFlag` type. | ||||
|  | ||||
| ## [1.2.0] - 2014-08-02 | ||||
| ### Added | ||||
| - Support for environment variable defaults on flags plus tests. | ||||
|  | ||||
| ## [1.1.0] - 2014-07-15 | ||||
| ### Added | ||||
| - Bash completion. | ||||
| - Optional hiding of built-in help command. | ||||
| - Optional skipping of flag parsing at command level. | ||||
| - `Author`, `Email`, and `Compiled` metadata on app. | ||||
| - `Before` hook func support at app and command level. | ||||
| - `CommandNotFound` func support at app level. | ||||
| - Command reference available on context. | ||||
| - `GenericFlag` type. | ||||
| - `Float64Flag` type. | ||||
| - `BoolTFlag` type. | ||||
| - `IsSet` flag helper on context. | ||||
| - More flag lookup funcs at context level. | ||||
| - More tests & docs. | ||||
|  | ||||
| ### Changed | ||||
| - Help template updates to account for presence/absence of flags. | ||||
| - Separated subcommand help template. | ||||
| - Exposed `HelpPrinter` var for more control over help output. | ||||
|  | ||||
| ## [1.0.0] - 2013-11-01 | ||||
| ### Added | ||||
| - `help` flag in default app flag set and each command flag set. | ||||
| - Custom handling of argument parsing errors. | ||||
| - Command lookup by name at app level. | ||||
| - `StringSliceFlag` type and supporting `StringSlice` type. | ||||
| - `IntSliceFlag` type and supporting `IntSlice` type. | ||||
| - Slice type flag lookups by name at context level. | ||||
| - Export of app and command help functions. | ||||
| - More tests & docs. | ||||
|  | ||||
| ## 0.1.0 - 2013-07-22 | ||||
| ### Added | ||||
| - Initial implementation. | ||||
|  | ||||
| [Unreleased]: https://github.com/urfave/cli/compare/v1.22.1...HEAD | ||||
| [1.22.1]: https://github.com/urfave/cli/compare/v1.22.0...v1.22.1 | ||||
| [1.22.0]: https://github.com/urfave/cli/compare/v1.21.0...v1.22.0 | ||||
| [1.21.0]: https://github.com/urfave/cli/compare/v1.20.0...v1.21.0 | ||||
| [1.20.0]: https://github.com/urfave/cli/compare/v1.19.1...v1.20.0 | ||||
| [1.19.1]: https://github.com/urfave/cli/compare/v1.19.0...v1.19.1 | ||||
| [1.19.0]: https://github.com/urfave/cli/compare/v1.18.0...v1.19.0 | ||||
| [1.18.0]: https://github.com/urfave/cli/compare/v1.17.0...v1.18.0 | ||||
| [1.17.0]: https://github.com/urfave/cli/compare/v1.16.0...v1.17.0 | ||||
| [1.16.0]: https://github.com/urfave/cli/compare/v1.15.0...v1.16.0 | ||||
| [1.15.0]: https://github.com/urfave/cli/compare/v1.14.0...v1.15.0 | ||||
| [1.14.0]: https://github.com/urfave/cli/compare/v1.13.0...v1.14.0 | ||||
| [1.13.0]: https://github.com/urfave/cli/compare/v1.12.0...v1.13.0 | ||||
| [1.12.0]: https://github.com/urfave/cli/compare/v1.11.1...v1.12.0 | ||||
| [1.11.1]: https://github.com/urfave/cli/compare/v1.11.0...v1.11.1 | ||||
| [1.11.0]: https://github.com/urfave/cli/compare/v1.10.2...v1.11.0 | ||||
| [1.10.2]: https://github.com/urfave/cli/compare/v1.10.1...v1.10.2 | ||||
| [1.10.1]: https://github.com/urfave/cli/compare/v1.10.0...v1.10.1 | ||||
| [1.10.0]: https://github.com/urfave/cli/compare/v1.9.0...v1.10.0 | ||||
| [1.9.0]: https://github.com/urfave/cli/compare/v1.8.0...v1.9.0 | ||||
| [1.8.0]: https://github.com/urfave/cli/compare/v1.7.1...v1.8.0 | ||||
| [1.7.1]: https://github.com/urfave/cli/compare/v1.7.0...v1.7.1 | ||||
| [1.7.0]: https://github.com/urfave/cli/compare/v1.6.0...v1.7.0 | ||||
| [1.6.0]: https://github.com/urfave/cli/compare/v1.5.0...v1.6.0 | ||||
| [1.5.0]: https://github.com/urfave/cli/compare/v1.4.1...v1.5.0 | ||||
| [1.4.1]: https://github.com/urfave/cli/compare/v1.4.0...v1.4.1 | ||||
| [1.4.0]: https://github.com/urfave/cli/compare/v1.3.1...v1.4.0 | ||||
| [1.3.1]: https://github.com/urfave/cli/compare/v1.3.0...v1.3.1 | ||||
| [1.3.0]: https://github.com/urfave/cli/compare/v1.2.0...v1.3.0 | ||||
| [1.2.0]: https://github.com/urfave/cli/compare/v1.1.0...v1.2.0 | ||||
| [1.1.0]: https://github.com/urfave/cli/compare/v1.0.0...v1.1.0 | ||||
| [1.0.0]: https://github.com/urfave/cli/compare/v0.1.0...v1.0.0 | ||||
							
								
								
									
										18
									
								
								vendor/github.com/urfave/cli/CONTRIBUTING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/urfave/cli/CONTRIBUTING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,18 +0,0 @@ | ||||
| ## Contributing | ||||
|  | ||||
| Use @urfave/cli to ping the maintainers. | ||||
|  | ||||
| Feel free to put up a pull request to fix a bug or maybe add a feature. We will | ||||
| give it a code review and make sure that it does not break backwards | ||||
| compatibility. If collaborators agree that it is in line with | ||||
| the vision of the project, we will work with you to get the code into | ||||
| a mergeable state and merge it into the master branch. | ||||
|  | ||||
| If you have contributed something significant to the project, we will most | ||||
| likely add you as a collaborator. As a collaborator you are given the ability | ||||
| to merge others pull requests. It is very important that new code does not | ||||
| break existing code, so be careful about what code you do choose to merge. | ||||
|  | ||||
| If you feel like you have contributed to the project but have not yet been added | ||||
| as a collaborator, we probably forgot to add you :sweat_smile:. Please open an | ||||
| issue! | ||||
							
								
								
									
										1525
									
								
								vendor/github.com/urfave/cli/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1525
									
								
								vendor/github.com/urfave/cli/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										15
									
								
								vendor/github.com/urfave/cli/app.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/urfave/cli/app.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -121,7 +121,6 @@ func NewApp() *App { | ||||
| 		HelpName:     filepath.Base(os.Args[0]), | ||||
| 		Usage:        "A new cli application", | ||||
| 		UsageText:    "", | ||||
| 		Version:      "0.0.0", | ||||
| 		BashComplete: DefaultAppComplete, | ||||
| 		Action:       helpCommand.Action, | ||||
| 		Compiled:     compileTime(), | ||||
| @@ -159,6 +158,10 @@ func (a *App) Setup() { | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if a.Version == "" { | ||||
| 		a.HideVersion = true | ||||
| 	} | ||||
|  | ||||
| 	if !a.HideVersion { | ||||
| 		a.appendFlag(VersionFlag) | ||||
| 	} | ||||
| @@ -199,12 +202,12 @@ func (a *App) Run(arguments []string) (err error) { | ||||
| 	// always appends the completion flag at the end of the command | ||||
| 	shellComplete, arguments := checkShellCompleteFlag(a, arguments) | ||||
|  | ||||
| 	_, err = a.newFlagSet() | ||||
| 	set, err := a.newFlagSet() | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	set, err := parseIter(a, arguments[1:]) | ||||
| 	err = parseIter(set, a, arguments[1:], shellComplete) | ||||
| 	nerr := normalizeFlags(a.Flags, set) | ||||
| 	context := NewContext(a, set, nil) | ||||
| 	if nerr != nil { | ||||
| @@ -260,8 +263,6 @@ func (a *App) Run(arguments []string) (err error) { | ||||
| 	if a.Before != nil { | ||||
| 		beforeErr := a.Before(context) | ||||
| 		if beforeErr != nil { | ||||
| 			_, _ = fmt.Fprintf(a.Writer, "%v\n\n", beforeErr) | ||||
| 			_ = ShowAppHelp(context) | ||||
| 			a.handleExitCoder(context, beforeErr) | ||||
| 			err = beforeErr | ||||
| 			return err | ||||
| @@ -322,12 +323,12 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error) { | ||||
| 	} | ||||
| 	a.Commands = newCmds | ||||
|  | ||||
| 	_, err = a.newFlagSet() | ||||
| 	set, err := a.newFlagSet() | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	set, err := parseIter(a, ctx.Args().Tail()) | ||||
| 	err = parseIter(set, a, ctx.Args().Tail(), ctx.shellComplete) | ||||
| 	nerr := normalizeFlags(a.Flags, set) | ||||
| 	context := NewContext(a, set, ctx) | ||||
|  | ||||
|   | ||||
							
								
								
									
										11
									
								
								vendor/github.com/urfave/cli/appveyor.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/urfave/cli/appveyor.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,18 +6,23 @@ image: Visual Studio 2017 | ||||
|  | ||||
| clone_folder: c:\gopath\src\github.com\urfave\cli | ||||
|  | ||||
| cache: | ||||
|   - node_modules | ||||
|  | ||||
| environment: | ||||
|   GOPATH: C:\gopath | ||||
|   GOVERSION: 1.11.x | ||||
|   GO111MODULE: on | ||||
|   GOPROXY: https://proxy.golang.org | ||||
|  | ||||
| install: | ||||
|   - set PATH=%GOPATH%\bin;C:\go\bin;%PATH% | ||||
|   - go version | ||||
|   - go env | ||||
|   - go get github.com/urfave/gfmrun/... | ||||
|   - go get -v -t ./... | ||||
|   - go get github.com/urfave/gfmrun/cmd/gfmrun | ||||
|   - go mod vendor | ||||
|  | ||||
| build_script: | ||||
|   - go run build.go vet | ||||
|   - go run build.go test | ||||
|   - go run build.go gfmrun | ||||
|   - go run build.go gfmrun docs/v1/manual.md | ||||
|   | ||||
							
								
								
									
										99
									
								
								vendor/github.com/urfave/cli/command.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										99
									
								
								vendor/github.com/urfave/cli/command.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -114,7 +114,7 @@ func (c Command) Run(ctx *Context) (err error) { | ||||
| 		c.UseShortOptionHandling = true | ||||
| 	} | ||||
|  | ||||
| 	set, err := c.parseFlags(ctx.Args().Tail()) | ||||
| 	set, err := c.parseFlags(ctx.Args().Tail(), ctx.shellComplete) | ||||
|  | ||||
| 	context := NewContext(ctx.App, set, ctx) | ||||
| 	context.Command = c | ||||
| @@ -161,7 +161,6 @@ func (c Command) Run(ctx *Context) (err error) { | ||||
| 	if c.Before != nil { | ||||
| 		err = c.Before(context) | ||||
| 		if err != nil { | ||||
| 			_ = ShowCommandHelp(context, c.Name) | ||||
| 			context.App.handleExitCoder(context, err) | ||||
| 			return err | ||||
| 		} | ||||
| @@ -179,7 +178,7 @@ func (c Command) Run(ctx *Context) (err error) { | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| func (c *Command) parseFlags(args Args) (*flag.FlagSet, error) { | ||||
| func (c *Command) parseFlags(args Args, shellComplete bool) (*flag.FlagSet, error) { | ||||
| 	if c.SkipFlagParsing { | ||||
| 		set, err := c.newFlagSet() | ||||
| 		if err != nil { | ||||
| @@ -190,10 +189,15 @@ func (c *Command) parseFlags(args Args) (*flag.FlagSet, error) { | ||||
| 	} | ||||
|  | ||||
| 	if !c.SkipArgReorder { | ||||
| 		args = reorderArgs(args) | ||||
| 		args = reorderArgs(c.Flags, args) | ||||
| 	} | ||||
|  | ||||
| 	set, err := parseIter(c, args) | ||||
| 	set, err := c.newFlagSet() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	err = parseIter(set, c, args, shellComplete) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| @@ -214,34 +218,79 @@ func (c *Command) useShortOptionHandling() bool { | ||||
| 	return c.UseShortOptionHandling | ||||
| } | ||||
|  | ||||
| // reorderArgs moves all flags before arguments as this is what flag expects | ||||
| func reorderArgs(args []string) []string { | ||||
| 	var nonflags, flags []string | ||||
| // reorderArgs moves all flags (via reorderedArgs) before the rest of | ||||
| // the arguments (remainingArgs) as this is what flag expects. | ||||
| func reorderArgs(commandFlags []Flag, args []string) []string { | ||||
| 	var remainingArgs, reorderedArgs []string | ||||
|  | ||||
| 	readFlagValue := false | ||||
| 	nextIndexMayContainValue := false | ||||
| 	for i, arg := range args { | ||||
| 		if arg == "--" { | ||||
| 			nonflags = append(nonflags, args[i:]...) | ||||
|  | ||||
| 		// if we're expecting an option-value, check if this arg is a value, in | ||||
| 		// which case it should be re-ordered next to its associated flag | ||||
| 		if nextIndexMayContainValue && !argIsFlag(commandFlags, arg) { | ||||
| 			nextIndexMayContainValue = false | ||||
| 			reorderedArgs = append(reorderedArgs, arg) | ||||
| 		} else if arg == "--" { | ||||
| 			// don't reorder any args after the -- delimiter As described in the POSIX spec: | ||||
| 			// https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02 | ||||
| 			// > Guideline 10: | ||||
| 			// >   The first -- argument that is not an option-argument should be accepted | ||||
| 			// >   as a delimiter indicating the end of options. Any following arguments | ||||
| 			// >   should be treated as operands, even if they begin with the '-' character. | ||||
|  | ||||
| 			// make sure the "--" delimiter itself is at the start | ||||
| 			remainingArgs = append([]string{"--"}, remainingArgs...) | ||||
| 			remainingArgs = append(remainingArgs, args[i+1:]...) | ||||
| 			break | ||||
| 		} | ||||
| 			// checks if this is an arg that should be re-ordered | ||||
| 		} else if argIsFlag(commandFlags, arg) { | ||||
| 			// we have determined that this is a flag that we should re-order | ||||
| 			reorderedArgs = append(reorderedArgs, arg) | ||||
| 			// if this arg does not contain a "=", then the next index may contain the value for this flag | ||||
| 			nextIndexMayContainValue = !strings.Contains(arg, "=") | ||||
|  | ||||
| 		if readFlagValue && !strings.HasPrefix(arg, "-") && !strings.HasPrefix(arg, "--") { | ||||
| 			readFlagValue = false | ||||
| 			flags = append(flags, arg) | ||||
| 			continue | ||||
| 		} | ||||
| 		readFlagValue = false | ||||
|  | ||||
| 		if arg != "-" && strings.HasPrefix(arg, "-") { | ||||
| 			flags = append(flags, arg) | ||||
|  | ||||
| 			readFlagValue = !strings.Contains(arg, "=") | ||||
| 			// simply append any remaining args | ||||
| 		} else { | ||||
| 			nonflags = append(nonflags, arg) | ||||
| 			remainingArgs = append(remainingArgs, arg) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return append(flags, nonflags...) | ||||
| 	return append(reorderedArgs, remainingArgs...) | ||||
| } | ||||
|  | ||||
| // argIsFlag checks if an arg is one of our command flags | ||||
| func argIsFlag(commandFlags []Flag, arg string) bool { | ||||
| 	if arg == "-" || arg == "--"{ | ||||
| 		// `-` is never a flag | ||||
| 		// `--` is an option-value when following a flag, and a delimiter indicating the end of options in other cases. | ||||
| 		return false | ||||
| 	} | ||||
| 	// flags always start with a - | ||||
| 	if !strings.HasPrefix(arg, "-") { | ||||
| 		return false | ||||
| 	} | ||||
| 	// this line turns `--flag` into `flag` | ||||
| 	if strings.HasPrefix(arg, "--") { | ||||
| 		arg = strings.Replace(arg, "-", "", 2) | ||||
| 	} | ||||
| 	// this line turns `-flag` into `flag` | ||||
| 	if strings.HasPrefix(arg, "-") { | ||||
| 		arg = strings.Replace(arg, "-", "", 1) | ||||
| 	} | ||||
| 	// this line turns `flag=value` into `flag` | ||||
| 	arg = strings.Split(arg, "=")[0] | ||||
| 	// look through all the flags, to see if the `arg` is one of our flags | ||||
| 	for _, flag := range commandFlags { | ||||
| 		for _, key := range strings.Split(flag.GetName(), ",") { | ||||
| 			key := strings.TrimSpace(key) | ||||
| 			if key == arg { | ||||
| 				return true | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	// return false if this arg was not one of our flags | ||||
| 	return false | ||||
| } | ||||
|  | ||||
| // Names returns the names including short names and aliases. | ||||
|   | ||||
							
								
								
									
										11
									
								
								vendor/github.com/urfave/cli/context.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/urfave/cli/context.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -87,6 +87,14 @@ func (c *Context) IsSet(name string) bool { | ||||
| 		for _, f := range flags { | ||||
| 			eachName(f.GetName(), func(name string) { | ||||
| 				if isSet, ok := c.setFlags[name]; isSet || !ok { | ||||
| 					// Check if a flag is set | ||||
| 					if isSet { | ||||
| 						// If the flag is set, also set its other aliases | ||||
| 						eachName(f.GetName(), func(name string) { | ||||
| 							c.setFlags[name] = true | ||||
| 						}) | ||||
| 					} | ||||
|  | ||||
| 					return | ||||
| 				} | ||||
|  | ||||
| @@ -316,11 +324,12 @@ func checkRequiredFlags(flags []Flag, context *Context) requiredFlagsErr { | ||||
| 			var flagPresent bool | ||||
| 			var flagName string | ||||
| 			for _, key := range strings.Split(f.GetName(), ",") { | ||||
| 				key = strings.TrimSpace(key) | ||||
| 				if len(key) > 1 { | ||||
| 					flagName = key | ||||
| 				} | ||||
|  | ||||
| 				if context.IsSet(strings.TrimSpace(key)) { | ||||
| 				if context.IsSet(key) { | ||||
| 					flagPresent = true | ||||
| 				} | ||||
| 			} | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/urfave/cli/docs.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/urfave/cli/docs.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,6 @@ | ||||
| //go:build !urfave_cli_no_docs | ||||
| // +build !urfave_cli_no_docs | ||||
|  | ||||
| package cli | ||||
|  | ||||
| import ( | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/urfave/cli/flag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/urfave/cli/flag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -86,7 +86,7 @@ type RequiredFlag interface { | ||||
| type DocGenerationFlag interface { | ||||
| 	Flag | ||||
|  | ||||
| 	// TakesValue returns true of the flag takes a value, otherwise false | ||||
| 	// TakesValue returns true if the flag takes a value, otherwise false | ||||
| 	TakesValue() bool | ||||
|  | ||||
| 	// GetUsage returns the usage string for the flag | ||||
| @@ -338,9 +338,11 @@ func flagFromFileEnv(filePath, envName string) (val string, ok bool) { | ||||
| 		} | ||||
| 	} | ||||
| 	for _, fileVar := range strings.Split(filePath, ",") { | ||||
| 		if fileVar != "" { | ||||
| 			if data, err := ioutil.ReadFile(fileVar); err == nil { | ||||
| 				return string(data), true | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return "", false | ||||
| } | ||||
|   | ||||
							
								
								
									
										64
									
								
								vendor/github.com/urfave/cli/flag_int64_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										64
									
								
								vendor/github.com/urfave/cli/flag_int64_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -22,7 +22,12 @@ func (f *Int64Slice) Set(value string) error { | ||||
|  | ||||
| // String returns a readable representation of this value (for usage defaults) | ||||
| func (f *Int64Slice) String() string { | ||||
| 	return fmt.Sprintf("%#v", *f) | ||||
| 	slice := make([]string, len(*f)) | ||||
| 	for i, v := range *f { | ||||
| 		slice[i] = strconv.FormatInt(v, 10) | ||||
| 	} | ||||
|  | ||||
| 	return strings.Join(slice, ",") | ||||
| } | ||||
|  | ||||
| // Value returns the slice of ints set by this flag | ||||
| @@ -110,6 +115,7 @@ func (f Int64SliceFlag) ApplyWithError(set *flag.FlagSet) error { | ||||
| 		} | ||||
| 		set.Var(f.Value, name, f.Usage) | ||||
| 	}) | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @@ -131,11 +137,63 @@ func (c *Context) GlobalInt64Slice(name string) []int64 { | ||||
| func lookupInt64Slice(name string, set *flag.FlagSet) []int64 { | ||||
| 	f := set.Lookup(name) | ||||
| 	if f != nil { | ||||
| 		parsed, err := (f.Value.(*Int64Slice)).Value(), error(nil) | ||||
| 		if err != nil { | ||||
| 		value, ok := f.Value.(*Int64Slice) | ||||
| 		if !ok { | ||||
| 			return nil | ||||
| 		} | ||||
|  | ||||
| 		// extract the slice from asserted value | ||||
| 		parsed := value.Value() | ||||
|  | ||||
| 		// extract default value from the flag | ||||
| 		var defaultVal []int64 | ||||
| 		for _, v := range strings.Split(f.DefValue, ",") { | ||||
| 			if v != "" { | ||||
| 				int64Value, err := strconv.ParseInt(v, 10, 64) | ||||
| 				if err != nil { | ||||
| 					panic(err) | ||||
| 				} | ||||
| 				defaultVal = append(defaultVal, int64Value) | ||||
| 			} | ||||
| 		} | ||||
| 		// if the current value is not equal to the default value | ||||
| 		// remove the default values from the flag | ||||
| 		if !isInt64SliceEqual(parsed, defaultVal) { | ||||
| 			for _, v := range defaultVal { | ||||
| 				parsed = removeFromInt64Slice(parsed, v) | ||||
| 			} | ||||
| 		} | ||||
| 		return parsed | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func removeFromInt64Slice(slice []int64, val int64) []int64 { | ||||
| 	for i, v := range slice { | ||||
| 		if v == val { | ||||
| 			ret := append([]int64{}, slice[:i]...) | ||||
| 			ret = append(ret, slice[i+1:]...) | ||||
| 			return ret | ||||
| 		} | ||||
| 	} | ||||
| 	return slice | ||||
| } | ||||
|  | ||||
| func isInt64SliceEqual(newValue, defaultValue []int64) bool { | ||||
| 	// If one is nil, the other must also be nil. | ||||
| 	if (newValue == nil) != (defaultValue == nil) { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	if len(newValue) != len(defaultValue) { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	for i, v := range newValue { | ||||
| 		if v != defaultValue[i] { | ||||
| 			return false | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return true | ||||
| } | ||||
|   | ||||
							
								
								
									
										64
									
								
								vendor/github.com/urfave/cli/flag_int_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										64
									
								
								vendor/github.com/urfave/cli/flag_int_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -22,7 +22,12 @@ func (f *IntSlice) Set(value string) error { | ||||
|  | ||||
| // String returns a readable representation of this value (for usage defaults) | ||||
| func (f *IntSlice) String() string { | ||||
| 	return fmt.Sprintf("%#v", *f) | ||||
| 	slice := make([]string, len(*f)) | ||||
| 	for i, v := range *f { | ||||
| 		slice[i] = strconv.Itoa(v) | ||||
| 	} | ||||
|  | ||||
| 	return strings.Join(slice, ",") | ||||
| } | ||||
|  | ||||
| // Value returns the slice of ints set by this flag | ||||
| @@ -132,11 +137,62 @@ func (c *Context) GlobalIntSlice(name string) []int { | ||||
| func lookupIntSlice(name string, set *flag.FlagSet) []int { | ||||
| 	f := set.Lookup(name) | ||||
| 	if f != nil { | ||||
| 		parsed, err := (f.Value.(*IntSlice)).Value(), error(nil) | ||||
| 		if err != nil { | ||||
| 		value, ok := f.Value.(*IntSlice) | ||||
| 		if !ok { | ||||
| 			return nil | ||||
| 		} | ||||
| 		return parsed | ||||
| 		// extract the slice from asserted value | ||||
| 		slice := value.Value() | ||||
|  | ||||
| 		// extract default value from the flag | ||||
| 		var defaultVal []int | ||||
| 		for _, v := range strings.Split(f.DefValue, ",") { | ||||
| 			if v != "" { | ||||
| 				intValue, err := strconv.Atoi(v) | ||||
| 				if err != nil { | ||||
| 					panic(err) | ||||
| 				} | ||||
| 				defaultVal = append(defaultVal, intValue) | ||||
| 			} | ||||
| 		} | ||||
| 		// if the current value is not equal to the default value | ||||
| 		// remove the default values from the flag | ||||
| 		if !isIntSliceEqual(slice, defaultVal) { | ||||
| 			for _, v := range defaultVal { | ||||
| 				slice = removeFromIntSlice(slice, v) | ||||
| 			} | ||||
| 		} | ||||
| 		return slice | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func removeFromIntSlice(slice []int, val int) []int { | ||||
| 	for i, v := range slice { | ||||
| 		if v == val { | ||||
| 			ret := append([]int{}, slice[:i]...) | ||||
| 			ret = append(ret, slice[i+1:]...) | ||||
| 			return ret | ||||
| 		} | ||||
| 	} | ||||
| 	return slice | ||||
| } | ||||
|  | ||||
| func isIntSliceEqual(newValue, defaultValue []int) bool { | ||||
| 	// If one is nil, the other must also be nil. | ||||
| 	if (newValue == nil) != (defaultValue == nil) { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	if len(newValue) != len(defaultValue) { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	for i, v := range newValue { | ||||
| 		if v != defaultValue[i] { | ||||
| 			return false | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return true | ||||
| } | ||||
|   | ||||
							
								
								
									
										54
									
								
								vendor/github.com/urfave/cli/flag_string_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/github.com/urfave/cli/flag_string_slice.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -17,7 +17,7 @@ func (f *StringSlice) Set(value string) error { | ||||
|  | ||||
| // String returns a readable representation of this value (for usage defaults) | ||||
| func (f *StringSlice) String() string { | ||||
| 	return fmt.Sprintf("%s", *f) | ||||
| 	return strings.Join(*f, ",") | ||||
| } | ||||
|  | ||||
| // Value returns the slice of strings set by this flag | ||||
| @@ -128,11 +128,57 @@ func (c *Context) GlobalStringSlice(name string) []string { | ||||
| func lookupStringSlice(name string, set *flag.FlagSet) []string { | ||||
| 	f := set.Lookup(name) | ||||
| 	if f != nil { | ||||
| 		parsed, err := (f.Value.(*StringSlice)).Value(), error(nil) | ||||
| 		if err != nil { | ||||
| 		value, ok := f.Value.(*StringSlice) | ||||
| 		if !ok { | ||||
| 			return nil | ||||
| 		} | ||||
| 		return parsed | ||||
| 		// extract the slice from asserted value | ||||
| 		slice := value.Value() | ||||
|  | ||||
| 		// extract default value from the flag | ||||
| 		var defaultVal []string | ||||
| 		for _, v := range strings.Split(f.DefValue, ",") { | ||||
| 			defaultVal = append(defaultVal, v) | ||||
| 		} | ||||
|  | ||||
| 		// if the current value is not equal to the default value | ||||
| 		// remove the default values from the flag | ||||
| 		if !isStringSliceEqual(slice, defaultVal) { | ||||
| 			for _, v := range defaultVal { | ||||
| 				slice = removeFromStringSlice(slice, v) | ||||
| 			} | ||||
| 		} | ||||
| 		return slice | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func removeFromStringSlice(slice []string, val string) []string { | ||||
| 	for i, v := range slice { | ||||
| 		if v == val { | ||||
| 			ret := append([]string{}, slice[:i]...) | ||||
| 			ret = append(ret, slice[i+1:]...) | ||||
| 			return ret | ||||
| 		} | ||||
| 	} | ||||
| 	return slice | ||||
| } | ||||
|  | ||||
| func isStringSliceEqual(newValue, defaultValue []string) bool { | ||||
| 	// If one is nil, the other must also be nil. | ||||
| 	if (newValue == nil) != (defaultValue == nil) { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	if len(newValue) != len(defaultValue) { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	for i, v := range newValue { | ||||
| 		if v != defaultValue[i] { | ||||
| 			return false | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return true | ||||
| } | ||||
|   | ||||
							
								
								
									
										51
									
								
								vendor/github.com/urfave/cli/help.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								vendor/github.com/urfave/cli/help.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -47,13 +47,18 @@ type helpPrinter func(w io.Writer, templ string, data interface{}) | ||||
| // Prints help for the App or Command with custom template function. | ||||
| type helpPrinterCustom func(w io.Writer, templ string, data interface{}, customFunc map[string]interface{}) | ||||
|  | ||||
| // HelpPrinter is a function that writes the help output. If not set a default | ||||
| // is used. The function signature is: | ||||
| // func(w io.Writer, templ string, data interface{}) | ||||
| // HelpPrinter is a function that writes the help output. If not set explicitly, | ||||
| // this calls HelpPrinterCustom using only the default template functions. | ||||
| // | ||||
| // If custom logic for printing help is required, this function can be | ||||
| // overridden. If the ExtraInfo field is defined on an App, this function | ||||
| // should not be modified, as HelpPrinterCustom will be used directly in order | ||||
| // to capture the extra information. | ||||
| var HelpPrinter helpPrinter = printHelp | ||||
|  | ||||
| // HelpPrinterCustom is same as HelpPrinter but | ||||
| // takes a custom function for template function map. | ||||
| // HelpPrinterCustom is a function that writes the help output. It is used as | ||||
| // the default implementation of HelpPrinter, and may be called directly if | ||||
| // the ExtraInfo field is set on an App. | ||||
| var HelpPrinterCustom helpPrinterCustom = printHelpCustom | ||||
|  | ||||
| // VersionPrinter prints the version for the App | ||||
| @@ -66,20 +71,24 @@ func ShowAppHelpAndExit(c *Context, exitCode int) { | ||||
| } | ||||
|  | ||||
| // ShowAppHelp is an action that displays the help. | ||||
| func ShowAppHelp(c *Context) (err error) { | ||||
| 	if c.App.CustomAppHelpTemplate == "" { | ||||
| 		HelpPrinter(c.App.Writer, AppHelpTemplate, c.App) | ||||
| 		return | ||||
| func ShowAppHelp(c *Context) error { | ||||
| 	template := c.App.CustomAppHelpTemplate | ||||
| 	if template == "" { | ||||
| 		template = AppHelpTemplate | ||||
| 	} | ||||
| 	customAppData := func() map[string]interface{} { | ||||
|  | ||||
| 	if c.App.ExtraInfo == nil { | ||||
| 		HelpPrinter(c.App.Writer, template, c.App) | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	customAppData := func() map[string]interface{} { | ||||
| 		return map[string]interface{}{ | ||||
| 			"ExtraInfo": c.App.ExtraInfo, | ||||
| 		} | ||||
| 	} | ||||
| 	HelpPrinterCustom(c.App.Writer, c.App.CustomAppHelpTemplate, c.App, customAppData()) | ||||
| 	HelpPrinterCustom(c.App.Writer, template, c.App, customAppData()) | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @@ -186,11 +195,13 @@ func ShowCommandHelp(ctx *Context, command string) error { | ||||
|  | ||||
| 	for _, c := range ctx.App.Commands { | ||||
| 		if c.HasName(command) { | ||||
| 			if c.CustomHelpTemplate != "" { | ||||
| 				HelpPrinterCustom(ctx.App.Writer, c.CustomHelpTemplate, c, nil) | ||||
| 			} else { | ||||
| 				HelpPrinter(ctx.App.Writer, CommandHelpTemplate, c) | ||||
| 			templ := c.CustomHelpTemplate | ||||
| 			if templ == "" { | ||||
| 				templ = CommandHelpTemplate | ||||
| 			} | ||||
|  | ||||
| 			HelpPrinter(ctx.App.Writer, templ, c) | ||||
|  | ||||
| 			return nil | ||||
| 		} | ||||
| 	} | ||||
| @@ -238,11 +249,15 @@ func ShowCommandCompletions(ctx *Context, command string) { | ||||
|  | ||||
| } | ||||
|  | ||||
| func printHelpCustom(out io.Writer, templ string, data interface{}, customFunc map[string]interface{}) { | ||||
| // printHelpCustom is the default implementation of HelpPrinterCustom. | ||||
| // | ||||
| // The customFuncs map will be combined with a default template.FuncMap to | ||||
| // allow using arbitrary functions in template rendering. | ||||
| func printHelpCustom(out io.Writer, templ string, data interface{}, customFuncs map[string]interface{}) { | ||||
| 	funcMap := template.FuncMap{ | ||||
| 		"join": strings.Join, | ||||
| 	} | ||||
| 	for key, value := range customFunc { | ||||
| 	for key, value := range customFuncs { | ||||
| 		funcMap[key] = value | ||||
| 	} | ||||
|  | ||||
| @@ -261,7 +276,7 @@ func printHelpCustom(out io.Writer, templ string, data interface{}, customFunc m | ||||
| } | ||||
|  | ||||
| func printHelp(out io.Writer, templ string, data interface{}) { | ||||
| 	printHelpCustom(out, templ, data, nil) | ||||
| 	HelpPrinterCustom(out, templ, data, nil) | ||||
| } | ||||
|  | ||||
| func checkVersion(c *Context) bool { | ||||
|   | ||||
							
								
								
									
										52
									
								
								vendor/github.com/urfave/cli/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								vendor/github.com/urfave/cli/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -14,42 +14,56 @@ type iterativeParser interface { | ||||
| // iteratively catch parsing errors. This way we achieve LR parsing without | ||||
| // transforming any arguments. Otherwise, there is no way we can discriminate | ||||
| // combined short options from common arguments that should be left untouched. | ||||
| func parseIter(ip iterativeParser, args []string) (*flag.FlagSet, error) { | ||||
| // Pass `shellComplete` to continue parsing options on failure during shell | ||||
| // completion when, the user-supplied options may be incomplete. | ||||
| func parseIter(set *flag.FlagSet, ip iterativeParser, args []string, shellComplete bool) error { | ||||
| 	for { | ||||
| 		set, err := ip.newFlagSet() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | ||||
| 		err = set.Parse(args) | ||||
| 		err := set.Parse(args) | ||||
| 		if !ip.useShortOptionHandling() || err == nil { | ||||
| 			return set, err | ||||
| 			if shellComplete { | ||||
| 				return nil | ||||
| 			} | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| 		errStr := err.Error() | ||||
| 		trimmed := strings.TrimPrefix(errStr, "flag provided but not defined: ") | ||||
| 		trimmed := strings.TrimPrefix(errStr, "flag provided but not defined: -") | ||||
| 		if errStr == trimmed { | ||||
| 			return nil, err | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| 		// regenerate the initial args with the split short opts | ||||
| 		newArgs := []string{} | ||||
| 		argsWereSplit := false | ||||
| 		for i, arg := range args { | ||||
| 			if arg != trimmed { | ||||
| 				newArgs = append(newArgs, arg) | ||||
| 			// skip args that are not part of the error message | ||||
| 			if name := strings.TrimLeft(arg, "-"); name != trimmed { | ||||
| 				continue | ||||
| 			} | ||||
|  | ||||
| 			shortOpts := splitShortOptions(set, trimmed) | ||||
| 			// if we can't split, the error was accurate | ||||
| 			shortOpts := splitShortOptions(set, arg) | ||||
| 			if len(shortOpts) == 1 { | ||||
| 				return nil, err | ||||
| 				return err | ||||
| 			} | ||||
|  | ||||
| 			// add each short option and all remaining arguments | ||||
| 			newArgs = append(newArgs, shortOpts...) | ||||
| 			newArgs = append(newArgs, args[i+1:]...) | ||||
| 			args = newArgs | ||||
| 			// swap current argument with the split version | ||||
| 			args = append(args[:i], append(shortOpts, args[i+1:]...)...) | ||||
| 			argsWereSplit = true | ||||
| 			break | ||||
| 		} | ||||
|  | ||||
| 		// This should be an impossible to reach code path, but in case the arg | ||||
| 		// splitting failed to happen, this will prevent infinite loops | ||||
| 		if !argsWereSplit { | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| 		// Since custom parsing failed, replace the flag set before retrying | ||||
| 		newSet, err := ip.newFlagSet() | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		*set = *newSet | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -379,7 +379,7 @@ github.com/syndtr/gocapability/capability | ||||
| # github.com/tchap/go-patricia/v2 v2.3.1 | ||||
| ## explicit; go 1.16 | ||||
| github.com/tchap/go-patricia/v2/patricia | ||||
| # github.com/urfave/cli v1.22.2 => github.com/urfave/cli v1.22.1 | ||||
| # github.com/urfave/cli v1.22.9 | ||||
| ## explicit; go 1.11 | ||||
| github.com/urfave/cli | ||||
| # github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5 | ||||
| @@ -758,4 +758,3 @@ sigs.k8s.io/structured-merge-diff/v4/value | ||||
| # sigs.k8s.io/yaml v1.3.0 | ||||
| ## explicit; go 1.12 | ||||
| sigs.k8s.io/yaml | ||||
| # github.com/urfave/cli => github.com/urfave/cli v1.22.1 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sebastiaan van Stijn
					Sebastiaan van Stijn