99 "time"
1010
1111 "github.com/AlecAivazis/survey/v2"
12+ "github.com/github/ghcs/cmd/ghcs/output"
1213 "github.com/github/ghcs/internal/api"
1314 "github.com/spf13/cobra"
1415 "golang.org/x/sync/errgroup"
@@ -55,7 +56,8 @@ func newDeleteCmd() *cobra.Command {
5556 if opts .deleteAll && opts .repoFilter != "" {
5657 return errors .New ("both --all and --repo is not supported" )
5758 }
58- return delete (context .Background (), opts )
59+ log := output .NewLogger (cmd .OutOrStdout (), cmd .ErrOrStderr (), ! opts .isInteractive )
60+ return delete (context .Background (), log , opts )
5961 },
6062 }
6163
@@ -68,7 +70,11 @@ func newDeleteCmd() *cobra.Command {
6870 return deleteCmd
6971}
7072
71- func delete (ctx context.Context , opts deleteOptions ) error {
73+ type logger interface {
74+ Errorf (format string , v ... interface {}) (int , error )
75+ }
76+
77+ func delete (ctx context.Context , log logger , opts deleteOptions ) error {
7278 user , err := opts .apiClient .GetUser (ctx )
7379 if err != nil {
7480 return fmt .Errorf ("error getting user: %w" , err )
@@ -127,13 +133,17 @@ func delete(ctx context.Context, opts deleteOptions) error {
127133 codespaceName := c .Name
128134 g .Go (func () error {
129135 if err := opts .apiClient .DeleteCodespace (ctx , user .Login , codespaceName ); err != nil {
130- return fmt .Errorf ("error deleting codespace: %w" , err )
136+ log .Errorf ("error deleting codespace %q: %v" , codespaceName , err )
137+ return err
131138 }
132139 return nil
133140 })
134141 }
135142
136- return g .Wait ()
143+ if err := g .Wait (); err != nil {
144+ return errors .New ("some codespaces failed to delete" )
145+ }
146+ return nil
137147}
138148
139149func confirmDeletion (p prompter , codespace * api.Codespace , isInteractive bool ) (bool , error ) {
0 commit comments