Commit graph

51 commits

Author SHA1 Message Date
Eric Paris
2188acea42 Check that arguments are in ValidArgs
If a command defined cmd.ValidArgs check that the argument is actually
in ValidArgs and fail if it is not.
2015-06-30 09:43:56 -04:00
Eric Paris
143ebcd4ee Allow commands to explicitly state if they do, or do not take arbitrary arguments 2015-06-30 09:43:55 -04:00
Eric Paris
9a9d01c9ec Better error message
Calling `cobra-test echo times one two turkey` where `one` and `two` are
valid arguments but `turkey` is not now results in.

Error: invalid argument "turkey" for "cobra-test echo times"
Run 'cobra-test echo times --help' for usage.
2015-06-29 17:09:41 -04:00
Eric Paris
0a7a850026 Make error handling more obvious
Again, the code looks a little more like a middle-schooler's code. But
that just makes it easier to understand and maintain.
2015-06-29 15:45:01 -04:00
Eric Paris
07ad27d239 Handle grand children with the same name as the root
This fixes a problem where if you had a root command and a grand child
with the same name, the parser would break and would not run the
grandchild. The code was special casing if the immediate child had the
same name, but didn't handle grand-children
2015-06-22 17:54:08 -04:00
Simone Gotti
fb86c5c559 Correctly print the unknown command name
by now, if someone calls: `program --validflag unknowncommand` the
output will be:

```
Error: unknown command "--validflag"
Run 'program help' for usage.
```

This patch strips out flags so the unknown command is printed:

```
Error: unknown command "unknowncommand"
Run 'program help' for usage.
```
2015-06-22 11:02:06 +02:00
Anastasis Andronidis
d910a04b50 Add Global Normalization Function
[close #110]
2015-05-19 10:23:16 -04:00
Sam Ghods
e0f326dabc Fix root command without subcommands but with arguments
[close #108]
2015-05-19 10:22:07 -04:00
bep
be18870136 Fix two failing tests
The error message has changed ever so slightly.
2015-05-13 11:54:47 +02:00
Anastasis Andronidis
799a8ef863 Test for Persistent-Run propagation 2015-05-04 17:57:46 +02:00
Eric Paris
fad5931693 Add docs, tests, and bit of rearrainging... 2015-04-30 14:08:47 -04:00
Eric Paris
c3e48f996d Deprecated subcommands
They should still work, but shouldn't show up in help or usage output
2015-04-29 13:08:20 -04:00
deads2k
36aee64abe prevent removal of valid arguments 2015-04-28 07:58:26 -04:00
Eric Paris
8a18f25809 Auto generation of markdown docs!
An example from the kubernetes project, for the `kubectl config`
command, which as subcommands, and flags, and all sorts of stuff, it
will generate markdown like so:

config modifies .kubeconfig files

config modifies .kubeconfig files using subcommands like "kubectl config set current-context my-context"

```
kubectl config SUBCOMMAND
```

```
      --envvar=false: use the .kubeconfig from $KUBECONFIG
      --global=false: use the .kubeconfig from /home/username
  -h, --help=false: help for config
      --kubeconfig="": use a particular .kubeconfig file
      --local=false: use the .kubeconfig in the current directory
```

```
      --alsologtostderr=false: log to standard error as well as files
      --api-version="": The API version to use when talking to the server
  -a, --auth-path="": Path to the auth info file. If missing, prompt the user. Only used if using https.
      --certificate-authority="": Path to a cert. file for the certificate authority.
      --client-certificate="": Path to a client key file for TLS.
      --client-key="": Path to a client key file for TLS.
      --cluster="": The name of the kubeconfig cluster to use
      --context="": The name of the kubeconfig context to use
      --insecure-skip-tls-verify=false: If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure.
      --log_backtrace_at=:0: when logging hits line file:N, emit a stack trace
      --log_dir=: If non-empty, write log files in this directory
      --log_flush_frequency=5s: Maximum number of seconds between log flushes
      --logtostderr=true: log to standard error instead of files
      --match-server-version=false: Require server version to match client version
      --namespace="": If present, the namespace scope for this CLI request.
      --password="": Password for basic authentication to the API server.
  -s, --server="": The address and port of the Kubernetes API server
      --stderrthreshold=2: logs at or above this threshold go to stderr
      --token="": Bearer token for authentication to the API server.
      --user="": The name of the kubeconfig user to use
      --username="": Username for basic authentication to the API server.
      --v=0: log level for V logs
      --validate=false: If true, use a schema to validate the input before sending it
      --vmodule=: comma-separated list of pattern=N settings for file-filtered logging
```

* [kubectl](kubectl.md)	 - kubectl controls the Kubernetes cluster manager
* [kubectl config set](kubectl_config_set.md)	 - Sets an individual value in a .kubeconfig file
* [kubectl config set-cluster](kubectl_config_set-cluster.md)	 - Sets a cluster entry in .kubeconfig
* [kubectl config set-context](kubectl_config_set-context.md)	 - Sets a context entry in .kubeconfig
* [kubectl config set-credentials](kubectl_config_set-credentials.md)	 - Sets a user entry in .kubeconfig
* [kubectl config unset](kubectl_config_unset.md)	 - Unsets an individual value in a .kubeconfig file
* [kubectl config use-context](kubectl_config_use-context.md)	 - Sets the current-context in a .kubeconfig file
* [kubectl config view](kubectl_config_view.md)	 - displays merged .kubeconfig settings or a specified .kubeconfig file.
2015-04-12 14:40:34 -04:00
Eric Paris
b78326bb16 Merge pull request #88 from eparis/subhelptest
Add tests about additional help topics
2015-04-07 18:26:15 -05:00
Eric Paris
86a16864ea Add tests about additional help topics 2015-04-07 16:17:22 -04:00
Eric Paris
9692856020 print line number in go test failures 2015-04-07 15:56:01 -04:00
Eric Paris
0ea881ce45 Merge pull request #60 from dohzya/remove-command
Add Command's RemoveCommand method
2015-04-06 15:18:42 -05:00
Eric Paris
fe581720ad New tests (they don't all pass) 2015-04-06 15:42:01 -04:00
Adam Mckaig
2c370cd936 Fix redundant error for unknown root command 2015-04-03 01:07:34 -04:00
Jeff Lowdermilk
79bd93d369 Add test for persistent bool flag on subcommand 2015-03-23 14:42:59 -07:00
Étienne Vallette d'Osia
5b56110fb0 Add tests for RemoveCommand 2015-03-13 16:30:33 +09:00
Brendan Burns
2cb625eda3 Remove some wonky error handling, as upstream seems correct now.
Also, it's buggy for nested commands.
2015-03-12 22:37:48 -04:00
Jeff Lowdermilk
5c9146990b Explicitly support local flags overwriting persistent/inherited flags
The current (desired) behavior when a Command specifies a flag that
has the same name as a persistent/inherited flag, is that the local
definition takes precedence. This change updates the various
Flag subset functions to respect that behavior:
* LocalFlags: now returns only the set of flags and persistent flags
  attached to the Command itself.
* InheritedFlags: now returns only the set of persistent flags inherited
  from the Command's parent(s), excluding any that are overwritten by a
  local flag.
* NonInheritedFlags: changed to an alias of LocalFlags.
* AllPersistentFlags: removed as not very useful; it returned the set
  of all persistent flags attached to the Command and its parent(s).

Default UsageTemplate updated to use LocalFlags and InheritedFlags
2015-03-12 16:41:00 -07:00
Masahiro Sano
a16cb24999 help displays command names instead of usage in Available Commands 2015-02-17 13:50:09 -05:00
Kartik Singhal
bd75ea1d19 Updated test corresponding to #49 2015-02-11 17:17:28 -05:00
Clayton Coleman
9b6c92647a When no subcommands are registered, omit command help output
For a single root command with a Run method, the help output still
contains 'help [command]' as a subcommand (because Help is always
added). Since the only subcommand would be 'help', the help is better
off omitted.

This change allows a command to be used both as a subcommand
or a root command without having to define a custom help that elides
the help command when no subcommands are added.  Instead, the default
help command is only added when subcommands are present.
2014-11-11 23:43:27 -05:00
spf13
b1e90a7943 Making prefix matching opt in. 2014-10-07 16:15:19 -04:00
spf13
c2c23ac0bd adding support for prefix matching against aliases & names 2014-10-07 15:41:19 -04:00
Sam Ghods
881657297e Replace prefix matching with aliases 2014-10-07 15:22:14 -04:00
spf13
10a8494a87 Support for flags before commands 2014-06-17 12:32:27 -04:00
spf13
07be8145cc Adding support for --help 2014-06-17 12:28:42 -04:00
spf13
3e874b31b7 Test confirming fixed #11 2014-06-13 20:45:55 -04:00
spf13
71bb1dfdcd Cobra behavior is now more consistent. Invalid flags cause Usage to be printed. 2014-06-13 20:00:56 -04:00
tummychow
667c348dbd Test behavior for subcommand with same name as root command
If, for some reason, you have an application with some name "foo", and your
app has a subcommand "foo", cobra should behave properly when you call
"foo foo", and it should also behave if you call "foo f".

These changes verify both of these cases and ensure cobra responds properly.
2014-03-26 16:19:34 -04:00
tummychow
4c29b190e0 Add basic test for prefix matching 2014-03-26 05:12:48 -04:00
tummychow
96d543cf2c Reset root command lists in testing
This fixes some issues that appear when testing prefix invocations. Since the
root command lists weren't being cleared, the list would persist between
tests, so there would be multiple instances of each command. Then, if you
tried to match a prefix of one of those commands, you'd get two matches (one
for each instance) and the command would fail.

Resetting the root command lists prevents them from persisting between tests,
resolving this issue.
2014-03-26 05:12:48 -04:00
spf13
2f19d3c266 Added test for (fixed) bug in upstream library pflag 2013-11-05 19:50:47 -05:00
spf13
79bdde5f6c Refactored code to eliminate need for a commander. Much simpler interface now. 2013-11-01 18:36:24 -04:00
spf13
a2845e7f7a fixed spf13/cobra#1 spf13/hugo#88 2013-09-30 21:54:46 -04:00
spf13
6b3d2f2e9a Shorter message when invalid flags provided 2013-09-29 02:01:56 -04:00
spf13
0556e5fbf9 Moving cobra_test into package cobra for easier testing 2013-09-24 17:04:00 -04:00
spf13
fb2146e9e5 Add support for help command 2013-09-24 16:03:22 -04:00
spf13
68f3c66d07 Proper handling of flag error messages. Fixing test that wasn't passing. 2013-09-24 13:15:30 -04:00
spf13
57fc2cb534 Support and test for custom output. 2013-09-24 12:12:32 -04:00
spf13
8858462331 Add decent usage message 2013-09-12 10:37:35 -04:00
spf13
c5eb49e3f5 Add better persistent flags testing 2013-09-10 18:26:46 -04:00
spf13
3f47f33e39 Testing when given missing flag 2013-09-04 11:32:51 -04:00
spf13
c568b575aa Better testing support. Easy to reset to blank slate in tests. 2013-09-04 11:32:51 -04:00
spf13
1be06e4e1a Adding a separate command as a run value. 2013-09-03 19:04:50 -04:00