Commit Graph

730 Commits

Author SHA1 Message Date
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
Jesse Szwedko
7a5dacbc41 Merge pull request #560 from mh-cbon/master
Close #558: detect FormattedError and print their stack trace
2016-11-13 13:44:15 -08:00
mh-cbon
b0a8f25773 558: handle multi formatter errors 2016-11-13 22:34:31 +01:00
Jesse Szwedko
af372e8e2a Merge branch 'master' into master 2016-11-12 14:32:21 -08:00
Jesse Szwedko
88ae7af8d4 Merge pull request #563 from urfave/print-help-if-no-action
If no action is specified on the command or app, print the help documentation
2016-11-12 13:49:46 -08:00
Jesse Szwedko
0113f56d10 If no action is specified on the command or app, print the help documentation
Rather than panic'ing or displaying an opaque error message about the
signature which is more confusing to the end user.

Fixes #562
2016-11-12 13:37:07 -08:00
mh-cbon
79591889a9 Close #558: detect FormattedError and print their stack trace 2016-11-05 10:36:23 +01:00
d86a009f5e Merge pull request #556 from urfave/use-assertions-over-reflection
Use type assertions rather than reflection to determine how to call the `Action`
2016-11-02 09:18:01 -04:00
Jesse Szwedko
b377b5d9e9 Use type assertions rather than reflection to determine how to call the Action
This has some benefits, but results in possibly less informative error
messaging; however, given that there are only two accepted types,
I think the error messaging is sufficient.
2016-11-01 20:33:12 -07:00
Jesse Szwedko
3eb41f1bb1 Merge pull request #547 from urfave/default-writer
Default app.Writer to os.Stdout
2016-10-29 18:45:05 -07:00
Jesse Szwedko
61db37e7ae Merge branch 'master' into default-writer 2016-10-29 18:36:19 -07:00
Jesse Szwedko
f614c177b7 Merge pull request #543 from wking/app-description
app: Add App.Description
2016-10-25 21:54:02 -07:00
Jesse Szwedko
b803494208 Merge pull request #542 from mhmxs/patch-1
Display error instead of just say command is incorrect
2016-10-25 21:52:14 -07:00
Richard Kovacs
668cf38bbe Merge branch 'master' into patch-1 2016-10-24 09:45:24 +02:00
W. Trevor King
3c2bce5807 help: Cleanup AppHelpTemplate trailing whitespace
Most of the changes here remove trailing whitespace, but I also add
code to select "AUTHOR" or "AUTHORS" as appropriate instead of the
previous "AUTHOR(S)".  The template for listing with an entry per line
is:

   {{range $index, $entry := pipeline}}{{if $index}}
   {{end}}{{$entry}}{{end}}

That range syntax is discussed in [1].

Also add a unit test, which tests both these whitespace changes and
also the earlier App.Description addition.

[1]: https://golang.org/pkg/text/template/#hdr-Variables
2016-10-22 16:02:21 -07:00
W. Trevor King
0c143a2a26 app: Fix trailing space for Author.String()
This code initially landed with lots of space:

  '{name}  <{email}> '

or:

  '{name} '

in 3d718330 (app, help: add support for multiple authors, 2015-01-31).
The doubled space between the name and email was removed in c6592bb4
(app, help: add backwards compatibility for Authors, 2015-02-21), but
a trailing space remained in both the email and email-less cases.
This commit removes that trailing space.
2016-10-22 15:58:07 -07:00
Jesse Szwedko
6f2647a880 Merge pull request #544 from runcom/sort-flags
flags: sort flags
2016-10-22 10:29:59 -07:00
Jesse Szwedko
64fcd51526 Merge branch 'master' into sort-flags 2016-10-22 10:22:16 -07:00
Jesse Szwedko
3f4989051e Merge pull request #550 from runcom/test-go-1-7
.travis.yml: add go 1.7.x
2016-10-22 09:40:07 -07:00
Antonio Murdaca
d913b71c72
.travis.yml: add go 1.7.x
Signed-off-by: Antonio Murdaca <runcom@redhat.com>
2016-10-21 10:46:51 +02:00
Antonio Murdaca
c516bce8f1
flags: provide a type to sort flags
Signed-off-by: Antonio Murdaca <runcom@redhat.com>
2016-10-21 10:37:18 +02:00
Richard Kovacs
4cc2bad36e Display error instead of just say command is incorrect 2016-10-19 13:31:05 +02:00
Jesse Szwedko
508a23430b Default app.Writer to os.Stdout
As NewApp() does.

Fixes #545
2016-10-18 20:56:31 -07:00
W. Trevor King
c4a46a7df2 app: Add App.Description
So you can describe what the application is for without requiring
users to drill down into a particular command.
2016-10-12 08:06:41 -07:00
Jesse Szwedko
55f715e28c Merge pull request #541 from dotCipher/patch-1
Typo in comments
2016-10-05 20:53:53 -07:00
Cody Moore
6c2c80959b Typo in comments
Typo changing `implents` to `implements`
2016-10-05 11:17:03 -07:00
Jesse Szwedko
d53eb99165 Merge pull request #531 from keloyang/SkipFlagParsing-SkipArgReorder-bugfix
bug fix when SkipFlagParsing is false and SkipArgReorder is true
2016-09-17 14:38:06 -07:00
Shukui Yang
5d108a4435 bug fix when SkipFlagParsing is false and SkipArgReorder is true
Signed-off-by: Shukui Yang <yangshukui@huawei.com>
2016-09-12 21:30:33 +08:00
Jesse Szwedko
61f519fe5e Merge pull request #528 from urfave/backport-no-arg-reordering
Backport no argument reordering as an option
2016-09-11 20:00:11 -07:00
Frances Bar
3df4b71842 Backport no argument reordering as an option
In the unreleased version 2, the argument reordering has been removed
(in f585ec7cb8) since it only worked if
all of the arguments appeared before all of the flags, but not if they
were intermixed which was of limited utility and caused some confusion.
This commit allows enabling of this future behavior via SkipArgReorder.

Ideally we'd support complete intermingling of flags and arguments, but
this is unlikely to happen until we switch flag parsers.

Fixes #515
2016-09-11 12:04:35 -07:00
86b8c43eaf Merge pull request #521 from urfave/update-wording-around-gopkgin
Update wording around gopkg.in pinning to be more accurate
2016-09-11 14:27:17 -04:00
b425397570 Merge branch 'master' into update-wording-around-gopkgin 2016-09-11 11:43:05 -04:00
bf7166a9d7 Merge pull request #527 from urfave/dereference-flag-pointers
Dereference `Flag`s if they are pointers
2016-09-11 11:42:40 -04: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
c723b19a84 Merge pull request #522 from nthnca/typo
Fix typo in README
2016-09-05 07:50:38 -04:00
Nathan Bullock
76164d6e36 Fix typo in README
cosumized -> customized
2016-09-05 07:16:05 -04:00
Jesse Szwedko
4b62cb6b33 Update wording around gopkg.in pinning to be more accurate
Since we have `v1.X` tags, gopkg.in/urfave/cli.v1 will pull the latest
tagged release rather than the `v1` branch. Since there are no tagged
`v2` releases, `gopkg.in` will pull the latest commit of that branch.

Fixes #513
2016-09-03 14:23:36 -07:00
Jesse Szwedko
df95e0708f Manually set import in altsrc flag generation
Otherwise `goimports` switches it to `github.com/urfave/cli`
2016-09-03 14:22:45 -07:00
Jesse Szwedko
33bb4c1213 Merge pull request #511 from grubernaut/f-update-altsrc-import-v1
Fix import paths in altsrc
2016-08-28 13:23:14 -07:00
Jake Champlin
c75c862386
Fix import paths in altsrc
Uses gopkg.in as the import path for the `altsrc` package.

Fixes: #473
2016-08-27 19:09:14 -04:00
05fe449c81 Merge pull request #508 from urfave/remove-end-user-deprecation-warnings
remove the possiblity of end-user's seeing deprecation warnings
2016-08-23 11:25:51 -04:00
2506863832 Merge branch 'master' into remove-end-user-deprecation-warnings 2016-08-22 17:49:40 -04:00
207bb61852 Merge pull request #510 from urfave/skip-gfmrun-below-go1.3
Skip gfmrun installation and tests below go1.3
2016-08-22 15:54:13 -04:00
Dan Buch
c0cf41eb54
Skip gfmrun installation and tests below go1.3 2016-08-22 15:26:33 -04:00
Jesse Szwedko
a5ca09a934 fixup! remove the possiblity of end-user's seeing deprecation warnings 2016-08-21 14:06:59 -07:00
Jesse Szwedko
8e6aa34a12 remove the possiblity of end-user's seeing deprecation warnings
Instead use deprecation pattern described in
https://blog.golang.org/godoc-documenting-go-code.

Fixes #507
2016-08-21 13:51:55 -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
d60469024a Merge pull request #502 from urfave/fix-is-set-for-env
Fix context.(Global)IsSet to respect environment variables
2016-07-31 23:06:54 -04: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