From 4362b0b241201ed90678b44ac8da6ff075784642 Mon Sep 17 00:00:00 2001 From: Issy Long Date: Wed, 4 Aug 2021 17:39:51 +0100 Subject: [PATCH] cmd/ghcs/delete: Display the interactive menu when there are no args - Currently the flow to delete a single Codespace is `gh cs list`, copy and paste the Codespace name onto the end of `gh cs delete`. - This improves consistency with other commands by letting the user choose which Codespace they want to delete, interactively. A Codespace name on the command-line still works too. --- cmd/ghcs/delete.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/cmd/ghcs/delete.go b/cmd/ghcs/delete.go index 2694e9cdf..f374ef7e6 100644 --- a/cmd/ghcs/delete.go +++ b/cmd/ghcs/delete.go @@ -7,18 +7,20 @@ import ( "os" "github.com/github/ghcs/api" + "github.com/github/ghcs/internal/codespaces" "github.com/spf13/cobra" ) func NewDeleteCmd() *cobra.Command { deleteCmd := &cobra.Command{ - Use: "delete CODESPACE_NAME", + Use: "delete", Short: "Delete a GitHub Codespace.", RunE: func(cmd *cobra.Command, args []string) error { - if len(args) == 0 { - return errors.New("A Codespace name is required.") + var codespaceName string + if len(args) > 0 { + codespaceName = args[0] } - return Delete(args[0]) + return Delete(codespaceName) }, } @@ -62,12 +64,12 @@ func Delete(codespaceName string) error { return fmt.Errorf("error getting user: %v", err) } - token, err := apiClient.GetCodespaceToken(ctx, user.Login, codespaceName) + codespace, token, err := codespaces.GetOrChooseCodespace(ctx, apiClient, user, codespaceName) if err != nil { - return fmt.Errorf("error getting codespace token: %v", err) + return fmt.Errorf("get or choose codespace: %v", err) } - if err := apiClient.DeleteCodespace(ctx, user, token, codespaceName); err != nil { + if err := apiClient.DeleteCodespace(ctx, user, token, codespace.Name); err != nil { return fmt.Errorf("error deleting codespace: %v", err) }