...
1 package bazel
2
3 import (
4 "flag"
5 "strings"
6
7 "edge-infra.dev/pkg/lib/cli/rags"
8 )
9
10
11
12
13
14 type Configs []string
15
16
17 func (c Configs) String() string {
18 return strings.Join(c, ",")
19 }
20
21
22
23 func (c Configs) ToArgs() []string {
24 args := make([]string, 0, len(c)*2)
25 for _, cfg := range c {
26 args = append(args, "--config", cfg)
27 }
28 return args
29 }
30
31
32
33
34 func (c *Configs) Set(v string) error {
35 tokens := strings.Split(strings.Trim(v, ","), ",")
36 nc := append(*c, tokens...)
37 j := 0
38 for i := 1; i < len(nc); i++ {
39 if nc[j] == nc[i] {
40 continue
41 }
42 j++
43 nc[j] = nc[i]
44 }
45
46 *c = nc[:j+1]
47 return nil
48 }
49
50
51 func (c *Configs) Get() any {
52 return []string(*c)
53 }
54
55
56 func (c *Configs) Type() string {
57 return "config(s)"
58 }
59
60
61 func RegisterConfigsFlag(fs *flag.FlagSet) *Configs {
62 cfg := &Configs{}
63 fs.Var(cfg, "bazel-configs",
64 "comma separated list of values to pass to Bazel via --config. "+
65 "https://docs.bazel.build/versions/master/guide.html#--config",
66 )
67 return cfg
68 }
69
70 func RegisterConfigsRag(fs *rags.RagSet) *Configs {
71 cfg := &Configs{}
72 fs.Var(cfg, "bazel-configs",
73 "comma separated list of values to pass to Bazel via --config. "+
74 "https://docs.bazel.build/versions/master/guide.html#--config",
75 rags.WithCategory("bazel"),
76 )
77 return cfg
78 }
79
View as plain text