Go to file
Ian Campbell 3af168c7df Ensure plugins can use PersistentPreRunE again.
I got a bit carried away in d4ced2ef77 ("allow plugins to have argument
which match a top-level flag.") and broke the ability of a plugin to use the
`PersistentPreRun(E)` hook on its top-level command (by unconditionally
overwriting it) and also broke the plugin framework if a plugin's subcommand
used those hooks (because they would shadow the root one). This could result in
either `dockerCli.Client()` returning `nil` or whatever initialisation the
plugin hoped to do not occuring.

This change revert the relevant bits and reinstates the requirement that a
plugin calls `plugin.PersistentPreRunE` if it uses that hook itself.

It is at least a bit nicer now since we avoid the need for the global struct
since the interesting state is now encapsulated in `tcmd` (and the closure).

In principal this could be done even more simply (by calling `tcmd.Initialize`
statically between `tcmd.HandleGlobalFlags` and `cmd.Execute`) however this has
the downside of _always_ initialising the cli (and therefore dialing the
daemon) even for the `docker-cli-plugin-metadata` command but also for the
`help foo` and `foo --help` commands (Cobra short-circuits the hooks in this
case).

Signed-off-by: Ian Campbell <ijc@docker.com>
2019-03-14 14:29:09 +00:00
2019-01-10 17:32:07 +01:00
2019-02-26 15:12:52 +01:00
2018-12-29 01:39:54 +01:00
2019-02-02 13:30:55 +01:00
2019-01-24 20:24:45 +01:00
2019-02-26 15:12:52 +01:00
2018-06-08 18:24:26 +02:00
2018-06-08 18:24:26 +02:00
2018-10-02 20:52:34 +02:00
2017-09-27 16:45:35 +02:00
2019-02-04 08:25:01 +01:00
2019-02-04 08:25:01 +01:00
2018-01-03 10:23:32 +01:00
2017-07-28 11:33:19 -07:00
2017-08-16 10:46:43 -04:00
2017-04-17 17:49:33 -04:00
2017-04-17 17:49:33 -04:00
2017-09-15 15:08:28 +02:00
2018-09-11 13:06:49 +02:00

build status Build Status

docker/cli

This repository is the home of the cli used in the Docker CE and Docker EE products.

Development

docker/cli is developed using Docker.

Build a linux binary:

$ make -f docker.Makefile binary

Build binaries for all supported platforms:

$ make -f docker.Makefile cross

Run all linting:

$ make -f docker.Makefile lint

List all the available targets:

$ make help

In-container development environment

Start an interactive development environment:

$ make -f docker.Makefile shell

In the development environment you can run many tasks, including build binaries:

$ make binary

Legal

Brought to you courtesy of our legal counsel. For more context, please see the NOTICE document in this repo.

Use and transfer of Docker may be subject to certain restrictions by the United States and other governments.

It is your responsibility to ensure that your use and/or transfer does not violate applicable laws.

For more information, please see https://www.bis.doc.gov

Licensing

docker/cli is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Description
No description provided
Readme 310 MiB
Languages
Go 92%
Shell 5.5%
Dockerfile 1.1%
Go-Checksums 0.9%
Makefile 0.3%
Other 0.2%