@@ -8,23 +8,51 @@ import (
88 "regexp"
99 "strings"
1010
11+ "github.com/docker/docker/api"
12+ flag "github.com/docker/docker/pkg/mflag"
1113 "github.com/docker/docker/pkg/parsers"
1214)
1315
16+ func ListVar (values * []string , names []string , usage string ) {
17+ flag .Var (newListOptsRef (values , nil ), names , usage )
18+ }
19+
20+ func HostListVar (values * []string , names []string , usage string ) {
21+ flag .Var (newListOptsRef (values , api .ValidateHost ), names , usage )
22+ }
23+
24+ func IPListVar (values * []string , names []string , usage string ) {
25+ flag .Var (newListOptsRef (values , ValidateIPAddress ), names , usage )
26+ }
27+
28+ func DnsSearchListVar (values * []string , names []string , usage string ) {
29+ flag .Var (newListOptsRef (values , ValidateDnsSearch ), names , usage )
30+ }
31+
32+ func IPVar (value * net.IP , names []string , defaultValue , usage string ) {
33+ flag .Var (NewIpOpt (value , defaultValue ), names , usage )
34+ }
35+
1436// ListOpts type
1537type ListOpts struct {
16- values []string
38+ values * []string
1739 validator ValidatorFctType
1840}
1941
2042func NewListOpts (validator ValidatorFctType ) ListOpts {
21- return ListOpts {
43+ var values []string
44+ return * newListOptsRef (& values , validator )
45+ }
46+
47+ func newListOptsRef (values * []string , validator ValidatorFctType ) * ListOpts {
48+ return & ListOpts {
49+ values : values ,
2250 validator : validator ,
2351 }
2452}
2553
2654func (opts * ListOpts ) String () string {
27- return fmt .Sprintf ("%v" , []string (opts .values ))
55+ return fmt .Sprintf ("%v" , []string (( * opts .values ) ))
2856}
2957
3058// Set validates if needed the input value and add it to the
@@ -37,15 +65,15 @@ func (opts *ListOpts) Set(value string) error {
3765 }
3866 value = v
3967 }
40- opts .values = append (opts .values , value )
68+ ( * opts .values ) = append (( * opts .values ) , value )
4169 return nil
4270}
4371
4472// Delete remove the given element from the slice.
4573func (opts * ListOpts ) Delete (key string ) {
46- for i , k := range opts .values {
74+ for i , k := range * opts .values {
4775 if k == key {
48- opts .values = append (opts .values [:i ], opts .values [i + 1 :]... )
76+ ( * opts .values ) = append (( * opts .values ) [:i ], ( * opts .values ) [i + 1 :]... )
4977 return
5078 }
5179 }
@@ -56,7 +84,7 @@ func (opts *ListOpts) Delete(key string) {
5684// FIXME: can we remove this?
5785func (opts * ListOpts ) GetMap () map [string ]struct {} {
5886 ret := make (map [string ]struct {})
59- for _ , k := range opts .values {
87+ for _ , k := range * opts .values {
6088 ret [k ] = struct {}{}
6189 }
6290 return ret
@@ -65,12 +93,12 @@ func (opts *ListOpts) GetMap() map[string]struct{} {
6593// GetAll returns the values' slice.
6694// FIXME: Can we remove this?
6795func (opts * ListOpts ) GetAll () []string {
68- return opts .values
96+ return ( * opts .values )
6997}
7098
7199// Get checks the existence of the given key.
72100func (opts * ListOpts ) Get (key string ) bool {
73- for _ , k := range opts .values {
101+ for _ , k := range * opts .values {
74102 if k == key {
75103 return true
76104 }
@@ -80,7 +108,7 @@ func (opts *ListOpts) Get(key string) bool {
80108
81109// Len returns the amount of element in the slice.
82110func (opts * ListOpts ) Len () int {
83- return len (opts .values )
111+ return len (( * opts .values ) )
84112}
85113
86114// Validators
0 commit comments