This patch introduces a new experimental engine-level plugin management
with a new API and command line. Plugins can be distributed via a Docker
registry, and their lifecycle is managed by the engine.
This makes plugins a first-class construct.
For more background, have a look at issue #20363.
Documentation is in a separate commit. If you want to understand how the
new plugin system works, you can start by reading the documentation.
Note: backwards compatibility with existing plugins is maintained,
albeit they won't benefit from the advantages of the new system.
Signed-off-by: Tibor Vass <tibor@docker.com>
Signed-off-by: Anusha Ragunathan <anusha@docker.com>
Upstream-commit: 11c8c6c8fc
Component: cli
22 lines
479 B
Go
22 lines
479 B
Go
package cli
|
|
|
|
import "bytes"
|
|
|
|
// Errors is a list of errors.
|
|
// Useful in a loop if you don't want to return the error right away and you want to display after the loop,
|
|
// all the errors that happened during the loop.
|
|
type Errors []error
|
|
|
|
func (errs Errors) Error() string {
|
|
if len(errs) < 1 {
|
|
return ""
|
|
}
|
|
var buf bytes.Buffer
|
|
buf.WriteString(errs[0].Error())
|
|
for _, err := range errs[1:] {
|
|
buf.WriteString(", ")
|
|
buf.WriteString(err.Error())
|
|
}
|
|
return buf.String()
|
|
}
|