Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 26 additions & 8 deletions pkg/cmd/delete/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (
var (
//go:embed doc.md
deleteLong string
deleteExample = "brev delete <ws_name>"
deleteExample = "brev delete <ws_name>...\necho instance-name | brev delete"
)

type DeleteStore interface {
Expand All @@ -37,11 +37,25 @@ func NewCmdDelete(t *terminal.Terminal, loginDeleteStore DeleteStore, noLoginDel
Example: deleteExample,
ValidArgsFunction: completions.GetAllWorkspaceNameCompletionHandler(noLoginDeleteStore, t),
RunE: func(cmd *cobra.Command, args []string) error {
piped := util.IsStdoutPiped()
names, err := util.GetInstanceNames(args)
if err != nil {
return breverrors.WrapAndTrace(err)
}
var allError error
for _, workspace := range args {
err := deleteWorkspace(workspace, t, loginDeleteStore)
var deletedNames []string
for _, workspace := range names {
err := deleteWorkspace(workspace, t, loginDeleteStore, piped)
if err != nil {
allError = multierror.Append(allError, err)
} else {
deletedNames = append(deletedNames, workspace)
}
}
// Output names for piping to next command
if piped {
for _, name := range deletedNames {
fmt.Println(name)
}
}
if allError != nil {
Expand All @@ -54,10 +68,10 @@ func NewCmdDelete(t *terminal.Terminal, loginDeleteStore DeleteStore, noLoginDel
return cmd
}

func deleteWorkspace(workspaceName string, t *terminal.Terminal, deleteStore DeleteStore) error {
func deleteWorkspace(workspaceName string, t *terminal.Terminal, deleteStore DeleteStore, piped bool) error {
workspace, err := util.GetUserWorkspaceByNameOrIDErr(deleteStore, workspaceName)
if err != nil {
err1 := handleAdminUser(err, deleteStore)
err1 := handleAdminUser(err, deleteStore, piped)
if err1 != nil {
return breverrors.WrapAndTrace(err1)
}
Expand All @@ -75,12 +89,14 @@ func deleteWorkspace(workspaceName string, t *terminal.Terminal, deleteStore Del
return breverrors.WrapAndTrace(err)
}

t.Vprintf("Deleting instance %s. This can take a few minutes. Run 'brev ls' to check status\n", deletedWorkspace.Name)
if !piped {
t.Vprintf("Deleting instance %s. This can take a few minutes. Run 'brev ls' to check status\n", deletedWorkspace.Name)
}

return nil
}

func handleAdminUser(err error, deleteStore DeleteStore) error {
func handleAdminUser(err error, deleteStore DeleteStore, piped bool) error {
if strings.Contains(err.Error(), "not found") {
user, err1 := deleteStore.GetCurrentUser()
if err1 != nil {
Expand All @@ -89,7 +105,9 @@ func handleAdminUser(err error, deleteStore DeleteStore) error {
if user.GlobalUserType != "Admin" {
return breverrors.WrapAndTrace(err)
}
fmt.Println("attempting to delete an instance you don't own as admin")
if !piped {
fmt.Println("attempting to delete an instance you don't own as admin")
}
return nil
}

Expand Down
Loading
Loading