Files
docker-cli/cli/command/network/list.go
Sebastiaan van Stijn 73fbe6a020 cli/command/network: deprecate NewFormat, FormatWrite
It's part of the presentation logic of the cli, and only used internally.
We can consider providing utilities for these, but better as part of
separate packages.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit e3903a1ac8)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-08-22 11:47:52 +02:00

75 lines
2.0 KiB
Go

package network
import (
"context"
"sort"
"github.com/docker/cli/cli"
"github.com/docker/cli/cli/command"
"github.com/docker/cli/cli/command/completion"
"github.com/docker/cli/cli/command/formatter"
flagsHelper "github.com/docker/cli/cli/flags"
"github.com/docker/cli/opts"
"github.com/docker/docker/api/types/network"
"github.com/fvbommel/sortorder"
"github.com/spf13/cobra"
)
type listOptions struct {
quiet bool
noTrunc bool
format string
filter opts.FilterOpt
}
func newListCommand(dockerCli command.Cli) *cobra.Command {
options := listOptions{filter: opts.NewFilterOpt()}
cmd := &cobra.Command{
Use: "ls [OPTIONS]",
Aliases: []string{"list"},
Short: "List networks",
Args: cli.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
return runList(cmd.Context(), dockerCli, options)
},
ValidArgsFunction: completion.NoComplete,
}
flags := cmd.Flags()
flags.BoolVarP(&options.quiet, "quiet", "q", false, "Only display network IDs")
flags.BoolVar(&options.noTrunc, "no-trunc", false, "Do not truncate the output")
flags.StringVar(&options.format, "format", "", flagsHelper.FormatHelp)
flags.VarP(&options.filter, "filter", "f", `Provide filter values (e.g. "driver=bridge")`)
return cmd
}
func runList(ctx context.Context, dockerCli command.Cli, options listOptions) error {
client := dockerCli.Client()
networkResources, err := client.NetworkList(ctx, network.ListOptions{Filters: options.filter.Value()})
if err != nil {
return err
}
format := options.format
if len(format) == 0 {
if len(dockerCli.ConfigFile().NetworksFormat) > 0 && !options.quiet {
format = dockerCli.ConfigFile().NetworksFormat
} else {
format = formatter.TableFormatKey
}
}
sort.Slice(networkResources, func(i, j int) bool {
return sortorder.NaturalLess(networkResources[i].Name, networkResources[j].Name)
})
networksCtx := formatter.Context{
Output: dockerCli.Out(),
Format: newFormat(format, options.quiet),
Trunc: !options.noTrunc,
}
return formatWrite(networksCtx, networkResources)
}