The currently used idiom for handling key specific subcompletions
did not work here: behind `docker event -f type=network `, the completion
of networks triggered. The expected behaviour is not to complete
anything here.
In order to limit the scope of the corresponding PR, the new idiom is
currently only used in `docker events --filter`.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: ab01b6f38578a97546a4d7bfaa305ef33ea96e63
Component: engine
The new names make it easier to distinguish between helper functions and
functions that actually perform completion by modifying the global COMPOPT
variable.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: e715daab3d531725dc4faef2265337d133bd16bc
Component: engine
`docker network` is the second command with subcommands.
This refactoring pulls out parsing and processing of subcommands
from `docker volume` completion and thus makes its logic available
for other commands.
Also enables `__docker_pos_first_nonflag` for subcommand completion.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: e4bf5cff49a152794b924d9cf4d6cee605f2d73a
Component: engine
The shell builtin `compopt` is not available on the outdated bash
version 3.2.57 that ships with Mac OS.
It is used in Docker's bash completion to suppress trailing spaces
in advanced completions of hash map options, e.g. `--log-opt`.
If `compopt` is not available, the new behavior is to do nothing,
i.e. the user will have to delete the additional space.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 9d8f9943e99b87aa637921bbf582a767cbab6cf1
Component: engine
For both commands, volume is _not_ optional. Several volumes may
be specified.
Both commands now use the same name (VOLUME) for the command argument.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 00eaa7e1f53d9100e95af80d8a05f8e77e380464
Component: engine
This option was incorrectly ported to the new `daemon` subcommand
structure.
Beside the obvious effect that completion of `docker daemon --log-opt`
did not work, this also caused completion of `docker` and `docker xxx`
to fail on macs with
> bash: words: bad array subscript
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 18381faee685c6d28dd7438a183bf7a441e8c9a1
Component: engine
Also fixed sort order of options using `sort -d`
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 644c158837b043113a689cab765997feb2e507a7
Component: engine
All docker subcommands support `-h` as an alias for `--help`
unless they have `-h` aliased to something else like `docker run`,
which uses `-h` for `--hostname`.
`-h` is not included in the help messages of the commands, though.
It ist visible in
* reference: only in `docker daemon` reference,
see output of `grep -Rse --help=false docs`
* man pages: only in `docker` man page
see output of `grep -RF '**-h**' man`
For consistency reasons, this commit removes `-h` as an alias for
`--help` from the reference page, man page and the bash completion.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: ceb11d966034f4b4308abf4fc2826b4c840b6e99
Component: engine
The custom configuration will also be used in docker invocations made
by the completion script itself, just like `-H`.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: b898111d3aac00305e93cec15c5ba8fe8decd0a1
Component: engine
Completion now filters the images and containers by given
`--type`.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 69cde5a3024b04a59125512ebe9c504ebea2c1ac
Component: engine
Without this fix, `docker -l info ` would not complete the commands.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: aab82c5c2230fa328bfac3c156b482634a42b73c
Component: engine
It's a bit confusing: the "global options" are valid as "global options"
for all client commands (i.e. all but daemon).
Example: `docker --log-level info run`
For `docker daemon`, these "global options" are only valid as "command
options".
Example: `docker daemon --log-level info`
As command completion cannot tell which command the user is going to
type next, completion for the daemon command has to allow illegal
syntaxes like
`docker --log-level info daemon --log-level info`
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: e0dad9a153fb8aad44cc36aa4bd14e297b5f120c
Component: engine
Without this fix, `docker --log-opt ` would not complete anything
because the completions were driver specific.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: de40f3997a7aae94e925d8f694e2161b1b1b92bb
Component: engine
Without this fix, `docker --log-driver fluentd --log-opt fluentd-tag=b`
would complete `b` to `build`.
Completion of the commands has to be nailed to __docker_pos_first_nonflag
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 6de8dd1a6e37ea6ef04d779c6348452c1a3c2370
Component: engine
This solves several problems that arise from the special treatment of
"=" in Bash.
The fix was required as some log drivers have options in a key=value
form. It also addresses the --option=value and the negated boolean syntax
(--boolean=false).
Note that this is not a general fix for these problems, it is limited to
the __docker_pos_first_nonflag function.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 38acec94c49e6730ae6bdef86b85f529c1dddda6
Component: engine
Installs and configures bash completion for Docker.
Note that bash completion still has to be initialized by a custom
.bashrc file.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: e8edcf47b4b495070a3a3db7b2faeef91adf83f9
Component: engine
This is a follow-up on PR 11708, as suggested by tianon.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: a09cc935c3531e0132640f0fe258041f1b445fdc
Component: engine
The previous state assumed that the HOSTPATH argument referred to a
file. As clarified by moxiegirl in PR #11305, it is a directory.
Adjusted completion to reflect this.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 418b7a9abbb31c4aa226931edfaa626f251cc00c
Component: engine
Implementing the deamon flags the traditional way introduced even more
redundancy than usual because the same list of options with flags
had to be added twice.
This can be avoided by using variables in the case statements when
using the extglob shell option.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 4bb113f24e1ea12ab7ab9ddfe0508e4f833445e5
Component: engine
This introduces a sort order for options:
Arrange options sorted alphabetically by long name with the short
options immediately following their corresponding long form.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 70161b4d45ec990a4e597e133092e389e168ad79
Component: engine
_docker_run and _docker_create had only one differing line.
This refactoring features:
- direct completion for both commands to the same function
- factor out the common arguments, sort & format them nicely
- compute the argument for _docker_pos_first_nonflag.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: 46b104bd3977c4777b0d99ba6c190f37ae780245
Component: engine
The -n and --networking options were removed because they are
unsupported.
Bash completion should not reveal the existence of otherwise
undocumented unsupported options.
Signed-off-by: Harald Albers <github@albersweb.de>
Upstream-commit: eac9f2e5c4fa47b0ef1e064ac2bc62be6f3a3c99
Component: engine