feat: add support for flag groups (#2488)

This commit is contained in:
Teppei Fukuda
2022-07-10 15:03:57 +03:00
committed by GitHub
parent 5b7e0a858d
commit 736e3f11f7
16 changed files with 496 additions and 410 deletions

View File

@@ -1,10 +1,5 @@
package flag
import (
"github.com/samber/lo"
"github.com/spf13/cobra"
)
var (
ClusterContextFlag = Flag{
Name: "context",
@@ -32,30 +27,19 @@ type K8sOptions struct {
func NewK8sFlagGroup() *K8sFlagGroup {
return &K8sFlagGroup{
ClusterContext: lo.ToPtr(ClusterContextFlag),
Namespace: lo.ToPtr(K8sNamespaceFlag),
ClusterContext: &ClusterContextFlag,
Namespace: &K8sNamespaceFlag,
}
}
func (f *K8sFlagGroup) flags() []*Flag {
func (f *K8sFlagGroup) Name() string {
return "Kubernetes"
}
func (f *K8sFlagGroup) Flags() []*Flag {
return []*Flag{f.ClusterContext, f.Namespace}
}
func (f *K8sFlagGroup) AddFlags(cmd *cobra.Command) {
for _, flag := range f.flags() {
addFlag(cmd, flag)
}
}
func (f *K8sFlagGroup) Bind(cmd *cobra.Command) error {
for _, flag := range f.flags() {
if err := bind(cmd, flag); err != nil {
return err
}
}
return nil
}
func (f *K8sFlagGroup) ToOptions() K8sOptions {
return K8sOptions{
ClusterContext: getString(f.ClusterContext),