mirror of
https://github.com/docker/compose.git
synced 2025-07-08 22:34:26 +02:00
Add completion to "compose ps"
Signed-off-by: Ulysses Souza <ulyssessouza@gmail.com>
This commit is contained in:
parent
3174f49dc2
commit
37961c51ca
21
cli/main.go
21
cli/main.go
@ -68,6 +68,9 @@ var (
|
|||||||
"serve": {},
|
"serve": {},
|
||||||
"version": {},
|
"version": {},
|
||||||
"backend-metadata": {},
|
"backend-metadata": {},
|
||||||
|
// Special hidden commands used by cobra for completion
|
||||||
|
"__complete": {},
|
||||||
|
"__completeNoDesc": {},
|
||||||
}
|
}
|
||||||
unknownCommandRegexp = regexp.MustCompile(`unknown docker command: "([^"]*)"`)
|
unknownCommandRegexp = regexp.MustCompile(`unknown docker command: "([^"]*)"`)
|
||||||
)
|
)
|
||||||
@ -167,7 +170,7 @@ func main() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// populate the opts with the global flags
|
// populate the opts with the global flags
|
||||||
flags.Parse(os.Args[1:]) //nolint: errcheck
|
flags.Parse(os.Args[1:]) // nolint: errcheck
|
||||||
|
|
||||||
level, err := logrus.ParseLevel(opts.LogLevel)
|
level, err := logrus.ParseLevel(opts.LogLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -223,18 +226,16 @@ func main() {
|
|||||||
volume.Command(ctype),
|
volume.Command(ctype),
|
||||||
)
|
)
|
||||||
|
|
||||||
if ctype != store.DefaultContextType {
|
// On default context, "compose" is implemented by CLI Plugin
|
||||||
// On default context, "compose" is implemented by CLI Plugin
|
proxy := api.NewServiceProxy().WithService(service.ComposeService())
|
||||||
proxy := api.NewServiceProxy().WithService(service.ComposeService())
|
command := compose2.RootCommand(ctype, proxy)
|
||||||
command := compose2.RootCommand(ctype, proxy)
|
|
||||||
|
|
||||||
if ctype == store.AciContextType {
|
if ctype == store.AciContextType {
|
||||||
customizeCliForACI(command, proxy)
|
customizeCliForACI(command, proxy)
|
||||||
}
|
|
||||||
|
|
||||||
root.AddCommand(command)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
root.AddCommand(command)
|
||||||
|
|
||||||
if err = root.ExecuteContext(ctx); err != nil {
|
if err = root.ExecuteContext(ctx); err != nil {
|
||||||
handleError(ctx, err, ctype, currentContext, cc, root)
|
handleError(ctx, err, ctype, currentContext, cc, root)
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,9 @@ import (
|
|||||||
// Command defines a compose CLI command as a func with args
|
// Command defines a compose CLI command as a func with args
|
||||||
type Command func(context.Context, []string) error
|
type Command func(context.Context, []string) error
|
||||||
|
|
||||||
|
// ValidArgsFn defines a completion func to be returned to fetch completion options
|
||||||
|
type ValidArgsFn func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective)
|
||||||
|
|
||||||
// Adapt a Command func to cobra library
|
// Adapt a Command func to cobra library
|
||||||
func Adapt(fn Command) func(cmd *cobra.Command, args []string) error {
|
func Adapt(fn Command) func(cmd *cobra.Command, args []string) error {
|
||||||
return func(cmd *cobra.Command, args []string) error {
|
return func(cmd *cobra.Command, args []string) error {
|
||||||
|
@ -76,6 +76,7 @@ func psCommand(p *projectOptions, backend api.Service) *cobra.Command {
|
|||||||
RunE: Adapt(func(ctx context.Context, args []string) error {
|
RunE: Adapt(func(ctx context.Context, args []string) error {
|
||||||
return runPs(ctx, backend, args, opts)
|
return runPs(ctx, backend, args, opts)
|
||||||
}),
|
}),
|
||||||
|
ValidArgsFunction: psCompletion(p),
|
||||||
}
|
}
|
||||||
flags := cmd.Flags()
|
flags := cmd.Flags()
|
||||||
flags.StringVar(&opts.Format, "format", "pretty", "Format the output. Values: [pretty | json]")
|
flags.StringVar(&opts.Format, "format", "pretty", "Format the output. Values: [pretty | json]")
|
||||||
@ -184,3 +185,13 @@ func filterByStatus(containers []api.ContainerSummary, status string) []api.Cont
|
|||||||
}
|
}
|
||||||
return filtered
|
return filtered
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func psCompletion(p *projectOptions) ValidArgsFn {
|
||||||
|
return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||||
|
project, err := p.toProject(nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, cobra.ShellCompDirectiveNoFileComp
|
||||||
|
}
|
||||||
|
return project.ServiceNames(), cobra.ShellCompDirectiveNoFileComp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user