This replaces the visitAll recursive function with a test that verifies that the option is set for all commands and subcommands, so that it doesn't have to be modified at runtime. We currently still have to loop over all functions for the setValidateArgs call, but that can be looked at separately. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
// FIXME(thaJeztah): remove once we are a module; the go:build directive prevents go from downgrading language version to go1.16:
|
|
//go:build go1.23
|
|
|
|
package volume
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/docker/cli/cli"
|
|
"github.com/docker/cli/cli/command"
|
|
"github.com/docker/cli/cli/command/completion"
|
|
"github.com/docker/cli/cli/command/inspect"
|
|
flagsHelper "github.com/docker/cli/cli/flags"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
type inspectOptions struct {
|
|
format string
|
|
names []string
|
|
}
|
|
|
|
func newInspectCommand(dockerCLI command.Cli) *cobra.Command {
|
|
var opts inspectOptions
|
|
|
|
cmd := &cobra.Command{
|
|
Use: "inspect [OPTIONS] VOLUME [VOLUME...]",
|
|
Short: "Display detailed information on one or more volumes",
|
|
Args: cli.RequiresMinArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
opts.names = args
|
|
return runInspect(cmd.Context(), dockerCLI, opts)
|
|
},
|
|
ValidArgsFunction: completion.VolumeNames(dockerCLI),
|
|
DisableFlagsInUseLine: true,
|
|
}
|
|
|
|
cmd.Flags().StringVarP(&opts.format, "format", "f", "", flagsHelper.InspectFormatHelp)
|
|
|
|
return cmd
|
|
}
|
|
|
|
func runInspect(ctx context.Context, dockerCLI command.Cli, opts inspectOptions) error {
|
|
apiClient := dockerCLI.Client()
|
|
return inspect.Inspect(dockerCLI.Out(), opts.names, opts.format, func(name string) (any, []byte, error) {
|
|
i, err := apiClient.VolumeInspect(ctx, name)
|
|
return i, nil, err
|
|
})
|
|
}
|