Skip to content

Commit 6c1728e

Browse files
authored
Merge pull request #4401 from Mr-Sunglasses/fix/#4313
feat: Add completions for 'nerdctl network create -o'
2 parents a3e7535 + d9d2f0b commit 6c1728e

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

cmd/nerdctl/completion/completion_unix.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,49 @@ func IPAMDrivers(cmd *cobra.Command, args []string, toComplete string) ([]string
3838
return []string{"default", "host-local", "dhcp"}, cobra.ShellCompDirectiveNoFileComp
3939
}
4040

41+
func NetworkOptions(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
42+
driver, _ := cmd.Flags().GetString("driver")
43+
if driver == "" {
44+
driver = "bridge"
45+
}
46+
47+
var candidates []string
48+
switch driver {
49+
case "bridge":
50+
candidates = []string{
51+
"mtu=",
52+
"com.docker.network.driver.mtu=",
53+
"ip-masq=",
54+
"com.docker.network.bridge.enable_ip_masquerade=",
55+
}
56+
case "macvlan":
57+
candidates = []string{
58+
"mtu=",
59+
"com.docker.network.driver.mtu=",
60+
"mode=bridge",
61+
"macvlan_mode=bridge",
62+
"parent=",
63+
}
64+
case "ipvlan":
65+
candidates = []string{
66+
"mtu=",
67+
"com.docker.network.driver.mtu=",
68+
"mode=l2",
69+
"mode=l3",
70+
"ipvlan_mode=l2",
71+
"ipvlan_mode=l3",
72+
"parent=",
73+
}
74+
default:
75+
candidates = []string{
76+
"mtu=",
77+
"com.docker.network.driver.mtu=",
78+
"parent=",
79+
}
80+
}
81+
return candidates, cobra.ShellCompDirectiveNoSpace
82+
}
83+
4184
func NamespaceNames(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
4285
globalOptions, err := helpers.ProcessRootCmdFlags(cmd)
4386
if err != nil {

cmd/nerdctl/completion/completion_windows.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,25 @@ func NetworkDrivers(cmd *cobra.Command, args []string, toComplete string) ([]str
3838
func IPAMDrivers(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
3939
return []string{"default"}, cobra.ShellCompDirectiveNoFileComp
4040
}
41+
42+
func NetworkOptions(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
43+
driver, _ := cmd.Flags().GetString("driver")
44+
if driver == "" {
45+
driver = "nat"
46+
}
47+
48+
var candidates []string
49+
switch driver {
50+
case "nat":
51+
candidates = []string{
52+
"mtu=",
53+
"com.docker.network.driver.mtu=",
54+
}
55+
default:
56+
candidates = []string{
57+
"mtu=",
58+
"com.docker.network.driver.mtu=",
59+
}
60+
}
61+
return candidates, cobra.ShellCompDirectiveNoSpace
62+
}

cmd/nerdctl/network/network_create.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ func createCommand() *cobra.Command {
4242
cmd.Flags().StringP("driver", "d", DefaultNetworkDriver, "Driver to manage the Network")
4343
cmd.RegisterFlagCompletionFunc("driver", completion.NetworkDrivers)
4444
cmd.Flags().StringArrayP("opt", "o", nil, "Set driver specific options")
45+
cmd.RegisterFlagCompletionFunc("opt", completion.NetworkOptions)
4546
cmd.Flags().String("ipam-driver", "default", "IP Address helpers.Management Driver")
4647
cmd.RegisterFlagCompletionFunc("ipam-driver", completion.IPAMDrivers)
4748
cmd.Flags().StringArray("ipam-opt", nil, "Set IPAM driver specific options")

0 commit comments

Comments
 (0)