Files
trivy/pkg/flag/kubernetes_flags.go
2022-07-09 19:40:31 +03:00

65 lines
1.2 KiB
Go

package flag
import (
"github.com/samber/lo"
"github.com/spf13/cobra"
)
var (
ClusterContextFlag = Flag{
Name: "context",
ConfigName: "kubernetes.context",
Value: "",
Usage: "specify a context to scan",
}
K8sNamespaceFlag = Flag{
Name: "namespace",
ConfigName: "kubernetes.namespace",
Value: "",
Usage: "specify a namespace to sca",
}
)
type K8sFlagGroup struct {
ClusterContext *Flag
Namespace *Flag
}
type K8sOptions struct {
ClusterContext string
Namespace string
}
func NewK8sFlagGroup() *K8sFlagGroup {
return &K8sFlagGroup{
ClusterContext: lo.ToPtr(ClusterContextFlag),
Namespace: lo.ToPtr(K8sNamespaceFlag),
}
}
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),
Namespace: getString(f.Namespace),
}
}