package cmd import ( "fmt" "github.com/spf13/cobra" "os" "path/filepath" "playbookctl/internal/types" ) func ArgRoleCompletion(_ *cobra.Command, _ []string, toComplete string) ([]string, cobra.ShellCompDirective) { exitApp := func(err error) { fmt.Println(err) os.Exit(1) } var suggestions []string workDir, err := filepath.Abs(flagWorkdir) if err != nil { exitApp(err) } playbook, err := types.ReadPlaybook(workDir) if err != nil { exitApp(err) } for _, role := range playbook.Roles { if toComplete == "" || len(role) >= len(toComplete) && role[:len(toComplete)] == toComplete { suggestions = append(suggestions, role) } } return suggestions, cobra.ShellCompDirectiveDefault } func ArgHostCompletion(_ *cobra.Command, _ []string, toComplete string) ([]string, cobra.ShellCompDirective) { exitApp := func(err error) { fmt.Println(err) os.Exit(1) } var suggestions []string workDir, err := filepath.Abs(flagWorkdir) if err != nil { exitApp(err) } hosts, err := types.ReadHosts(workDir) if err != nil { exitApp(err) } for host := range *hosts { if toComplete == "" || len(host) >= len(toComplete) && host[:len(toComplete)] == toComplete { suggestions = append(suggestions, host) } } return suggestions, cobra.ShellCompDirectiveDefault }