forked from toolshed/abra
		
	refactor: centralise app name validation
This commit is contained in:
		| @ -31,10 +31,7 @@ var appBackupCommand = &cli.Command{ | ||||
| 	Flags:     []cli.Flag{backupAllServicesFlag}, | ||||
| 	ArgsUsage: "<service>", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		if c.Args().Get(1) != "" && backupAllServices { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("cannot use '<service>' and '--all' together")) | ||||
|  | ||||
| @ -1,7 +1,6 @@ | ||||
| package app | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"os" | ||||
| 	"path" | ||||
| 	"strings" | ||||
| @ -18,10 +17,7 @@ var appCheckCommand = &cli.Command{ | ||||
| 	Aliases:   []string{"c"}, | ||||
| 	ArgsUsage: "<service>", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		appFiles, err := config.LoadAppFiles("") | ||||
| 		if err != nil { | ||||
|  | ||||
| @ -1,7 +1,6 @@ | ||||
| package app | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"os" | ||||
| 	"os/exec" | ||||
|  | ||||
| @ -17,10 +16,7 @@ var appConfigCommand = &cli.Command{ | ||||
| 	Aliases: []string{"c"}, | ||||
| 	Usage:   "Edit app config", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		appFiles, err := config.LoadAppFiles("") | ||||
| 		if err != nil { | ||||
|  | ||||
| @ -2,7 +2,6 @@ package app | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"strings" | ||||
| @ -23,10 +22,7 @@ var appCpCommand = &cli.Command{ | ||||
| 	ArgsUsage: "<src> <dst>", | ||||
| 	Usage:     "Copy files to/from a running app service", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		src := c.Args().Get(1) | ||||
| 		dst := c.Args().Get(2) | ||||
|  | ||||
| @ -1,7 +1,6 @@ | ||||
| package app | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"coopcloud.tech/abra/cli/internal" | ||||
| @ -17,10 +16,7 @@ var appDeployCommand = &cli.Command{ | ||||
| 	Aliases: []string{"d"}, | ||||
| 	Usage:   "Deploy an app", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		appFiles, err := config.LoadAppFiles("") | ||||
| 		if err != nil { | ||||
|  | ||||
| @ -2,7 +2,6 @@ package app | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"os" | ||||
| @ -64,10 +63,7 @@ var appLogsCommand = &cli.Command{ | ||||
| 	ArgsUsage: "[<service>]", | ||||
| 	Usage:     "Tail app logs", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		appFiles, err := config.LoadAppFiles("") | ||||
| 		if err != nil { | ||||
|  | ||||
| @ -2,7 +2,6 @@ package app | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"errors" | ||||
| 	"strings" | ||||
|  | ||||
| 	abraFormatter "coopcloud.tech/abra/cli/formatter" | ||||
| @ -21,10 +20,7 @@ var appPsCommand = &cli.Command{ | ||||
| 	Usage:   "Check app status", | ||||
| 	Aliases: []string{"p"}, | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		appFiles, err := config.LoadAppFiles("") | ||||
| 		if err != nil { | ||||
|  | ||||
| @ -2,7 +2,6 @@ package app | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
|  | ||||
| @ -35,10 +34,7 @@ var appRemoveCommand = &cli.Command{ | ||||
| 		internal.ForceFlag, | ||||
| 	}, | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		if !internal.Force { | ||||
| 			response := false | ||||
|  | ||||
| @ -31,10 +31,7 @@ var appRestoreCommand = &cli.Command{ | ||||
| 	Flags:     []cli.Flag{restoreAllServicesFlag}, | ||||
| 	ArgsUsage: "<service> [<backup file>]", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		if c.Args().Len() > 1 && restoreAllServices { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("cannot use <service>/<backup file> and '--all' together")) | ||||
|  | ||||
| @ -40,10 +40,7 @@ var appRunCommand = &cli.Command{ | ||||
| 	ArgsUsage: "<service> <args>...", | ||||
| 	Usage:     "Run a command in a service container", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		if c.Args().Len() < 2 { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no <service> provided")) | ||||
|  | ||||
| @ -32,10 +32,7 @@ var appSecretGenerateCommand = &cli.Command{ | ||||
| 	ArgsUsage: "<secret> <version>", | ||||
| 	Flags:     []cli.Flag{allSecretsFlag, internal.PassFlag}, | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		if c.Args().Get(1) != "" && allSecrets { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("cannot use '<secret> <version>' and '--all' together")) | ||||
| @ -91,10 +88,7 @@ var appSecretInsertCommand = &cli.Command{ | ||||
| 	Flags:     []cli.Flag{internal.PassFlag}, | ||||
| 	ArgsUsage: "<secret> <version> <data>", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		if c.Args().Len() != 4 { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("missing arguments?")) | ||||
| @ -137,10 +131,7 @@ var appSecretRmCommand = &cli.Command{ | ||||
| 	Flags:     []cli.Flag{allSecretsFlag, internal.PassFlag}, | ||||
| 	ArgsUsage: "<secret>", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		if c.Args().Get(1) != "" && allSecrets { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("cannot use '<secret>' and '--all' together")) | ||||
| @ -210,10 +201,8 @@ var appSecretLsCommand = &cli.Command{ | ||||
| 	Usage:   "List all secrets", | ||||
| 	Aliases: []string{"ls"}, | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		appFiles, err := config.LoadAppFiles("") | ||||
| 		if err != nil { | ||||
| 			logrus.Fatal(err) | ||||
|  | ||||
| @ -2,7 +2,6 @@ package app | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"errors" | ||||
|  | ||||
| 	"coopcloud.tech/abra/cli/internal" | ||||
| 	"coopcloud.tech/abra/pkg/client" | ||||
| @ -22,10 +21,7 @@ vigilant, as your swarm installation will consider any previously attached | ||||
| volumes as eligiblef or pruning once undeployed. | ||||
| `, | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		appFiles, err := config.LoadAppFiles("") | ||||
| 		if err != nil { | ||||
|  | ||||
| @ -1,7 +1,6 @@ | ||||
| package app | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"sort" | ||||
| 	"strings" | ||||
| @ -46,10 +45,8 @@ var appVersionCommand = &cli.Command{ | ||||
| 	Aliases: []string{"v"}, | ||||
| 	Usage:   "Show version of all services in app", | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		appFiles, err := config.LoadAppFiles("") | ||||
| 		if err != nil { | ||||
| 			logrus.Fatal(err) | ||||
|  | ||||
| @ -2,7 +2,6 @@ package app | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"errors" | ||||
|  | ||||
| 	abraFormatter "coopcloud.tech/abra/cli/formatter" | ||||
| 	"coopcloud.tech/abra/cli/internal" | ||||
| @ -34,10 +33,7 @@ var appVolumeListCommand = &cli.Command{ | ||||
| 	Usage:   "list volumes associated with an app", | ||||
| 	Aliases: []string{"ls"}, | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided!")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
|  | ||||
| 		ctx := context.Background() | ||||
| 		server := getAppServer(appName) | ||||
| @ -68,10 +64,7 @@ var appVolumeRemoveCommand = &cli.Command{ | ||||
| 		internal.ForceFlag, | ||||
| 	}, | ||||
| 	Action: func(c *cli.Context) error { | ||||
| 		appName := c.Args().First() | ||||
| 		if appName == "" { | ||||
| 			internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided!")) | ||||
| 		} | ||||
| 		appName := internal.ValidateAppNameArg(c) | ||||
| 		server := getAppServer(appName) | ||||
| 		ctx := context.Background() | ||||
| 		volumeList, err := client.GetVolumes(ctx, server, appName) | ||||
|  | ||||
| @ -3,6 +3,7 @@ package internal | ||||
| import ( | ||||
| 	"errors" | ||||
|  | ||||
| 	"coopcloud.tech/abra/pkg/config" | ||||
| 	"coopcloud.tech/abra/pkg/recipe" | ||||
| 	"github.com/sirupsen/logrus" | ||||
| 	"github.com/urfave/cli/v2" | ||||
| @ -22,3 +23,23 @@ func ValidateRecipeArg(c *cli.Context) string { | ||||
|  | ||||
| 	return recipeName | ||||
| } | ||||
|  | ||||
| // ValidateAppNameArg ensures the app name arg is valid. | ||||
| func ValidateAppNameArg(c *cli.Context) string { | ||||
| 	appName := c.Args().First() | ||||
|  | ||||
| 	if appName == "" { | ||||
| 		ShowSubcommandHelpAndError(c, errors.New("no app provided")) | ||||
| 	} | ||||
|  | ||||
| 	appFiles, err := config.LoadAppFiles("") | ||||
| 	if err != nil { | ||||
| 		logrus.Fatal(err) | ||||
| 	} | ||||
|  | ||||
| 	if _, ok := appFiles[appName]; !ok { | ||||
| 		logrus.Fatalf("'%s' doesn't exist?", appName) | ||||
| 	} | ||||
|  | ||||
| 	return appName | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user