diff --git a/internal/app/wwctl/completions/completions.go b/internal/app/wwctl/completions/completions.go index 2dfbb2fa..19adb05f 100644 --- a/internal/app/wwctl/completions/completions.go +++ b/internal/app/wwctl/completions/completions.go @@ -52,3 +52,11 @@ func Images(cmd *cobra.Command, args []string, toComplete string) ([]string, cob sources, _ := image.ListSources() return sources, cobra.ShellCompDirectiveNoFileComp } + +func Profiles(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + if len(args) != 0 { + return nil, cobra.ShellCompDirectiveNoFileComp + } + registry, _ := node.New() + return registry.ListAllProfiles(), cobra.ShellCompDirectiveNoFileComp +} diff --git a/internal/app/wwctl/profile/delete/root.go b/internal/app/wwctl/profile/delete/root.go index 7d30b979..6c6e0df4 100644 --- a/internal/app/wwctl/profile/delete/root.go +++ b/internal/app/wwctl/profile/delete/root.go @@ -2,7 +2,7 @@ package delete import ( "github.com/spf13/cobra" - "github.com/warewulf/warewulf/internal/pkg/node" + "github.com/warewulf/warewulf/internal/app/wwctl/completions" ) var ( @@ -14,13 +14,7 @@ var ( Aliases: []string{"remove", "rm", "del"}, RunE: CobraRunE, Args: cobra.MinimumNArgs(1), - ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - if len(args) != 0 { - return nil, cobra.ShellCompDirectiveNoFileComp - } - nodeDB, _ := node.New() - return nodeDB.ListAllProfiles(), cobra.ShellCompDirectiveNoFileComp - }, + ValidArgsFunction: completions.Profiles, } SetYes bool ) diff --git a/internal/app/wwctl/profile/list/root.go b/internal/app/wwctl/profile/list/root.go index ff63b599..86468943 100644 --- a/internal/app/wwctl/profile/list/root.go +++ b/internal/app/wwctl/profile/list/root.go @@ -2,7 +2,7 @@ package list import ( "github.com/spf13/cobra" - "github.com/warewulf/warewulf/internal/pkg/node" + "github.com/warewulf/warewulf/internal/app/wwctl/completions" ) type variables struct { @@ -21,13 +21,7 @@ func GetCommand() *cobra.Command { Long: "This command will display configurations for PROFILE.", RunE: CobraRunE(&vars), Aliases: []string{"ls"}, - ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - if len(args) != 0 { - return nil, cobra.ShellCompDirectiveNoFileComp - } - nodeDB, _ := node.New() - return nodeDB.ListAllProfiles(), cobra.ShellCompDirectiveNoFileComp - }, + ValidArgsFunction: completions.Profiles, } baseCmd.PersistentFlags().BoolVarP(&vars.showAll, "all", "a", false, "Show all profile configurations") baseCmd.PersistentFlags().BoolVarP(&vars.showYaml, "yaml", "y", false, "Show profile configurations via yaml format") diff --git a/internal/app/wwctl/profile/set/root.go b/internal/app/wwctl/profile/set/root.go index 483b8901..36ed8f1c 100644 --- a/internal/app/wwctl/profile/set/root.go +++ b/internal/app/wwctl/profile/set/root.go @@ -36,18 +36,10 @@ func GetCommand() *cobra.Command { Short: "Configure node profile properties", Long: "This command sets configuration properties for the node PROFILE(s).\n\n" + "Note: use the string 'UNSET' to remove a configuration", - Aliases: []string{"modify"}, - Args: cobra.MinimumNArgs(0), - RunE: CobraRunE(&vars), - ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - if len(args) != 0 { - return nil, cobra.ShellCompDirectiveNoFileComp - } - - nodeDB, _ := node.New() - profiles := nodeDB.ListAllProfiles() - return profiles, cobra.ShellCompDirectiveNoFileComp - }, + Aliases: []string{"modify"}, + Args: cobra.MinimumNArgs(0), + RunE: CobraRunE(&vars), + ValidArgsFunction: completions.Profiles, } vars.profileConf.CreateFlags(baseCmd) vars.profileDel.CreateDelFlags(baseCmd)