| Age | Commit message (Collapse) | Author |
|
|
|
See https://github.com/spf13/cobra/issues/27#issuecomment-294690084
|
|
|
|
|
|
|
|
|
|
In some cases "exists" is better to understand
|
|
Cache sorted flags
|
|
Removed unused field "exitOnError".
|
|
Change `ogier` to `spf13` in docs and README
|
|
As you can't delete flags in FlagSet, this method works
Gainful performance improvement:
benchmark old ns/op new ns/op delta
BenchmarkVisitAll10Flags-4 1549 33.9 -97.81%
BenchmarkVisit10Flags-4 1704 34.2 -97.99%
benchmark old allocs new allocs delta
BenchmarkVisitAll10Flags-4 3 0 -100.00%
BenchmarkVisit10Flags-4 3 0 -100.00%
benchmark old bytes new bytes delta
BenchmarkVisitAll10Flags-4 272 0 -100.00%
BenchmarkVisit10Flags-4 272 0 -100.00%
|
|
Fix #120
|
|
|
|
Fixes https://github.com/spf13/cobra/issues/316
|
|
|
|
This will allow applications to provide better help text without feeling
constrained by how it will wrap even on 80 column displays etc. This has been a
factor in tickets such as https://github.com/docker/docker/issues/18797.
The basic wrapping algorithm is rather simplistic, it will look for the last
whitespace (space or tab) before the given column and wrap there, indenting the
continuation lines to match the usage text (i.e. aligned after the flag names
themselves), e.g. when applied to `docker ps` wrapping at 70 columns (fairly
narrow):
Options:
[...]
-f, --filter filter Filter output based on conditions provided
[...]
-n, --last int Show n last created containers
(includes all states) (default -1)
-l, --latest Show the latest created container
(includes all states)
There are two main tweaks to this basic algorithm, first is to actually try and
wrap to a soft limit 5 columns less than requested but allow the line to take
up the full hard width if that prevents pushing a short word at the end of the
string to the next line which looks odd, particuarly for usage which ends with
"(default [])" and wraps the "[])" to the last line.
Second if the display is too narrow, meaning after indentation for the flag
names there is less than 24 columns allowed for the help text (24 chosen just
by my eye and what I thought looked odd) then it will start the help text on
the next line indented to the 16th column (16 chosen so as not to align with
the first character of either the short of long flag name as 8 would, since
that looked strange to me), e.g. wrapping the above example to a rather narrow
45 columns:
Options:
[...]
-f, --filter filter
Filter output based on
conditions provided
[...]
-n, --last int
Show n last created
containers (includes
all states) (default -1)
-l, --latest
Show the latest
created container
(includes all states)
If even with starting the help on the next line there is still less than 24
characters of space available for the help text (implying columns < 24 + 16 ==
40) just give up and return the unwrapped version (same as before this change).
Signed-off-by: Ian Campbell <[email protected]>,
|
|
Clean up code
|
|
We basically want to allow callers to use our command line parser. There
is a user who wants to log the command line, but they don't want to log
"sensitive" flags. This allows that user to parse the command line and
get each flag. They can use information in the flag to write their own
printer.
|
|
|
|
default is set.
Signed-off-by: Daniel Nephin <[email protected]>
|
|
Signed-off-by: Daniel Nephin <[email protected]>
|
|
|
|
Fallback to the original default detection logic if we have an unknown
type.
Fixes #91
|
|
|
|
In Go 1.7 the default value for a time.Duration will change from "0" to
"0s". This commit replaces the simplistic `isZeroValue` with a more
intelligent implementation that checks for zero values based
upon the specific type of the flag.
|
|
Now in usage shows flag.Value.Type() instead of flag.Value.(type), what makes library more flexible
|
|
|
|
|
|
With the hidden and deprecated fields, it is useful to be able
to ask if a flagset has any non-hdden, non-deprecated flags.
One example of this is to aid in writing help templates.
|
|
Compare to 1.4, the main difference in formatting is
the placement of default values. Moreover, UnquoteUsage()
is now added (and exported, for full API compatibility
with the standard flag package), so backtick words in
usage messages can be used to set the placeholder name.
Compared to the standard flag package, this patch
always prints usage in one-line, with automatic
alignment, because I feel that the 1.4 output is very
confusing when modified to include also dash-dash flags.
|
|
|
|
This allows a program to know what args came before the -- and what args
came after.
|
|
removing some c/p left-overs from the MarkPrivate function, and updating the comment slightly
changed field from Private to Hidden. Added documentation w/example to README.md. Added testing to confirm hidden flags
updating test message
|
|
|
|
This function allows one to create a different FlagSets and then easily
merge them together.
|
|
This makes things easier to read/understand and it also means that users
who declare their own flags and call them "string" will get quotes as
well.
|
|
Fix up minor things found by goreportcard.com
|
|
They both did the same thing. So use one in the other.
|
|
|
|
|
|
A lot easier than having to do it in the user over and over and over.
|
|
|
|
|
|
|
|
Add new FlagSet.Get{Int,String,...} accessor functions
|
|
|
|
If I declared a bool flag named "hello" I can now call
b, err := f.GetBool("hello")
And b will hold the value of the flag
We can see this is already done in
https://github.com/codegangsta/cli/blob/bcec9b08c7e5564f7512ad7e7b03778fe1923116/context.go
If people use the codegangsta/cli
Other projects have done it themselves using pflags (what inspired this
patch)
https://github.com/GoogleCloudPlatform/kubernetes/blob/cd817aebd848facda29e0befbbd6e31bf22402e6/pkg/kubectl/cmd/util/helpers.go#L176
Lets just do it ourselves...
|
|
|
|
|
|
|