diff --git a/cli/app/remove.go b/cli/app/remove.go index 35ad16ef..9bc4d0dd 100644 --- a/cli/app/remove.go +++ b/cli/app/remove.go @@ -3,6 +3,7 @@ package app import ( "context" "errors" + "fmt" "os" "strings" @@ -26,133 +27,113 @@ var VolumesFlag = &cli.BoolFlag{ Destination: &Volumes, } -var Force bool - -var ForceFlag = &cli.BoolFlag{ - Name: "force", - Value: false, - Destination: &Force, -} - var appRemoveCommand = &cli.Command{ Name: "remove", Aliases: []string{"rm", "delete"}, Flags: []cli.Flag{ VolumesFlag, - ForceFlag, + internal.ForceFlag, }, Action: func(c *cli.Context) error { - // Check if app name was provided by user - AppName := c.Args().First() - if AppName == "" { + appName := c.Args().First() + if appName == "" { internal.ShowSubcommandHelpAndError(c, errors.New("No app name provided!")) } - // Make sure that the user really wants to delete the app - if !Force { + if !internal.Force { response := false prompt := &survey.Confirm{ - Message: "About to delete " + AppName + ", are you sure?", + Message: fmt.Sprintf("About to delete %s, are you sure", appName), } survey.AskOne(prompt, &response) - if response == false { + if !response { return errors.New("User aborted app removal") } } - // Get app list - AppFiles, err := config.LoadAppFiles("") + appFiles, err := config.LoadAppFiles("") if err != nil { - return err + logrus.Fatal(err) } - AppPath := AppFiles[AppName].Path - host := AppFiles[AppName].Server - // Initialize docker client + appPath := appFiles[appName].Path + fmt.Println(appFiles) + host := appFiles[appName].Server ctx := context.Background() cl, err := client.NewClientWithContext(host) if err != nil { - return err + logrus.Fatal(err) } - // Remove the file - err = os.Remove(AppPath) + err = os.Remove(appPath) if err != nil { - return err + logrus.Fatal(err) } else { - logrus.Info("File :" + AppPath + " removed.") + logrus.Info(fmt.Sprintf("File: %s removed", appPath)) } - // Check if the app has secrets fs := filters.NewArgs() - fs.Add("name", AppName) - SecretList, err := cl.SecretList(ctx, types.SecretListOptions{Filters: fs}) + fs.Add("name", appName) + secretList, err := cl.SecretList(ctx, types.SecretListOptions{Filters: fs}) if err != nil { - return err + logrus.Fatal(err) } - Secrets := make(map[string]string) - SecretNames := []string{} - for _, cont := range SecretList { - Secrets[cont.Spec.Annotations.Name] = cont.ID //we have to map the names to ID's - SecretNames = append(SecretNames, cont.Spec.Annotations.Name) + secrets := make(map[string]string) + secretNames := []string{} + for _, cont := range secretList { + secrets[cont.Spec.Annotations.Name] = cont.ID //we have to map the names to ID's + secretNames = append(secretNames, cont.Spec.Annotations.Name) } - SecretNamesToRemove := []string{} + secretNamesToRemove := []string{} - // Ask if the user really wants to remove the apps - if Force { - SecretNamesToRemove = SecretNames + if internal.Force { + secretNamesToRemove = secretNames } else { - SecretsPrompt := &survey.MultiSelect{ + secretsPrompt := &survey.MultiSelect{ Message: "Which secrets do you want to remove?", - Options: SecretNames, - Default: SecretNames, + Options: secretNames, + Default: secretNames, } - survey.AskOne(SecretsPrompt, &SecretNamesToRemove) + survey.AskOne(secretsPrompt, &secretNamesToRemove) } - // Actually remove the secrets - for _, name := range SecretNamesToRemove { - // DEBUG: SecretIDsToRemove = append(SecretIDsToRemove, Secrets[name]) - err := cl.SecretRemove(ctx, Secrets[name]) + for _, name := range secretNamesToRemove { + err := cl.SecretRemove(ctx, secrets[name]) if err != nil { - return err + logrus.Fatal(err) } else { - logrus.Info("Secret: " + name + " removed") + logrus.Info(fmt.Sprintf("Secret: %s removed", name)) } } - // Get volumes associated with the app - VolumeListOKBody, err := cl.VolumeList(ctx, fs) - VolumeList := VolumeListOKBody.Volumes + volumeListOKBody, err := cl.VolumeList(ctx, fs) + volumeList := volumeListOKBody.Volumes if err != nil { - return err + logrus.Fatal(err) } - Vols := []string{} - for _, vol := range VolumeList { - Vols = append(Vols, vol.Name) + vols := []string{} + for _, vol := range volumeList { + vols = append(vols, vol.Name) } - // Remove the volumes if desired - if Volumes == true { - RemoveVols := []string{} - // If there's no --force, ask if the user wants to remove - if Force { - RemoveVols = Vols + if Volumes { + removeVols := []string{} + if internal.Force { + removeVols = vols } else { - VolumesPrompt := &survey.MultiSelect{ + volumesPrompt := &survey.MultiSelect{ Message: "Which volumes do you want to remove?", - Options: Vols, - Default: Vols, + Options: vols, + Default: vols, } - survey.AskOne(VolumesPrompt, &RemoveVols) + survey.AskOne(volumesPrompt, &removeVols) } - // Remove the volumes - for _, vol := range RemoveVols { - err := cl.VolumeRemove(ctx, vol, Force) // false is for force removing + for _, vol := range removeVols { + err := cl.VolumeRemove(ctx, vol, internal.Force) // last argument is for force removing if err != nil { - return err + logrus.Fatal(err) } else { logrus.Info("Volume " + vol + " removed") } } } else { - logrus.Info("No volumes were removed. Volumes left: " + strings.Join(Vols, ", ")) + logrus.Info("No volumes were removed. Volumes left: " + strings.Join(vols, ", ")) } return nil diff --git a/cli/internal/common.go b/cli/internal/common.go index a0366162..a77784f9 100644 --- a/cli/internal/common.go +++ b/cli/internal/common.go @@ -42,3 +42,12 @@ var ContextFlag = &cli.StringFlag{ Aliases: []string{"c"}, Destination: &Context, } + +var Force bool + +var ForceFlag = &cli.BoolFlag{ + Name: "force", + Value: false, + Aliases: []string{"f"}, + Destination: &Force, +}