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/sirupsen/logrus v1.8.1 | ||||||
| 	github.com/stretchr/testify v1.7.1 | 	github.com/stretchr/testify v1.7.1 | ||||||
| 	github.com/tchap/go-patricia/v2 v2.3.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 | 	github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5 | ||||||
| 	go.etcd.io/bbolt v1.3.6 | 	go.etcd.io/bbolt v1.3.6 | ||||||
| 	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0 | 	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/structured-merge-diff/v4 v4.2.1 // indirect | ||||||
| 	sigs.k8s.io/yaml v1.3.0 // 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/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/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/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.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 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.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.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= | ||||||
|   | |||||||
| @@ -65,17 +65,9 @@ require ( | |||||||
| 	sigs.k8s.io/yaml v1.3.0 // indirect | 	sigs.k8s.io/yaml v1.3.0 // indirect | ||||||
| ) | ) | ||||||
|  |  | ||||||
| replace ( | // use the containerd module from this repository instead of downloading | ||||||
| 	// use the containerd module from this repository instead of downloading | // | ||||||
| 	// | // IMPORTANT: this replace rule ONLY replaces containerd itself; dependencies | ||||||
| 	// IMPORTANT: this replace rule ONLY replaces containerd itself; dependencies | // in the "require" section above are still taken into account for version | ||||||
| 	// in the "require" section above are still taken into account for version | // resolution if newer. | ||||||
| 	// resolution if newer. | replace github.com/containerd/containerd => ../../ | ||||||
| 	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 |  | ||||||
| ) |  | ||||||
|   | |||||||
| @@ -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/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/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.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.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.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= | ||||||
| github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= | github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/github.com/urfave/cli/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/urfave/cli/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +1,5 @@ | |||||||
| *.coverprofile | *.coverprofile | ||||||
|  | coverage.txt | ||||||
| node_modules/ | node_modules/ | ||||||
| vendor | 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]), | 		HelpName:     filepath.Base(os.Args[0]), | ||||||
| 		Usage:        "A new cli application", | 		Usage:        "A new cli application", | ||||||
| 		UsageText:    "", | 		UsageText:    "", | ||||||
| 		Version:      "0.0.0", |  | ||||||
| 		BashComplete: DefaultAppComplete, | 		BashComplete: DefaultAppComplete, | ||||||
| 		Action:       helpCommand.Action, | 		Action:       helpCommand.Action, | ||||||
| 		Compiled:     compileTime(), | 		Compiled:     compileTime(), | ||||||
| @@ -159,6 +158,10 @@ func (a *App) Setup() { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	if a.Version == "" { | ||||||
|  | 		a.HideVersion = true | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	if !a.HideVersion { | 	if !a.HideVersion { | ||||||
| 		a.appendFlag(VersionFlag) | 		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 | 	// always appends the completion flag at the end of the command | ||||||
| 	shellComplete, arguments := checkShellCompleteFlag(a, arguments) | 	shellComplete, arguments := checkShellCompleteFlag(a, arguments) | ||||||
|  |  | ||||||
| 	_, err = a.newFlagSet() | 	set, err := a.newFlagSet() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	set, err := parseIter(a, arguments[1:]) | 	err = parseIter(set, a, arguments[1:], shellComplete) | ||||||
| 	nerr := normalizeFlags(a.Flags, set) | 	nerr := normalizeFlags(a.Flags, set) | ||||||
| 	context := NewContext(a, set, nil) | 	context := NewContext(a, set, nil) | ||||||
| 	if nerr != nil { | 	if nerr != nil { | ||||||
| @@ -260,8 +263,6 @@ func (a *App) Run(arguments []string) (err error) { | |||||||
| 	if a.Before != nil { | 	if a.Before != nil { | ||||||
| 		beforeErr := a.Before(context) | 		beforeErr := a.Before(context) | ||||||
| 		if beforeErr != nil { | 		if beforeErr != nil { | ||||||
| 			_, _ = fmt.Fprintf(a.Writer, "%v\n\n", beforeErr) |  | ||||||
| 			_ = ShowAppHelp(context) |  | ||||||
| 			a.handleExitCoder(context, beforeErr) | 			a.handleExitCoder(context, beforeErr) | ||||||
| 			err = beforeErr | 			err = beforeErr | ||||||
| 			return err | 			return err | ||||||
| @@ -322,12 +323,12 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error) { | |||||||
| 	} | 	} | ||||||
| 	a.Commands = newCmds | 	a.Commands = newCmds | ||||||
|  |  | ||||||
| 	_, err = a.newFlagSet() | 	set, err := a.newFlagSet() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	set, err := parseIter(a, ctx.Args().Tail()) | 	err = parseIter(set, a, ctx.Args().Tail(), ctx.shellComplete) | ||||||
| 	nerr := normalizeFlags(a.Flags, set) | 	nerr := normalizeFlags(a.Flags, set) | ||||||
| 	context := NewContext(a, set, ctx) | 	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 | clone_folder: c:\gopath\src\github.com\urfave\cli | ||||||
|  |  | ||||||
|  | cache: | ||||||
|  |   - node_modules | ||||||
|  |  | ||||||
| environment: | environment: | ||||||
|   GOPATH: C:\gopath |   GOPATH: C:\gopath | ||||||
|   GOVERSION: 1.11.x |   GOVERSION: 1.11.x | ||||||
|  |   GO111MODULE: on | ||||||
|  |   GOPROXY: https://proxy.golang.org | ||||||
|  |  | ||||||
| install: | install: | ||||||
|   - set PATH=%GOPATH%\bin;C:\go\bin;%PATH% |   - set PATH=%GOPATH%\bin;C:\go\bin;%PATH% | ||||||
|   - go version |   - go version | ||||||
|   - go env |   - go env | ||||||
|   - go get github.com/urfave/gfmrun/... |   - go get github.com/urfave/gfmrun/cmd/gfmrun | ||||||
|   - go get -v -t ./... |   - go mod vendor | ||||||
|  |  | ||||||
| build_script: | build_script: | ||||||
|   - go run build.go vet |   - go run build.go vet | ||||||
|   - go run build.go test |   - 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 | 		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 := NewContext(ctx.App, set, ctx) | ||||||
| 	context.Command = c | 	context.Command = c | ||||||
| @@ -161,7 +161,6 @@ func (c Command) Run(ctx *Context) (err error) { | |||||||
| 	if c.Before != nil { | 	if c.Before != nil { | ||||||
| 		err = c.Before(context) | 		err = c.Before(context) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			_ = ShowCommandHelp(context, c.Name) |  | ||||||
| 			context.App.handleExitCoder(context, err) | 			context.App.handleExitCoder(context, err) | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
| @@ -179,7 +178,7 @@ func (c Command) Run(ctx *Context) (err error) { | |||||||
| 	return err | 	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 { | 	if c.SkipFlagParsing { | ||||||
| 		set, err := c.newFlagSet() | 		set, err := c.newFlagSet() | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| @@ -190,10 +189,15 @@ func (c *Command) parseFlags(args Args) (*flag.FlagSet, error) { | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if !c.SkipArgReorder { | 	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 { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| @@ -214,34 +218,79 @@ func (c *Command) useShortOptionHandling() bool { | |||||||
| 	return c.UseShortOptionHandling | 	return c.UseShortOptionHandling | ||||||
| } | } | ||||||
|  |  | ||||||
| // reorderArgs moves all flags before arguments as this is what flag expects | // reorderArgs moves all flags (via reorderedArgs) before the rest of | ||||||
| func reorderArgs(args []string) []string { | // the arguments (remainingArgs) as this is what flag expects. | ||||||
| 	var nonflags, flags []string | func reorderArgs(commandFlags []Flag, args []string) []string { | ||||||
|  | 	var remainingArgs, reorderedArgs []string | ||||||
|  |  | ||||||
| 	readFlagValue := false | 	nextIndexMayContainValue := false | ||||||
| 	for i, arg := range args { | 	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 | 			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, "--") { | 			// simply append any remaining args | ||||||
| 			readFlagValue = false |  | ||||||
| 			flags = append(flags, arg) |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		readFlagValue = false |  | ||||||
|  |  | ||||||
| 		if arg != "-" && strings.HasPrefix(arg, "-") { |  | ||||||
| 			flags = append(flags, arg) |  | ||||||
|  |  | ||||||
| 			readFlagValue = !strings.Contains(arg, "=") |  | ||||||
| 		} else { | 		} 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. | // 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 { | 		for _, f := range flags { | ||||||
| 			eachName(f.GetName(), func(name string) { | 			eachName(f.GetName(), func(name string) { | ||||||
| 				if isSet, ok := c.setFlags[name]; isSet || !ok { | 				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 | 					return | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| @@ -316,11 +324,12 @@ func checkRequiredFlags(flags []Flag, context *Context) requiredFlagsErr { | |||||||
| 			var flagPresent bool | 			var flagPresent bool | ||||||
| 			var flagName string | 			var flagName string | ||||||
| 			for _, key := range strings.Split(f.GetName(), ",") { | 			for _, key := range strings.Split(f.GetName(), ",") { | ||||||
|  | 				key = strings.TrimSpace(key) | ||||||
| 				if len(key) > 1 { | 				if len(key) > 1 { | ||||||
| 					flagName = key | 					flagName = key | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| 				if context.IsSet(strings.TrimSpace(key)) { | 				if context.IsSet(key) { | ||||||
| 					flagPresent = true | 					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 | package cli | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								vendor/github.com/urfave/cli/flag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/urfave/cli/flag.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -86,7 +86,7 @@ type RequiredFlag interface { | |||||||
| type DocGenerationFlag interface { | type DocGenerationFlag interface { | ||||||
| 	Flag | 	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 | 	TakesValue() bool | ||||||
|  |  | ||||||
| 	// GetUsage returns the usage string for the flag | 	// GetUsage returns the usage string for the flag | ||||||
| @@ -338,8 +338,10 @@ func flagFromFileEnv(filePath, envName string) (val string, ok bool) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	for _, fileVar := range strings.Split(filePath, ",") { | 	for _, fileVar := range strings.Split(filePath, ",") { | ||||||
| 		if data, err := ioutil.ReadFile(fileVar); err == nil { | 		if fileVar != "" { | ||||||
| 			return string(data), true | 			if data, err := ioutil.ReadFile(fileVar); err == nil { | ||||||
|  | 				return string(data), true | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	return "", false | 	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) | // String returns a readable representation of this value (for usage defaults) | ||||||
| func (f *Int64Slice) String() string { | 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 | // 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) | 		set.Var(f.Value, name, f.Usage) | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -131,11 +137,63 @@ func (c *Context) GlobalInt64Slice(name string) []int64 { | |||||||
| func lookupInt64Slice(name string, set *flag.FlagSet) []int64 { | func lookupInt64Slice(name string, set *flag.FlagSet) []int64 { | ||||||
| 	f := set.Lookup(name) | 	f := set.Lookup(name) | ||||||
| 	if f != nil { | 	if f != nil { | ||||||
| 		parsed, err := (f.Value.(*Int64Slice)).Value(), error(nil) | 		value, ok := f.Value.(*Int64Slice) | ||||||
| 		if err != nil { | 		if !ok { | ||||||
| 			return nil | 			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 parsed | ||||||
| 	} | 	} | ||||||
| 	return nil | 	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) | // String returns a readable representation of this value (for usage defaults) | ||||||
| func (f *IntSlice) String() string { | 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 | // 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 { | func lookupIntSlice(name string, set *flag.FlagSet) []int { | ||||||
| 	f := set.Lookup(name) | 	f := set.Lookup(name) | ||||||
| 	if f != nil { | 	if f != nil { | ||||||
| 		parsed, err := (f.Value.(*IntSlice)).Value(), error(nil) | 		value, ok := f.Value.(*IntSlice) | ||||||
| 		if err != nil { | 		if !ok { | ||||||
| 			return nil | 			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 | 	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) | // String returns a readable representation of this value (for usage defaults) | ||||||
| func (f *StringSlice) String() string { | func (f *StringSlice) String() string { | ||||||
| 	return fmt.Sprintf("%s", *f) | 	return strings.Join(*f, ",") | ||||||
| } | } | ||||||
|  |  | ||||||
| // Value returns the slice of strings set by this flag | // 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 { | func lookupStringSlice(name string, set *flag.FlagSet) []string { | ||||||
| 	f := set.Lookup(name) | 	f := set.Lookup(name) | ||||||
| 	if f != nil { | 	if f != nil { | ||||||
| 		parsed, err := (f.Value.(*StringSlice)).Value(), error(nil) | 		value, ok := f.Value.(*StringSlice) | ||||||
| 		if err != nil { | 		if !ok { | ||||||
| 			return nil | 			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 | 	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 | ||||||
|  | } | ||||||
|   | |||||||
							
								
								
									
										55
									
								
								vendor/github.com/urfave/cli/help.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										55
									
								
								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. | // 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{}) | 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 | // HelpPrinter is a function that writes the help output. If not set explicitly, | ||||||
| // is used. The function signature is: | // this calls HelpPrinterCustom using only the default template functions. | ||||||
| // func(w io.Writer, templ string, data interface{}) | // | ||||||
|  | // 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 | var HelpPrinter helpPrinter = printHelp | ||||||
|  |  | ||||||
| // HelpPrinterCustom is same as HelpPrinter but | // HelpPrinterCustom is a function that writes the help output. It is used as | ||||||
| // takes a custom function for template function map. | // the default implementation of HelpPrinter, and may be called directly if | ||||||
|  | // the ExtraInfo field is set on an App. | ||||||
| var HelpPrinterCustom helpPrinterCustom = printHelpCustom | var HelpPrinterCustom helpPrinterCustom = printHelpCustom | ||||||
|  |  | ||||||
| // VersionPrinter prints the version for the App | // 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. | // ShowAppHelp is an action that displays the help. | ||||||
| func ShowAppHelp(c *Context) (err error) { | func ShowAppHelp(c *Context) error { | ||||||
| 	if c.App.CustomAppHelpTemplate == "" { | 	template := c.App.CustomAppHelpTemplate | ||||||
| 		HelpPrinter(c.App.Writer, AppHelpTemplate, c.App) | 	if template == "" { | ||||||
| 		return | 		template = AppHelpTemplate | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	if c.App.ExtraInfo == nil { | ||||||
|  | 		HelpPrinter(c.App.Writer, template, c.App) | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	customAppData := func() map[string]interface{} { | 	customAppData := func() map[string]interface{} { | ||||||
| 		if c.App.ExtraInfo == nil { |  | ||||||
| 			return nil |  | ||||||
| 		} |  | ||||||
| 		return map[string]interface{}{ | 		return map[string]interface{}{ | ||||||
| 			"ExtraInfo": c.App.ExtraInfo, | 			"ExtraInfo": c.App.ExtraInfo, | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	HelpPrinterCustom(c.App.Writer, c.App.CustomAppHelpTemplate, c.App, customAppData()) | 	HelpPrinterCustom(c.App.Writer, template, c.App, customAppData()) | ||||||
|  |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -186,11 +195,13 @@ func ShowCommandHelp(ctx *Context, command string) error { | |||||||
|  |  | ||||||
| 	for _, c := range ctx.App.Commands { | 	for _, c := range ctx.App.Commands { | ||||||
| 		if c.HasName(command) { | 		if c.HasName(command) { | ||||||
| 			if c.CustomHelpTemplate != "" { | 			templ := c.CustomHelpTemplate | ||||||
| 				HelpPrinterCustom(ctx.App.Writer, c.CustomHelpTemplate, c, nil) | 			if templ == "" { | ||||||
| 			} else { | 				templ = CommandHelpTemplate | ||||||
| 				HelpPrinter(ctx.App.Writer, CommandHelpTemplate, c) |  | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | 			HelpPrinter(ctx.App.Writer, templ, c) | ||||||
|  |  | ||||||
| 			return nil | 			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{ | 	funcMap := template.FuncMap{ | ||||||
| 		"join": strings.Join, | 		"join": strings.Join, | ||||||
| 	} | 	} | ||||||
| 	for key, value := range customFunc { | 	for key, value := range customFuncs { | ||||||
| 		funcMap[key] = value | 		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{}) { | func printHelp(out io.Writer, templ string, data interface{}) { | ||||||
| 	printHelpCustom(out, templ, data, nil) | 	HelpPrinterCustom(out, templ, data, nil) | ||||||
| } | } | ||||||
|  |  | ||||||
| func checkVersion(c *Context) bool { | func checkVersion(c *Context) bool { | ||||||
|   | |||||||
							
								
								
									
										54
									
								
								vendor/github.com/urfave/cli/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/github.com/urfave/cli/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -11,45 +11,59 @@ type iterativeParser interface { | |||||||
| } | } | ||||||
|  |  | ||||||
| // To enable short-option handling (e.g., "-it" vs "-i -t") we have to | // To enable short-option handling (e.g., "-it" vs "-i -t") we have to | ||||||
| // iteratively catch parsing errors.  This way we achieve LR parsing without | // iteratively catch parsing errors. This way we achieve LR parsing without | ||||||
| // transforming any arguments. Otherwise, there is no way we can discriminate | // transforming any arguments. Otherwise, there is no way we can discriminate | ||||||
| // combined short options from common arguments that should be left untouched. | // 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 { | 	for { | ||||||
| 		set, err := ip.newFlagSet() | 		err := set.Parse(args) | ||||||
| 		if err != nil { |  | ||||||
| 			return nil, err |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		err = set.Parse(args) |  | ||||||
| 		if !ip.useShortOptionHandling() || err == nil { | 		if !ip.useShortOptionHandling() || err == nil { | ||||||
| 			return set, err | 			if shellComplete { | ||||||
|  | 				return nil | ||||||
|  | 			} | ||||||
|  | 			return err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		errStr := err.Error() | 		errStr := err.Error() | ||||||
| 		trimmed := strings.TrimPrefix(errStr, "flag provided but not defined: ") | 		trimmed := strings.TrimPrefix(errStr, "flag provided but not defined: -") | ||||||
| 		if errStr == trimmed { | 		if errStr == trimmed { | ||||||
| 			return nil, err | 			return err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		// regenerate the initial args with the split short opts | 		// regenerate the initial args with the split short opts | ||||||
| 		newArgs := []string{} | 		argsWereSplit := false | ||||||
| 		for i, arg := range args { | 		for i, arg := range args { | ||||||
| 			if arg != trimmed { | 			// skip args that are not part of the error message | ||||||
| 				newArgs = append(newArgs, arg) | 			if name := strings.TrimLeft(arg, "-"); name != trimmed { | ||||||
| 				continue | 				continue | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			shortOpts := splitShortOptions(set, trimmed) | 			// if we can't split, the error was accurate | ||||||
|  | 			shortOpts := splitShortOptions(set, arg) | ||||||
| 			if len(shortOpts) == 1 { | 			if len(shortOpts) == 1 { | ||||||
| 				return nil, err | 				return err | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			// add each short option and all remaining arguments | 			// swap current argument with the split version | ||||||
| 			newArgs = append(newArgs, shortOpts...) | 			args = append(args[:i], append(shortOpts, args[i+1:]...)...) | ||||||
| 			newArgs = append(newArgs, args[i+1:]...) | 			argsWereSplit = true | ||||||
| 			args = newArgs | 			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 | # github.com/tchap/go-patricia/v2 v2.3.1 | ||||||
| ## explicit; go 1.16 | ## explicit; go 1.16 | ||||||
| github.com/tchap/go-patricia/v2/patricia | 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 | ## explicit; go 1.11 | ||||||
| github.com/urfave/cli | github.com/urfave/cli | ||||||
| # github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5 | # 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 | # sigs.k8s.io/yaml v1.3.0 | ||||||
| ## explicit; go 1.12 | ## explicit; go 1.12 | ||||||
| sigs.k8s.io/yaml | 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