forked from toolshed/abra
		
	fix: more robust <app> autocomplete + error handling
See toolshed/organising#652
This commit is contained in:
		| @ -52,8 +52,8 @@ Please note, "upgrade"/"rollback" do not support chaos operations.`, | ||||
| 		case 1: | ||||
| 			app, err := appPkg.Get(args[0]) | ||||
| 			if err != nil { | ||||
| 				log.Debugf("autocomplete failed: %s", err) | ||||
| 				return nil, cobra.ShellCompDirectiveDefault | ||||
| 				errMsg := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 				return []string{errMsg}, cobra.ShellCompDirectiveError | ||||
| 			} | ||||
| 			return autocomplete.RecipeVersionComplete(app.Recipe.Name) | ||||
| 		default: | ||||
|  | ||||
| @ -2,6 +2,7 @@ package app | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"os" | ||||
| 	"slices" | ||||
| @ -37,8 +38,8 @@ var AppLogsCommand = &cobra.Command{ | ||||
| 		case 1: | ||||
| 			app, err := appPkg.Get(args[0]) | ||||
| 			if err != nil { | ||||
| 				log.Debugf("autocomplete failed: %s", err) | ||||
| 				return nil, cobra.ShellCompDirectiveDefault | ||||
| 				errMsg := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 				return []string{errMsg}, cobra.ShellCompDirectiveError | ||||
| 			} | ||||
| 			return autocomplete.ServiceNameComplete(app.Name) | ||||
| 		default: | ||||
|  | ||||
| @ -46,8 +46,8 @@ beforehand.`, | ||||
| 		case 1: | ||||
| 			app, err := appPkg.Get(args[0]) | ||||
| 			if err != nil { | ||||
| 				log.Debugf("autocomplete failed: %s", err) | ||||
| 				return nil, cobra.ShellCompDirectiveDefault | ||||
| 				errMsg := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 				return []string{errMsg}, cobra.ShellCompDirectiveError | ||||
| 			} | ||||
| 			return autocomplete.RecipeVersionComplete(app.Recipe.Name) | ||||
| 		default: | ||||
|  | ||||
| @ -34,8 +34,8 @@ var AppSecretGenerateCommand = &cobra.Command{ | ||||
| 		case 1: | ||||
| 			app, err := appPkg.Get(args[0]) | ||||
| 			if err != nil { | ||||
| 				log.Debugf("autocomplete failed: %s", err) | ||||
| 				return nil, cobra.ShellCompDirectiveDefault | ||||
| 				errMsg := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 				return []string{errMsg}, cobra.ShellCompDirectiveError | ||||
| 			} | ||||
| 			return autocomplete.SecretComplete(app.Recipe.Name) | ||||
| 		default: | ||||
| @ -159,8 +159,8 @@ environment. Typically, you can let Abra generate them for you on app creation | ||||
| 		case 1: | ||||
| 			app, err := appPkg.Get(args[0]) | ||||
| 			if err != nil { | ||||
| 				log.Debugf("autocomplete failed: %s", err) | ||||
| 				return nil, cobra.ShellCompDirectiveDefault | ||||
| 				errMsg := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 				return []string{errMsg}, cobra.ShellCompDirectiveError | ||||
| 			} | ||||
| 			return autocomplete.SecretComplete(app.Recipe.Name) | ||||
| 		default: | ||||
| @ -245,8 +245,8 @@ var AppSecretRmCommand = &cobra.Command{ | ||||
| 			if !rmAllSecrets { | ||||
| 				app, err := appPkg.Get(args[0]) | ||||
| 				if err != nil { | ||||
| 					log.Debugf("autocomplete failed: %s", err) | ||||
| 					return nil, cobra.ShellCompDirectiveDefault | ||||
| 					errMsg := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 					return []string{errMsg}, cobra.ShellCompDirectiveError | ||||
| 				} | ||||
| 				return autocomplete.SecretComplete(app.Recipe.Name) | ||||
| 			} | ||||
|  | ||||
| @ -40,8 +40,8 @@ beforehand.`, | ||||
| 		case 1: | ||||
| 			app, err := appPkg.Get(args[0]) | ||||
| 			if err != nil { | ||||
| 				log.Debugf("autocomplete failed: %s", err) | ||||
| 				return nil, cobra.ShellCompDirectiveDefault | ||||
| 				errMsg := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 				return []string{errMsg}, cobra.ShellCompDirectiveError | ||||
| 			} | ||||
| 			return autocomplete.RecipeVersionComplete(app.Recipe.Name) | ||||
| 		default: | ||||
|  | ||||
| @ -1,21 +1,26 @@ | ||||
| package autocomplete | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"sort" | ||||
|  | ||||
| 	"coopcloud.tech/abra/pkg/app" | ||||
| 	appPkg "coopcloud.tech/abra/pkg/app" | ||||
| 	"coopcloud.tech/abra/pkg/log" | ||||
| 	"coopcloud.tech/abra/pkg/recipe" | ||||
| 	"github.com/spf13/cobra" | ||||
| ) | ||||
|  | ||||
| // AppNameComplete copletes app names. | ||||
| func AppNameComplete() ([]string, cobra.ShellCompDirective) { | ||||
| 	appNames, err := app.GetAppNames() | ||||
| 	appFiles, err := app.LoadAppFiles("") | ||||
| 	if err != nil { | ||||
| 		log.Debugf("autocomplete failed: %s", err) | ||||
| 		return nil, cobra.ShellCompDirectiveError | ||||
| 		err := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 		return []string{err}, cobra.ShellCompDirectiveError | ||||
| 	} | ||||
|  | ||||
| 	var appNames []string | ||||
| 	for appName := range appFiles { | ||||
| 		appNames = append(appNames, appName) | ||||
| 	} | ||||
|  | ||||
| 	return appNames, cobra.ShellCompDirectiveDefault | ||||
| @ -24,8 +29,8 @@ func AppNameComplete() ([]string, cobra.ShellCompDirective) { | ||||
| func ServiceNameComplete(appName string) ([]string, cobra.ShellCompDirective) { | ||||
| 	serviceNames, err := app.GetAppServiceNames(appName) | ||||
| 	if err != nil { | ||||
| 		log.Debugf("autocomplete failed: %s", err) | ||||
| 		return nil, cobra.ShellCompDirectiveError | ||||
| 		err := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 		return []string{err}, cobra.ShellCompDirectiveError | ||||
| 	} | ||||
|  | ||||
| 	return serviceNames, cobra.ShellCompDirectiveDefault | ||||
| @ -35,8 +40,8 @@ func ServiceNameComplete(appName string) ([]string, cobra.ShellCompDirective) { | ||||
| func RecipeNameComplete() ([]string, cobra.ShellCompDirective) { | ||||
| 	catl, err := recipe.ReadRecipeCatalogue(false) | ||||
| 	if err != nil { | ||||
| 		log.Debugf("autocomplete failed: %s", err) | ||||
| 		return nil, cobra.ShellCompDirectiveError | ||||
| 		err := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 		return []string{err}, cobra.ShellCompDirectiveError | ||||
| 	} | ||||
|  | ||||
| 	var recipeNames []string | ||||
| @ -51,8 +56,8 @@ func RecipeNameComplete() ([]string, cobra.ShellCompDirective) { | ||||
| func RecipeVersionComplete(recipeName string) ([]string, cobra.ShellCompDirective) { | ||||
| 	catl, err := recipe.ReadRecipeCatalogue(false) | ||||
| 	if err != nil { | ||||
| 		log.Debugf("autocomplete failed: %s", err) | ||||
| 		return nil, cobra.ShellCompDirectiveError | ||||
| 		err := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 		return []string{err}, cobra.ShellCompDirectiveError | ||||
| 	} | ||||
|  | ||||
| 	var recipeVersions []string | ||||
| @ -69,8 +74,8 @@ func RecipeVersionComplete(recipeName string) ([]string, cobra.ShellCompDirectiv | ||||
| func ServerNameComplete() ([]string, cobra.ShellCompDirective) { | ||||
| 	files, err := app.LoadAppFiles("") | ||||
| 	if err != nil { | ||||
| 		log.Debugf("autocomplete failed: %s", err) | ||||
| 		return nil, cobra.ShellCompDirectiveError | ||||
| 		err := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 		return []string{err}, cobra.ShellCompDirectiveError | ||||
| 	} | ||||
|  | ||||
| 	var serverNames []string | ||||
| @ -85,14 +90,14 @@ func ServerNameComplete() ([]string, cobra.ShellCompDirective) { | ||||
| func CommandNameComplete(appName string) ([]string, cobra.ShellCompDirective) { | ||||
| 	app, err := app.Get(appName) | ||||
| 	if err != nil { | ||||
| 		log.Debugf("autocomplete failed: %s", err) | ||||
| 		return nil, cobra.ShellCompDirectiveError | ||||
| 		err := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 		return []string{err}, cobra.ShellCompDirectiveError | ||||
| 	} | ||||
|  | ||||
| 	cmdNames, err := appPkg.ReadAbraShCmdNames(app.Recipe.AbraShPath) | ||||
| 	if err != nil { | ||||
| 		log.Debugf("autocomplete failed: %s", err) | ||||
| 		return nil, cobra.ShellCompDirectiveError | ||||
| 		err := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 		return []string{err}, cobra.ShellCompDirectiveError | ||||
| 	} | ||||
|  | ||||
| 	sort.Strings(cmdNames) | ||||
| @ -106,8 +111,8 @@ func SecretComplete(recipeName string) ([]string, cobra.ShellCompDirective) { | ||||
|  | ||||
| 	config, err := r.GetComposeConfig(nil) | ||||
| 	if err != nil { | ||||
| 		log.Debugf("autocomplete failed: %s", err) | ||||
| 		return nil, cobra.ShellCompDirectiveError | ||||
| 		err := fmt.Sprintf("autocomplete failed: %s", err) | ||||
| 		return []string{err}, cobra.ShellCompDirectiveError | ||||
| 	} | ||||
|  | ||||
| 	var secretNames []string | ||||
|  | ||||
		Reference in New Issue
	
	Block a user