5
5
package cli
6
6
7
7
import (
8
- "fmt"
9
- "os"
10
- "time"
8
+ "github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
11
9
12
- log "github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
13
-
14
- "github.com/scaleway/scaleway-cli/pkg/api"
10
+ "github.com/scaleway/scaleway-cli/pkg/commands"
15
11
)
16
12
17
13
var cmdStart = & Command {
@@ -32,46 +28,22 @@ var startW bool // -w flag
32
28
var startTimeout float64 // -T flag
33
29
var startHelp bool // -h, --help flag
34
30
35
- func runStart (cmd * Command , args []string ) {
31
+ func runStart (cmd * Command , rawArgs []string ) {
36
32
if startHelp {
37
33
cmd .PrintUsage ()
38
34
}
39
- if len (args ) < 1 {
35
+ if len (rawArgs ) < 1 {
40
36
cmd .PrintShortUsage ()
41
37
}
42
38
43
- hasError := false
44
- errChan := make (chan error )
45
- successChan := make (chan bool )
46
- remainingItems := len (args )
47
-
48
- for i := range args {
49
- needle := args [i ]
50
- go api .StartServerOnce (cmd .API , needle , startW , successChan , errChan )
51
- }
52
-
53
- if startTimeout > 0 {
54
- go func () {
55
- time .Sleep (time .Duration (startTimeout * 1000 ) * time .Millisecond )
56
- log .Fatalf ("Operation timed out" )
57
- }()
58
- }
59
-
60
- for {
61
- select {
62
- case _ = <- successChan :
63
- remainingItems --
64
- case err := <- errChan :
65
- log .Errorf (fmt .Sprintf ("%s" , err ))
66
- remainingItems --
67
- hasError = true
68
- }
69
-
70
- if remainingItems == 0 {
71
- break
72
- }
39
+ args := commands.StartArgs {
40
+ Servers : rawArgs ,
41
+ Timeout : startTimeout ,
42
+ Wait : startW ,
73
43
}
74
- if hasError {
75
- os .Exit (1 )
44
+ ctx := cmd .GetContext (rawArgs )
45
+ err := commands .RunStart (ctx , args )
46
+ if err != nil {
47
+ logrus .Fatalf ("Cannot execute 'start': %v" , err )
76
48
}
77
49
}
0 commit comments