Archived
1
This repository has been archived on 2025-08-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
playbookctl/cmd/utils.go
2024-12-23 01:55:48 +03:00

64 lines
1.3 KiB
Go

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
}