Commit Graph

82 Commits

Author SHA1 Message Date
Ajitem Sahasrabuddhe 1547ac2f6a Modify variable names 2019-09-11 14:15:20 +05:30
Ajitem Sahasrabuddhe cbb9e015b8 Improve Code and Add Test Case 2019-09-11 09:21:45 +05:30
Ajitem Sahasrabuddhe 7d6a604106 Fix #878 2019-09-11 08:59:51 +05:30
Ajitem Sahasrabuddhe fdba7e0f8c linter fixes
code cleanup
changing some test code to ensure uniformity
2019-08-07 20:14:50 +05:30
Lynn Cyrin 38f9e1622d add environment variable support 🎉 2019-08-01 22:52:21 -07:00
Lynn Cyrin f21b22dd90 cleanup some issues with error display 2019-08-01 22:10:18 -07:00
Lynn Cyrin 78db152323 add typed error assertions 2019-08-01 21:35:15 -07:00
Lynn Cyrin 01d5cfab70 use strings.Join 2019-07-17 00:20:44 -07:00
Lynn Cyrin cdc7af744e add handling for multiple required flags 2019-07-17 00:16:40 -07:00
Lynn Cyrin 9293f5b3cc visually shorten logic 2019-07-14 21:00:16 -07:00
Lynn Cyrin 746866c10d add update integration with the help output 2019-07-13 03:44:39 -07:00
Lynn Cyrin f6777bf4bf quote the flag name 2019-07-13 01:03:46 -07:00
Lynn Cyrin 6a2ae78373 backwards compatible RequiredFlag implementation 2019-07-11 21:53:10 -07:00
Lynn Cyrin af627c73c3 update func name 2019-07-11 20:34:17 -07:00
Lynn Cyrin 138dbaafec Merge branch 'master' into required_flags 2019-07-11 20:07:55 -07:00
Brad Rydzewski 21fcab0dee ability to load variable from file 2017-10-31 10:29:11 -05:00
Sebastian Sprenger 67ee172e6d fix misspelling issue 2017-10-06 07:28:18 +02:00
Péter Szilágyi acc622e5fb Invalidate context.setFlags cache on modification. 2017-01-11 14:38:54 +02:00
Joshua Rubin 2da42640ad Merge remote-tracking branch 'origin/master' into completion_fix 2016-11-18 09:28:39 -07:00
Joshua Rubin 8dd1962f7b change "complete" to "shellComplete" 2016-11-14 09:35:22 -07:00
Jesse Szwedko e367fafa3d Return an error when parsing environment variables for values fails
Currently cli silently (aside from IntSlice and Int64Slice which oddly
printed directly to the error stream) ignores failures that occur when
parsing environment variables for their value for flags that define
environment variables. Instead, we should propogate up the error to the
user.

This is accomplished in a backwards compatible manner by adding a new,
internal, interface which defines an applyWithError function that all
flags here define. In v2, when we can modify the interface, we can drop
this secondary interface and modify `Apply` to return an error.
2016-11-13 14:59:35 -08:00
Jesse Szwedko a00c3f5872 Consider empty environment variables as set
When assigning values to flags (also when interogatting via
`context.(Global)IsSet`.

For boolean flags, consider empty as `false`.

Using `syscall.Getenv` rather than `os.LookupEnv` in order to support
older Golang versions.
2016-11-13 14:59:27 -08:00
Joshua Rubin ea3df26e64 make shell autocomplete more robust 2016-11-04 14:56:28 -06:00
Jesse Szwedko e7b1833f53 Dereference Flags if they are pointers
When checking if environment variables are set.

We don't support pointer flags currently (though this is the default in
the `v2` branch), but this fixes #516
2016-09-08 21:10:46 -07:00
Jesse Szwedko 168c95418e Ensure that EnvVar struct field exists before interrogating it
Otherwise you end up with `<invalid Value>` which, in practice, would
probably work, but this is cleaner.
2016-07-31 20:11:16 -07:00
Jesse Szwedko 6c1f51aa95 Fix context.(Global)IsSet to respect environment variables
This appeared to be the least messy approach to hack in support for
IsSet also checking environment variables to see if a particular
cli.Flag was set without making backwards incompatible changes to the
interface.

I intend to fix this more properly in v2, probably by adding another
method to the cli.Flag interface to push the responsibility down as it
occurred to me that it was really the `Flag`s themselves that offer
support for configuration via the environment as opposed to the
`context` or other supporting structures. This opens the door for the
anything implementing the `Flag` interface to have additional sources of
input while still supporting `context.IsSet`.
2016-07-31 14:14:46 -07:00
Dan Buch 77f1130e65 Generate flag type lookup funcs 2016-07-10 12:50:57 -04:00
Dan Buch 6185b8d8fd Generate code for flag types and context accessors 2016-06-23 00:56:44 -04:00
Dan Buch a0e694ed72 Add UintFlag, Uint64Flag types and supporting code 2016-06-16 11:13:32 -04:00
Bruno França dos Reis 5c7cca7f16 Adding Int64Slice related stuff in flag.go and context.go, and related tests 2016-06-11 21:54:33 -07:00
Bruno França dos Reis 80d3d863d9 Adding Int64 and GlobalInt64 in context, plus related tests 2016-06-11 15:41:24 -07:00
Matt Farina 2f110bd745 Cleaned up exported func comments per golint 2016-05-09 10:12:59 -04:00
Jesse Szwedko e3ace79a91 Add GlobalBoolT
Fixes #206
2016-05-07 16:11:26 -07:00
Dan Buch f3b589e892 Remove unreachable code 2016-04-30 12:22:32 -04:00
Dan Buch e059dc8188 Implement *Context.GlobalSet + relevant CHANGELOG entry 2016-04-30 11:46:47 -04:00
Dan Buch 4edb5c9a6b Merge branch 'bryanl-set-context-values' of https://github.com/bryanl/cli into bryanl-bryanl-set-context-values 2016-04-30 11:25:05 -04:00
Dan Buch bd0f13d022 Add Context.GlobalFloat64 plus tests
Closes #362
2016-04-28 13:03:25 -04:00
Omer Murat Yildirim 802f64479d Add NArg method to context structure 2016-02-21 15:57:11 +02:00
Jille Timmermans f101a00018 Export cli.Flag.GetName (previously cli.Flag.getName) 2015-12-15 17:29:03 +00:00
Fabian Ruff a2d4ae5939 Fix global flags processing on top level
This fixes a regression introduced by #227. When looking up global flags by walking up the parent context's we need to consider the special case when we are starting at the very top and there is no parent context to start the traversal.

Fixes #252
2015-06-29 23:20:27 +02:00
Brian Goff 15e6b2fcc7 Add func to get context parent
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2015-06-19 17:06:04 -04:00
bryanl a3b93076ff Allow context value to be set after parse
This change allows a context value to be set after parsing. The use case is updating default settings in a Before func.

An example usage:

```
		f, err := os.Open(configPath)
		if err == nil {
			config, err := docli.NewConfig(f)
			if err != nil {
                       panic(err)
			}

			c.Set("token", config.APIKey)
		}
```
2015-06-08 16:21:26 -04:00
Fabian Ruff 65d50017d4 search context hierachy for global flags 2015-05-18 23:21:33 +02:00
Ravi Gadde bcec9b08c7 Added an API and test case for number of flags set 2015-03-10 17:18:12 -07:00
jhowarth 145da3210f don't require flags when the help flag is included 2015-03-02 12:06:42 -08:00
Jesse Howarth and Michael Ivey 7e05320026 Implement required flags 2014-12-02 17:44:55 +00:00
Jeremy Saenz 0cd0f1a3ae Merge pull request #143 from artnez/master
Add Context.GlobalFlagNames()
2014-11-23 13:40:04 -08:00
Jesse Howarth b490b5e35d Add a function to determine if a global flag is set. 2014-11-11 12:48:07 -08:00
Artem Nezvigin 6db418e461 Add Context.GlobalFlagNames() 2014-10-02 15:17:57 -07:00
Ghislain Gt 98af61a59f Add time.Duration flag type 2014-08-02 22:32:32 +01:00