Skip to content

Commit 617ee4a

Browse files
committed
Refactored 'rmi' command (scaleway#80)
1 parent ca2ae82 commit 617ee4a

File tree

2 files changed

+45
-21
lines changed

2 files changed

+45
-21
lines changed

pkg/cli/rmi.go

+10-21
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
package cli
66

77
import (
8-
"fmt"
9-
"os"
10-
11-
log "github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
8+
"github.com/scaleway/scaleway-cli/pkg/commands"
9+
"github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
1210
)
1311

1412
var cmdRmi = &Command{
@@ -29,29 +27,20 @@ func init() {
2927
// Flags
3028
var rmiHelp bool // -h, --help flag
3129

32-
func runRmi(cmd *Command, args []string) {
30+
func runRmi(cmd *Command, rawArgs []string) {
3331
if rmiHelp {
3432
cmd.PrintUsage()
3533
}
36-
if len(args) < 1 {
34+
if len(rawArgs) < 1 {
3735
cmd.PrintShortUsage()
3836
}
3937

40-
if len(args) == 0 {
41-
log.Fatalf("usage: scw %s", cmd.UsageLine)
42-
}
43-
hasError := false
44-
for _, needle := range args {
45-
image := cmd.API.GetImageID(needle, true)
46-
err := cmd.API.DeleteImage(image)
47-
if err != nil {
48-
log.Errorf("failed to delete image %s: %s", image, err)
49-
hasError = true
50-
} else {
51-
fmt.Println(needle)
52-
}
38+
args := commands.RmiArgs{
39+
Images: rawArgs,
5340
}
54-
if hasError {
55-
os.Exit(1)
41+
ctx := cmd.GetContext(rawArgs)
42+
err := commands.RunRmi(ctx, args)
43+
if err != nil {
44+
logrus.Fatalf("Cannot execute 'rmi': %v", err)
5645
}
5746
}

pkg/commands/rmi.go

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Copyright (C) 2015 Scaleway. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE.md file.
4+
5+
package commands
6+
7+
import (
8+
"fmt"
9+
10+
"github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
11+
)
12+
13+
// RmiArgs are flags for the `RunRmi` function
14+
type RmiArgs struct {
15+
Images []string
16+
}
17+
18+
// RunRmi is the handler for 'scw rmi'
19+
func RunRmi(ctx CommandContext, args RmiArgs) error {
20+
hasError := false
21+
for _, needle := range args.Images {
22+
image := ctx.API.GetImageID(needle, true)
23+
err := ctx.API.DeleteImage(image)
24+
if err != nil {
25+
logrus.Errorf("failed to delete image %s: %s", image, err)
26+
hasError = true
27+
} else {
28+
fmt.Fprintln(ctx.Stdout, needle)
29+
}
30+
}
31+
if hasError {
32+
return fmt.Errorf("at least 1 image failed to be removed")
33+
}
34+
return nil
35+
}

0 commit comments

Comments
 (0)