-
Notifications
You must be signed in to change notification settings - Fork 72
/
flagset.go
50 lines (39 loc) · 1.25 KB
/
flagset.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package contextcmdutil
import (
"github.com/redhat-developer/app-services-cli/pkg/core/cmdutil/flagutil"
"github.com/redhat-developer/app-services-cli/pkg/shared/factory"
"github.com/spf13/cobra"
)
type FlagSet struct {
cmd *cobra.Command
factory *factory.Factory
*flagutil.FlagSet
}
// NewFlagSet returns a new flag set with common context flags
func NewFlagSet(cmd *cobra.Command, f *factory.Factory) *FlagSet {
return &FlagSet{
cmd: cmd,
factory: f,
FlagSet: flagutil.NewFlagSet(cmd, f.Localizer),
}
}
// AddContextName adds a flag for setting the name of the context
func (fs *FlagSet) AddContextName(name *string) *flagutil.FlagOptions {
svcContext, _ := fs.factory.ServiceContext.Load()
svcContextsMap := svcContext.Contexts
flagName := "name"
fs.StringVar(
name,
flagName,
"",
fs.factory.Localizer.MustLocalize("context.common.flag.name"),
)
contextNames := make([]string, 0, len(svcContextsMap))
for k := range svcContextsMap {
contextNames = append(contextNames, k)
}
_ = fs.cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, _ []string, _ string) ([]string, cobra.ShellCompDirective) {
return contextNames, cobra.ShellCompDirectiveNoSpace
})
return flagutil.WithFlagOptions(fs.cmd, flagName)
}