Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v2 master merge #892

Merged
merged 261 commits into from Nov 9, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
261 commits
Select commit Hold shift + click to select a range
eb8680b
Merge pull request #392 from codegangsta/string-slice-overwrite-on-set
jszwedko May 5, 2016
f585ec7
Remove reordering of flags and arguments
jszwedko May 7, 2016
9c9a8d8
Merge pull request #398 from codegangsta/do-not-reorder-flags
meatballhat May 9, 2016
bac790c
Merge remote-tracking branch 'origin/master' into v2
meatballhat May 9, 2016
32ebecf
Merge remote-tracking branch 'origin/master' into v2
meatballhat May 9, 2016
cab5c58
Merge remote-tracking branch 'origin/master' into v2
meatballhat May 16, 2016
bef835d
Remove all Context.Global* methods
meatballhat May 16, 2016
cfc21d1
Merge remote-tracking branch 'origin/master' into v2
meatballhat May 16, 2016
c720f37
Context tests and tweaks around lineage traversal
meatballhat May 17, 2016
37e2f51
Merge remote-tracking branch 'origin/v2' into remove-global-lookups
meatballhat May 17, 2016
6b0c4de
Merge remote-tracking branch 'origin/master' into v2
meatballhat May 17, 2016
7828300
Merge remote-tracking branch 'origin/v2' into remove-global-lookups
meatballhat May 17, 2016
7318e27
Tidy up the flag name visitor func in Context
meatballhat May 17, 2016
c19dbaf
Remove deprecated things and supporting code
meatballhat May 17, 2016
12814f7
Merge pull request #413 from codegangsta/remove-deprecated
jszwedko May 18, 2016
1925bb4
Merge remote-tracking branch 'origin/v2' into remove-global-lookups
meatballhat May 18, 2016
a02aab6
Add note about removal of `Context.Parent`
meatballhat May 18, 2016
9eaa109
Merge pull request #410 from codegangsta/remove-global-lookups
jszwedko May 18, 2016
f2d5ed9
Replace BoolTFlag type with BoolFlag.Value
meatballhat May 18, 2016
9c132d9
Add more tests for BoolFlag{Value: true}
meatballhat May 18, 2016
f8fcce1
Merge pull request #414 from codegangsta/remove-boolt
jszwedko May 21, 2016
6535798
Merge remote-tracking branch 'origin/master' into v2
jszwedko May 21, 2016
fac67ac
Show BoolFlag default value in help usage
meatballhat May 22, 2016
81fcf70
Replace all "stringly typed" fields with slice equivalents
meatballhat May 22, 2016
334e66c
Remove unused (so far) func
meatballhat May 22, 2016
b35c8a9
Merge pull request #419 from codegangsta/remove-stringlies
jszwedko May 22, 2016
cd10b49
Minimize struct copying
meatballhat May 22, 2016
6d6f7da
Merging from master/v1
meatballhat May 22, 2016
449c7f9
Merge pull request #423 from urfave/merging-v1
meatballhat May 22, 2016
9b16216
Merge remote-tracking branch 'origin/v2' into minimize-struct-copying
meatballhat May 23, 2016
2f3309c
Merge remote-tracking branch 'origin/master' into v2
meatballhat May 23, 2016
685865d
Merge pull request #428 from urfave/merging-from-v1
meatballhat May 23, 2016
59cdedb
Merge branch 'v2' into minimize-struct-copying
meatballhat May 23, 2016
61710ff
Make slice wrapping pattern more consistent
meatballhat May 24, 2016
ec05a8d
Ensure flag "Name" field values are un-stringly-fied
meatballhat May 24, 2016
8f25dbb
Ensure all flag aliases are set when Destination given
meatballhat May 24, 2016
a41a43b
Switch to fmt.Fprintf for displaying usage error
meatballhat May 24, 2016
bfd74c7
Merge pull request #432 from urfave/flag-alias-bug-430
meatballhat May 24, 2016
80f444e
Merge branch 'v2' into clean-stringlies
meatballhat May 24, 2016
c70993d
Merge branch 'v2' into minimize-struct-copying
meatballhat May 24, 2016
5700dc5
Merge remote-tracking branch 'origin/master' into v2
meatballhat May 24, 2016
92372c1
Merge pull request #433 from urfave/merging-from-v1
jszwedko May 24, 2016
42bdb31
Merge branch 'v2' into clean-stringlies
meatballhat May 24, 2016
2b28876
Add comment about commaWhitespace stripping of flag.Name
meatballhat May 24, 2016
403d147
Merge branch 'v2' into minimize-struct-copying
meatballhat May 24, 2016
c11b8c9
Merge pull request #431 from urfave/clean-stringlies
jszwedko May 25, 2016
8c89b2c
Merge remote-tracking branch 'origin/master' into v2
meatballhat May 25, 2016
9d93484
Merge pull request #435 from urfave/merging-from-v1
meatballhat May 25, 2016
cd1e8c3
Merge remote-tracking branch 'origin/v2' into minimize-struct-copying
meatballhat May 25, 2016
3d75e9e
Go with interfaces + private opaque types
meatballhat May 25, 2016
ed8f4ac
Fix example that uses ExitCoder
meatballhat May 25, 2016
d616529
Use make once instead of a loop with append
meatballhat May 27, 2016
459201f
Merge pull request #421 from urfave/minimize-struct-copying
jszwedko May 28, 2016
3b03164
Merge branch 'v2' into show-bool-default
meatballhat May 28, 2016
dddab48
Merge pull request #438 from urfave/show-bool-default
jszwedko May 28, 2016
80190b2
Rename migration script and add more migrators
meatballhat May 30, 2016
eadd391
Correct some flake8 bits
meatballhat May 30, 2016
b47e152
Handle migration of both files and dirs
meatballhat May 30, 2016
e9027a5
Do a user-level install with pip
meatballhat May 30, 2016
6d59b40
Skip flake8 bits on Windows
meatballhat May 30, 2016
462217f
Allow zero+ paths in migration script
meatballhat May 30, 2016
3914ca9
Update docs around migration script
meatballhat May 30, 2016
5565a03
Migrate and build extracted v1 examples
meatballhat May 30, 2016
e5ba2f4
Ensure we're in the right dir before continuing
meatballhat May 30, 2016
0ecae53
Where is flake8 on OS X?
meatballhat May 30, 2016
27f4b75
Try a system pip install on OS X
meatballhat May 30, 2016
b4db7c2
Do sudo-tastic system install os OS X
meatballhat May 30, 2016
9158c11
Add dir with flake8 to path better-er
meatballhat May 30, 2016
586b49d
Give up and use sudo on OS X again
meatballhat May 30, 2016
2cfb957
Run migration tests via `./runtests`
meatballhat May 30, 2016
1d13fa8
Merge branch 'v2' into migrators
meatballhat May 30, 2016
659e1c1
Fill in migrations for cli.Exit and BoolFlag with Value
meatballhat May 30, 2016
e3a099f
Cleanups per flake8 and code review
meatballhat May 30, 2016
c9011d8
Add migrators for context.Args() indexing and EnvVars
meatballhat May 31, 2016
cbd0e82
Add migrator for stringly values of flag "Name"
meatballhat Jun 1, 2016
733431d
Wrap a long line
meatballhat Jun 1, 2016
cb1e4c2
Merge remote-tracking branch 'origin/v1' into v2
meatballhat Jun 1, 2016
2f3de59
Merge pull request #443 from urfave/merging-from-v1
meatballhat Jun 1, 2016
8ce0f0c
Merge branch 'v2' into migrators
meatballhat Jun 1, 2016
92b70c2
Add more v1 -> v2 migrators
meatballhat Jun 1, 2016
73acde8
Make migrators ordered, clean up some duplication
meatballhat Jun 2, 2016
6dcb4fd
Migrator script output tweaks, debug logging
meatballhat Jun 2, 2016
c413767
Fixing some flake8 gripes
meatballhat Jun 2, 2016
3f70290
Merge pull request #439 from urfave/migrators
jszwedko Jun 7, 2016
d5abb16
Merge remote-tracking branch 'origin/master' into merging-from-v1
meatballhat Jun 10, 2016
8ea4b52
Style cleanups of full API example in README
meatballhat Jun 10, 2016
1b5ad73
Merge pull request #453 from urfave/merging-from-v1
meatballhat Jun 10, 2016
6c628a1
Merge remote-tracking branch 'origin/v1' into merging-from-v1
meatballhat Jun 17, 2016
0c9b549
Ensure remaining v1 additions are v2 compatible
meatballhat Jun 17, 2016
9e21e0e
Fix up the full API example in the README
meatballhat Jun 17, 2016
dc55e12
Pull the full API example up a level
meatballhat Jun 17, 2016
6e6a80c
Try symlinking into gopkg.in/urfave/cli.v2 better
meatballhat Jun 17, 2016
3357fcd
Try linking to gopkg.in/urfave/cli.v2 on Appveyor, too
meatballhat Jun 17, 2016
cafccda
Install gfmxr after symlinking into gopkg.in/urfave/cli.v2
meatballhat Jun 17, 2016
5b14460
Use xcopy instead of mklink on Appveyor
meatballhat Jun 17, 2016
c07b18d
Try out robocopy maybe?
meatballhat Jun 17, 2016
54df4b6
Try a more fancy robocopy command
meatballhat Jun 17, 2016
9821806
Straighten out robocopy exit code
meatballhat Jun 17, 2016
7cb40bd
Fighting more with cmd
meatballhat Jun 17, 2016
a8027b8
Use git to make a copy into urfave/cli.v2
meatballhat Jun 18, 2016
1131118
Switch back to symlinking on Linux and Mac
meatballhat Jun 18, 2016
29dc3f0
More tweaks to npm usage on Windows
meatballhat Jun 18, 2016
c24cac3
Try to YAML betterer
meatballhat Jun 18, 2016
8eaf6be
Trying to powershell better
meatballhat Jun 18, 2016
dec06d2
Dynamically find path of markdown-toc executable
meatballhat Jun 18, 2016
0ef1167
Run npm install in cmd subshell on Windows
meatballhat Jun 18, 2016
21219e2
Flush stderr after every print
meatballhat Jun 18, 2016
2569db1
Where is npm bindir?
meatballhat Jun 18, 2016
d2596f4
Disable gfmxr debugging on Windows
meatballhat Jun 18, 2016
8cfdccb
More tweaks to how `./runtests toc` runs on Windows
meatballhat Jun 18, 2016
77722a4
Explicitly run markdown-toc with bash on Windows
meatballhat Jun 18, 2016
a65711b
Merge pull request #458 from urfave/merging-from-v1
meatballhat Jun 18, 2016
d63e456
Merge remote-tracking branch 'origin/v1' into merging-from-v1
meatballhat Jun 21, 2016
5249491
Merge remote-tracking branch 'origin/v1' into merging-from-v1
meatballhat Jun 21, 2016
b5f16ff
Merge pull request #461 from urfave/merging-from-v1
meatballhat Jun 22, 2016
0f135b3
Merge remote-tracking branch 'origin/v1' into merging-from-v1
meatballhat Jun 22, 2016
df685fb
Remove `NewApp` initializer
meatballhat Jun 22, 2016
76d44cf
Ensure gfmxr installs with cli.v2
meatballhat Jun 22, 2016
796679f
Clean out urfave/cli.v2.a, wrap long line
meatballhat Jun 22, 2016
ef7fea1
Merge pull request #464 from urfave/merging-from-v1
meatballhat Jun 23, 2016
99621d5
Merge remote-tracking branch 'origin/v2' into declarativeness
meatballhat Jun 23, 2016
ee464a6
Merge pull request #465 from urfave/declarativeness
jszwedko Jun 25, 2016
028af4b
adding support for Float64SliceFlag
bfreis Jun 29, 2016
91563b8
Add JSON InputSource to altsrc package
johnweldon Jul 2, 2016
c99ea0b
Merge pull request #468 from bfreis/v2
jszwedko Jul 3, 2016
3c9856d
Add Float64SliceFlag to the CHANGELOG
jszwedko Jul 3, 2016
271001a
Merge branch 'v2' into PTAL-v2-implement-JSON-InputSource
johnweldon Jul 3, 2016
2b959bd
Merge pull request #470 from johnweldon/PTAL-v2-implement-JSON-InputS…
jszwedko Jul 5, 2016
f7b2b93
Merge remote-tracking branch 'origin/v1' into merging-from-v1
meatballhat Jul 14, 2016
40a9813
Merge pull request #483 from urfave/merging-from-v1
jszwedko Jul 15, 2016
fcaccb6
Run flake8 checks on generate-flag-types
meatballhat Jul 15, 2016
a51cb87
Wrap a long line for flake8
meatballhat Jul 16, 2016
d3b6733
Merge remote-tracking branch 'origin/v1' into merging-from-v1
meatballhat Jul 16, 2016
67cf919
Fix some trailing gfmxr refs
meatballhat Jul 16, 2016
215f242
Merge pull request #486 from urfave/merging-from-v1
meatballhat Jul 16, 2016
af4aa82
Merge branch 'v2' into flake8-typegen
meatballhat Jul 16, 2016
9646e60
Merge pull request #484 from urfave/flake8-typegen
jszwedko Jul 21, 2016
c360161
Merge remote-tracking branch 'origin/v1' into merging-from-v1
meatballhat Jul 23, 2016
924956d
Merge pull request #493 from urfave/merging-from-v1
meatballhat Jul 23, 2016
ca2a0f7
Ensure context lookups traverse lineage
meatballhat Jul 24, 2016
ee2e8aa
Merge pull request #495 from urfave/context-lookup-fix-487
meatballhat Jul 24, 2016
7640bef
Add --init-completion flag to print completion code
nlewo Jul 21, 2016
34a8b00
Documentation regarding the init-completion flag
nlewo Jul 21, 2016
94bc26f
Refactoring names from bash to shell
nlewo Jul 22, 2016
8a8d869
Add migrator for bash related names
nlewo Jul 26, 2016
81c242d
Merge remote-tracking branch 'origin/master' into merging-from-v1
meatballhat Aug 22, 2016
c5d3a34
Adjust some gfmrun output matches
meatballhat Aug 22, 2016
87f9c6d
Merge remote-tracking branch 'origin/master' into merging-from-v1
meatballhat Aug 22, 2016
812fa64
Skip migrations on go < 1.3
meatballhat Aug 22, 2016
adf6897
Merge pull request #509 from urfave/merging-from-v1
meatballhat Aug 23, 2016
3a3228c
Abstract dependency and test execution with Makefile
grubernaut Aug 24, 2016
a095a5a
Merge pull request #506 from grubernaut/v2
meatballhat Aug 26, 2016
b932071
Update altsrc imports to gopkg.in
grubernaut Aug 27, 2016
2ab83fa
Force generation of flag types to use gopkg import
grubernaut Aug 28, 2016
e0556cf
Add DefaultValue text for flags
grubernaut Aug 28, 2016
2616eeb
Merge pull request #512 from grubernaut/f-update-altsrc-import-v2
jszwedko Aug 28, 2016
7d56512
Add documentation, remove quotes by default
grubernaut Aug 30, 2016
33b5174
Merge branch 'v2' into f-default-value-text
grubernaut Aug 30, 2016
51cebd0
Update TOC in README
grubernaut Aug 30, 2016
c8d66d7
Lowercase TOC to pass tests
grubernaut Aug 30, 2016
c72728f
Merge pull request #514 from grubernaut/f-default-value-text
meatballhat Aug 31, 2016
6aa0ab6
Merge branch 'v2' into v2-completion
nlewo Sep 1, 2016
76d8eaf
Merge pull request #490 from nlewo/v2-completion
jszwedko Oct 26, 2016
83497d2
Merge remote-tracking branch 'origin/master' into v2-merge
jszwedko Oct 29, 2016
03f77c6
Fix new example for v2 branch
jszwedko Oct 29, 2016
e485446
Merge pull request #555 from urfave/v2-merge
jszwedko Oct 29, 2016
230bac3
Allow slightly longer lines in Python scripts
jszwedko Feb 15, 2017
04b2f4f
Adjust spacing in cli-v1-to-v2 to satisfy flake8
jszwedko Feb 15, 2017
9073334
Fix context.IsSet()
jszwedko Feb 15, 2017
8b9345e
Remove the error return signature
uudashr Apr 4, 2017
922e3e2
Merge pull request #615 from uudashr/v2
jszwedko Apr 18, 2017
61c3eb6
Merge pull request #597 from urfave/fix-isset-for-env
jszwedko Apr 24, 2017
c717f7a
Merge pull request #653 from urfave/master
jszwedko Aug 4, 2017
a61867e
Merge remote-tracking branch 'origin/v1' into merging-from-v1
meatballhat Aug 4, 2017
47a4123
Resolved compile-time errors since merging from v1
meatballhat Aug 4, 2017
df5c6ca
Back out the testify/assert addition :sweat_smile:
meatballhat Aug 4, 2017
a372849
Use []*Command instead of []Command in CommandsByName
meatballhat Aug 4, 2017
ce3a0da
Ensure migrator does not mangle `cli.CommandsByName`
meatballhat Aug 9, 2017
65b801c
Resolve remaining test errors for v1 => v2 merge
meatballhat Aug 13, 2017
744fdb4
Resolve conflict in completion flag check better
meatballhat Aug 13, 2017
1505b9f
Back out temporary flag alias whoopsie! :sweat_smile:
meatballhat Aug 13, 2017
d83210c
Attempt to better handle python(2|3) tempfile differences
meatballhat Aug 13, 2017
463d4ba
Explicitly set mode to 'w' when combining coverprofiles
meatballhat Aug 13, 2017
3164173
Switch some remaining encoding-related bits in test runner
meatballhat Aug 13, 2017
2da290b
Ensure indentation is consistent in example code
meatballhat Aug 14, 2017
50a0fde
Merge pull request #655 from urfave/merging-from-v1
meatballhat Aug 14, 2017
163f247
lint + DefaultCommand
OneOfOne Aug 29, 2017
b7ab5b0
don't add -- prefix if we manually specify one
OneOfOne Aug 30, 2017
0b665e6
Add PathFlag
VMitov Sep 26, 2017
b2bf3c5
Merge pull request #670 from VMitov/path_flag
jszwedko Sep 28, 2017
01b6b91
altsrc: Parse durations from strings
cbranch Jul 6, 2017
9b13523
Merge branch 'v2' into v2
jszwedko Jan 22, 2018
10c9734
notes
OneOfOne Jan 23, 2018
4960b5b
Merge branch 'v2' of https://github.com/OneOfOne/cli into v2
OneOfOne Jan 23, 2018
a35a28c
Update pip to pip2 for new OSX builds
jszwedko Jan 28, 2018
20e2dde
Merge pull request #703 from urfave/update-osx-pip-name
jszwedko Jan 28, 2018
15a051e
Merge branch 'v2' into v2
jszwedko Jan 28, 2018
d604b6f
Merge branch 'v2' into altsrc-parse-durations
jszwedko Jan 28, 2018
1355f91
Merge pull request #662 from OneOfOne/v2
jszwedko Jan 28, 2018
d3ae77c
Merge pull request #641 from cbranch/altsrc-parse-durations
jszwedko Jan 28, 2018
820040e
add context.Context to cli.Context
marwan-at-work Aug 5, 2019
006fad3
fix go.mod
marwan-at-work Aug 5, 2019
cee005e
only create context once
marwan-at-work Aug 6, 2019
1f7d168
fix nil check
marwan-at-work Aug 6, 2019
98e64f4
add propagation tests
marwan-at-work Aug 6, 2019
2fb0dc1
ignore compile errors
marwan-at-work Aug 6, 2019
c8863d0
PR updates
marwan-at-work Aug 6, 2019
be6dbba
rm modules
marwan-at-work Aug 6, 2019
43bfe00
Merge pull request #840 from marwan-at-work/ctx
AudriusButkevicius Aug 6, 2019
59f572e
Update .travis.yml
AudriusButkevicius Aug 6, 2019
b626059
Merge pull request #841 from urfave/AudriusButkevicius-patch-1
AudriusButkevicius Aug 6, 2019
c75fee9
Merge master @1.22.1 with v2
asahasrabuddhe Sep 12, 2019
75b7f09
All altsrc tests passing
asahasrabuddhe Sep 13, 2019
3515ca9
Make app tests pass
asahasrabuddhe Sep 13, 2019
f29d98a
Make command tests pass
asahasrabuddhe Sep 15, 2019
2024bed
Fix test cases for context, docs, errors, fish, flags and funcs
asahasrabuddhe Sep 15, 2019
d870ad6
Fix all tests
asahasrabuddhe Sep 15, 2019
afbaca6
Fix README.md
asahasrabuddhe Sep 15, 2019
046e68b
Update TOC
asahasrabuddhe Sep 15, 2019
9f97625
fix appveyor build
asahasrabuddhe Sep 15, 2019
2746d8d
add module specific commands
asahasrabuddhe Sep 15, 2019
ef1ba86
add is set method to flag interface - refer #294
asahasrabuddhe Sep 15, 2019
b161244
Merge latest master into v2-merge-master
asahasrabuddhe Sep 16, 2019
a9d5b68
Merge branch 'master' into v2-master-merge
asahasrabuddhe Sep 16, 2019
f12b8ca
Remove global method from Int64Slice Flag
asahasrabuddhe Sep 16, 2019
7d46b6d
Avoid panic for missing flag value
rliebz Sep 13, 2019
7bb08be
Merge branch 'master' into v2-master-merge
asahasrabuddhe Sep 18, 2019
8043478
Remove final conflicts
asahasrabuddhe Sep 18, 2019
7833873
Merge branch 'v2-master-merge' of https://github.com/urfave/cli into …
asahasrabuddhe Sep 18, 2019
be2255c
Fix failing build
asahasrabuddhe Sep 18, 2019
b940a1c
Merge branch 'master' into v2-master-merge
Sep 25, 2019
c44c489
Merge branch 'master' into v2-master-merge
Oct 2, 2019
cad4136
remove old makefile
asahasrabuddhe Oct 9, 2019
7d3cd32
Merge branch 'master' into v2-master-merge
asahasrabuddhe Oct 9, 2019
1663866
Remove go mod vendor from appveyor
asahasrabuddhe Oct 9, 2019
b776c20
Merge branch 'master' into v2-master-merge
asahasrabuddhe Oct 19, 2019
d8a42a7
add goflags readonly
asahasrabuddhe Oct 19, 2019
5f97906
remove goflags, add go mod tidy
asahasrabuddhe Oct 19, 2019
3415a1a
remove goflags from travis
asahasrabuddhe Oct 19, 2019
3bd9978
make categories private
asahasrabuddhe Oct 19, 2019
b5bef8e
Merge branch 'clean-help-printer' into help-printer-v2
rliebz Oct 21, 2019
109b320
remove redundant conversion
asahasrabuddhe Oct 21, 2019
e72f87a
Merge pull request #913 from rliebz/help-printer-v2
Oct 21, 2019
c8c0a04
Merge remote-tracking branch 'origin' into v2-master-merge
coilysiren Oct 24, 2019
1975649
fix spacing
coilysiren Oct 24, 2019
8576adb
clip contributing guidelines
coilysiren Oct 24, 2019
c4b24a1
add v2 doc tests
coilysiren Oct 24, 2019
3dce56a
remove v1 regression test
coilysiren Oct 24, 2019
434d6cb
remove old tests
coilysiren Oct 24, 2019
84461bc
Update CHANGELOG.md
asahasrabuddhe Nov 8, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 3 additions & 2 deletions .travis.yml
Expand Up @@ -12,8 +12,7 @@ os:
- osx

env:
GO111MODULE=on
GOPROXY=https://proxy.golang.org
GO111MODULE=on GOPROXY=https://proxy.golang.org

cache:
directories:
Expand All @@ -30,6 +29,8 @@ script:
- go run build.go test
- go run build.go gfmrun docs/v1/manual.md
- go run build.go toc docs/v1/manual.md
- go run build.go gfmrun docs/v2/manual.md
- go run build.go toc docs/v2/manual.md

after_success:
- bash <(curl -s https://codecov.io/bash)
117 changes: 59 additions & 58 deletions altsrc/flag.go
Expand Up @@ -2,11 +2,11 @@ package altsrc

import (
"fmt"
"path/filepath"
"strconv"
"strings"
"syscall"

"github.com/urfave/cli"
"github.com/urfave/cli/v2"
)

// FlagInputSourceExtension is an extension interface of cli.Flag that
Expand Down Expand Up @@ -65,15 +65,15 @@ func InitInputSourceWithContext(flags []cli.Flag, createInputSource func(context
// ApplyInputSourceValue applies a generic value to the flagSet if required
func (f *GenericFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
if f.set != nil {
if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) {
if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVars) {
value, err := isc.Generic(f.GenericFlag.Name)
if err != nil {
return err
}
if value != nil {
eachName(f.Name, func(name string) {
_ = f.set.Set(f.Name, value.String())
})
for _, name := range f.Names() {
_ = f.set.Set(name, value.String())
}
}
}
}
Expand All @@ -84,19 +84,19 @@ func (f *GenericFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourc
// ApplyInputSourceValue applies a StringSlice value to the flagSet if required
func (f *StringSliceFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
if f.set != nil {
if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) {
if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVars) {
value, err := isc.StringSlice(f.StringSliceFlag.Name)
if err != nil {
return err
}
if value != nil {
var sliceValue cli.StringSlice = value
eachName(f.Name, func(name string) {
underlyingFlag := f.set.Lookup(f.Name)
var sliceValue cli.StringSlice = *(cli.NewStringSlice(value...))
for _, name := range f.Names() {
underlyingFlag := f.set.Lookup(name)
if underlyingFlag != nil {
underlyingFlag.Value = &sliceValue
}
})
}
}
}
}
Expand All @@ -106,19 +106,19 @@ func (f *StringSliceFlag) ApplyInputSourceValue(context *cli.Context, isc InputS
// ApplyInputSourceValue applies a IntSlice value if required
func (f *IntSliceFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
if f.set != nil {
if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) {
if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVars) {
value, err := isc.IntSlice(f.IntSliceFlag.Name)
if err != nil {
return err
}
if value != nil {
var sliceValue cli.IntSlice = value
eachName(f.Name, func(name string) {
underlyingFlag := f.set.Lookup(f.Name)
var sliceValue cli.IntSlice = *(cli.NewIntSlice(value...))
for _, name := range f.Names() {
underlyingFlag := f.set.Lookup(name)
if underlyingFlag != nil {
underlyingFlag.Value = &sliceValue
}
})
}
}
}
}
Expand All @@ -128,51 +128,61 @@ func (f *IntSliceFlag) ApplyInputSourceValue(context *cli.Context, isc InputSour
// ApplyInputSourceValue applies a Bool value to the flagSet if required
func (f *BoolFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
if f.set != nil {
if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) {
if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVars) {
value, err := isc.Bool(f.BoolFlag.Name)
if err != nil {
return err
}
if value {
eachName(f.Name, func(name string) {
_ = f.set.Set(f.Name, strconv.FormatBool(value))
})
for _, name := range f.Names() {
_ = f.set.Set(name, strconv.FormatBool(value))
}
}
}
}
return nil
}

// ApplyInputSourceValue applies a BoolT value to the flagSet if required
func (f *BoolTFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
// ApplyInputSourceValue applies a String value to the flagSet if required
func (f *StringFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
if f.set != nil {
if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) {
value, err := isc.BoolT(f.BoolTFlag.Name)
if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVars)) {
value, err := isc.String(f.StringFlag.Name)
if err != nil {
return err
}
if !value {
eachName(f.Name, func(name string) {
_ = f.set.Set(f.Name, strconv.FormatBool(value))
})
if value != "" {
for _, name := range f.Names() {
_ = f.set.Set(name, value)
}
}
}
}
return nil
}

// ApplyInputSourceValue applies a String value to the flagSet if required
func (f *StringFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
// ApplyInputSourceValue applies a Path value to the flagSet if required
func (f *PathFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
if f.set != nil {
if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVar)) {
value, err := isc.String(f.StringFlag.Name)
if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVars)) {
value, err := isc.String(f.PathFlag.Name)
if err != nil {
return err
}
if value != "" {
eachName(f.Name, func(name string) {
_ = f.set.Set(f.Name, value)
})
for _, name := range f.Names() {

if !filepath.IsAbs(value) && isc.Source() != "" {
basePathAbs, err := filepath.Abs(isc.Source())
if err != nil {
return err
}

value = filepath.Join(filepath.Dir(basePathAbs), value)
}

_ = f.set.Set(name, value)
}
}
}
}
Expand All @@ -182,15 +192,15 @@ func (f *StringFlag) ApplyInputSourceValue(context *cli.Context, isc InputSource
// ApplyInputSourceValue applies a int value to the flagSet if required
func (f *IntFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
if f.set != nil {
if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVar)) {
if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVars)) {
value, err := isc.Int(f.IntFlag.Name)
if err != nil {
return err
}
if value > 0 {
eachName(f.Name, func(name string) {
_ = f.set.Set(f.Name, strconv.FormatInt(int64(value), 10))
})
for _, name := range f.Names() {
_ = f.set.Set(name, strconv.FormatInt(int64(value), 10))
}
}
}
}
Expand All @@ -200,15 +210,15 @@ func (f *IntFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceCon
// ApplyInputSourceValue applies a Duration value to the flagSet if required
func (f *DurationFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
if f.set != nil {
if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVar)) {
if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVars)) {
value, err := isc.Duration(f.DurationFlag.Name)
if err != nil {
return err
}
if value > 0 {
eachName(f.Name, func(name string) {
_ = f.set.Set(f.Name, value.String())
})
for _, name := range f.Names() {
_ = f.set.Set(name, value.String())
}
}
}
}
Expand All @@ -218,25 +228,24 @@ func (f *DurationFlag) ApplyInputSourceValue(context *cli.Context, isc InputSour
// ApplyInputSourceValue applies a Float64 value to the flagSet if required
func (f *Float64Flag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error {
if f.set != nil {
if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVar)) {
if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVars)) {
value, err := isc.Float64(f.Float64Flag.Name)
if err != nil {
return err
}
if value > 0 {
floatStr := float64ToString(value)
eachName(f.Name, func(name string) {
_ = f.set.Set(f.Name, floatStr)
})
for _, name := range f.Names() {
_ = f.set.Set(name, floatStr)
}
}
}
}
return nil
}

func isEnvVarSet(envVars string) bool {
for _, envVar := range strings.Split(envVars, ",") {
envVar = strings.TrimSpace(envVar)
func isEnvVarSet(envVars []string) bool {
for _, envVar := range envVars {
if _, ok := syscall.Getenv(envVar); ok {
// TODO: Can't use this for bools as
// set means that it was true or false based on
Expand All @@ -251,11 +260,3 @@ func isEnvVarSet(envVars string) bool {
func float64ToString(f float64) string {
return fmt.Sprintf("%v", f)
}

func eachName(longName string, fn func(string)) {
parts := strings.Split(longName, ",")
for _, name := range parts {
name = strings.Trim(name, " ")
fn(name)
}
}