forked from toolshed/abra
		
	add bash completion for abra cmd
This commit is contained in:
		| @ -10,6 +10,7 @@ import ( | ||||
| 	"strings" | ||||
|  | ||||
| 	"coopcloud.tech/abra/cli/internal" | ||||
| 	"coopcloud.tech/abra/pkg/app" | ||||
| 	"coopcloud.tech/abra/pkg/autocomplete" | ||||
| 	"coopcloud.tech/abra/pkg/client" | ||||
| 	"coopcloud.tech/abra/pkg/config" | ||||
| @ -45,6 +46,17 @@ Example: | ||||
| 	}, | ||||
| 	Before:      internal.SubCommandBefore, | ||||
| 	Subcommands: []cli.Command{appCmdListCommand}, | ||||
| 	BashComplete: func(ctx *cli.Context) { | ||||
| 		args := ctx.Args() | ||||
| 		switch len(args) { | ||||
| 		case 0: | ||||
| 			autocomplete.AppNameComplete(ctx) | ||||
| 		case 1: | ||||
| 			autocomplete.ServiceNameComplete(args.Get(0)) | ||||
| 		case 2: | ||||
| 			cmdNameComplete(args.Get(0)) | ||||
| 		} | ||||
| 	}, | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		app := internal.ValidateApp(c) | ||||
|  | ||||
| @ -187,6 +199,20 @@ func parseCmdArgs(args []string, isLocal bool) (bool, string) { | ||||
| 	return hasCmdArgs, parsedCmdArgs | ||||
| } | ||||
|  | ||||
| func cmdNameComplete(appName string) { | ||||
| 	app, err := app.Get(appName) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	cmdNames, _ := getShCmdNames(app) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	for _, n := range cmdNames { | ||||
| 		fmt.Println(n) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| var appCmdListCommand = cli.Command{ | ||||
| 	Name:      "list", | ||||
| 	Aliases:   []string{"ls"}, | ||||
| @ -222,13 +248,11 @@ var appCmdListCommand = cli.Command{ | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		abraShPath := fmt.Sprintf("%s/%s/%s", config.RECIPES_DIR, app.Recipe, "abra.sh") | ||||
| 		cmdNames, err := config.ReadAbraShCmdNames(abraShPath) | ||||
| 		cmdNames, err := getShCmdNames(app) | ||||
| 		if err != nil { | ||||
| 			logrus.Fatal(err) | ||||
| 		} | ||||
|  | ||||
| 		sort.Strings(cmdNames) | ||||
| 		for _, cmdName := range cmdNames { | ||||
| 			fmt.Println(cmdName) | ||||
| 		} | ||||
| @ -236,3 +260,14 @@ var appCmdListCommand = cli.Command{ | ||||
| 		return nil | ||||
| 	}, | ||||
| } | ||||
|  | ||||
| func getShCmdNames(app config.App) ([]string, error) { | ||||
| 	abraShPath := fmt.Sprintf("%s/%s/%s", config.RECIPES_DIR, app.Recipe, "abra.sh") | ||||
| 	cmdNames, err := config.ReadAbraShCmdNames(abraShPath) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	sort.Strings(cmdNames) | ||||
| 	return cmdNames, nil | ||||
| } | ||||
|  | ||||
| @ -25,6 +25,16 @@ func AppNameComplete(c *cli.Context) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func ServiceNameComplete(appName string) { | ||||
| 	serviceNames, err := config.GetAppServiceNames(appName) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	for _, s := range serviceNames { | ||||
| 		fmt.Println(s) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // RecipeNameComplete completes recipe names. | ||||
| func RecipeNameComplete(c *cli.Context) { | ||||
| 	catl, err := recipe.ReadRecipeCatalogue(false) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user