Skip to content

Commit c2a323c

Browse files
committed
Refactored code to prevent passing command as argument
1 parent df8a996 commit c2a323c

File tree

22 files changed

+135
-135
lines changed

22 files changed

+135
-135
lines changed

api.go

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"net/http"
88
"net/url"
9+
"os"
910
"strings"
1011

1112
log "github.com/Sirupsen/logrus"
@@ -1076,3 +1077,87 @@ func (s *ScalewayAPI) CheckCredentials() error {
10761077
}
10771078
return nil
10781079
}
1080+
1081+
// GetServerID returns exactly one server matching or dies
1082+
func (s *ScalewayAPI) GetServerID(needle string) string {
1083+
servers, err := s.ResolveServer(needle)
1084+
if err != nil {
1085+
log.Fatalf("Unable to resolve server %s: %s", needle, err)
1086+
}
1087+
if len(servers) == 1 {
1088+
return servers[0]
1089+
}
1090+
if len(servers) == 0 {
1091+
log.Fatalf("No such server: %s", needle)
1092+
}
1093+
log.Errorf("Too many candidates for %s (%d)", needle, len(servers))
1094+
for _, identifier := range servers {
1095+
// FIXME: also print the name
1096+
log.Infof("- %s", identifier)
1097+
}
1098+
os.Exit(1)
1099+
return ""
1100+
}
1101+
1102+
// GetSnapshotID returns exactly one snapshot matching or dies
1103+
func (s *ScalewayAPI) GetSnapshotID(needle string) string {
1104+
snapshots, err := s.ResolveSnapshot(needle)
1105+
if err != nil {
1106+
log.Fatalf("Unable to resolve snapshot %s: %s", needle, err)
1107+
}
1108+
if len(snapshots) == 1 {
1109+
return snapshots[0]
1110+
}
1111+
if len(snapshots) == 0 {
1112+
log.Fatalf("No such snapshot: %s", needle)
1113+
}
1114+
log.Errorf("Too many candidates for %s (%d)", needle, len(snapshots))
1115+
for _, identifier := range snapshots {
1116+
// FIXME: also print the name
1117+
log.Infof("- %s", identifier)
1118+
}
1119+
os.Exit(1)
1120+
return ""
1121+
}
1122+
1123+
// GetImageID returns exactly one image matching or dies
1124+
func (s *ScalewayAPI) GetImageID(needle string) string {
1125+
images, err := s.ResolveImage(needle)
1126+
if err != nil {
1127+
log.Fatalf("Unable to resolve image %s: %s", needle, err)
1128+
}
1129+
if len(images) == 1 {
1130+
return images[0]
1131+
}
1132+
if len(images) == 0 {
1133+
log.Fatalf("No such image: %s", needle)
1134+
}
1135+
log.Errorf("Too many candidates for %s (%d)", needle, len(images))
1136+
for _, identifier := range images {
1137+
// FIXME: also print the name
1138+
log.Infof("- %s", identifier)
1139+
}
1140+
os.Exit(1)
1141+
return ""
1142+
}
1143+
1144+
// GetBootscriptID returns exactly one bootscript matching or dies
1145+
func (s *ScalewayAPI) GetBootscriptID(needle string) string {
1146+
bootscripts, err := s.ResolveBootscript(needle)
1147+
if err != nil {
1148+
log.Fatalf("Unable to resolve bootscript %s: %s", needle, err)
1149+
}
1150+
if len(bootscripts) == 1 {
1151+
return bootscripts[0]
1152+
}
1153+
if len(bootscripts) == 0 {
1154+
log.Fatalf("No such bootscript: %s", needle)
1155+
}
1156+
log.Errorf("Too many candidates for %s (%d)", needle, len(bootscripts))
1157+
for _, identifier := range bootscripts {
1158+
// FIXME: also print the name
1159+
log.Infof("- %s", identifier)
1160+
}
1161+
os.Exit(1)
1162+
return ""
1163+
}

attach.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func runAttach(cmd *Command, args []string) {
3737
cmd.PrintShortUsage()
3838
}
3939

40-
serverID := cmd.GetServer(args[0])
40+
serverID := cmd.API.GetServerID(args[0])
4141

4242
termjsURL := fmt.Sprintf("https://tty.cloud.online.net?server_id=%s&type=serial&auth_token=%s", serverID, cmd.API.Token)
4343

cli.go

Lines changed: 0 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -149,90 +149,6 @@ func (c *Command) ExamplesHelp() string {
149149
return fmt.Sprintf("Examples:\n\n%s", strings.Trim(c.Examples, "\n"))
150150
}
151151

152-
// GetServer returns exactly one server matching or dies
153-
func (c *Command) GetServer(needle string) string {
154-
servers, err := c.API.ResolveServer(needle)
155-
if err != nil {
156-
log.Fatalf("Unable to resolve server %s: %s", needle, err)
157-
}
158-
if len(servers) == 1 {
159-
return servers[0]
160-
}
161-
if len(servers) == 0 {
162-
log.Fatalf("No such server: %s", needle)
163-
}
164-
log.Errorf("Too many candidates for %s (%d)", needle, len(servers))
165-
for _, identifier := range servers {
166-
// FIXME: also print the name
167-
log.Infof("- %s", identifier)
168-
}
169-
os.Exit(1)
170-
return ""
171-
}
172-
173-
// GetSnapshot returns exactly one snapshot matching or dies
174-
func (c *Command) GetSnapshot(needle string) string {
175-
snapshots, err := c.API.ResolveSnapshot(needle)
176-
if err != nil {
177-
log.Fatalf("Unable to resolve snapshot %s: %s", needle, err)
178-
}
179-
if len(snapshots) == 1 {
180-
return snapshots[0]
181-
}
182-
if len(snapshots) == 0 {
183-
log.Fatalf("No such snapshot: %s", needle)
184-
}
185-
log.Errorf("Too many candidates for %s (%d)", needle, len(snapshots))
186-
for _, identifier := range snapshots {
187-
// FIXME: also print the name
188-
log.Infof("- %s", identifier)
189-
}
190-
os.Exit(1)
191-
return ""
192-
}
193-
194-
// GetImage returns exactly one image matching or dies
195-
func (c *Command) GetImage(needle string) string {
196-
images, err := c.API.ResolveImage(needle)
197-
if err != nil {
198-
log.Fatalf("Unable to resolve image %s: %s", needle, err)
199-
}
200-
if len(images) == 1 {
201-
return images[0]
202-
}
203-
if len(images) == 0 {
204-
log.Fatalf("No such image: %s", needle)
205-
}
206-
log.Errorf("Too many candidates for %s (%d)", needle, len(images))
207-
for _, identifier := range images {
208-
// FIXME: also print the name
209-
log.Infof("- %s", identifier)
210-
}
211-
os.Exit(1)
212-
return ""
213-
}
214-
215-
// GetBootscript returns exactly one bootscript matching or dies
216-
func (c *Command) GetBootscript(needle string) string {
217-
bootscripts, err := c.API.ResolveBootscript(needle)
218-
if err != nil {
219-
log.Fatalf("Unable to resolve bootscript %s: %s", needle, err)
220-
}
221-
if len(bootscripts) == 1 {
222-
return bootscripts[0]
223-
}
224-
if len(bootscripts) == 0 {
225-
log.Fatalf("No such bootscript: %s", needle)
226-
}
227-
log.Errorf("Too many candidates for %s (%d)", needle, len(bootscripts))
228-
for _, identifier := range bootscripts {
229-
// FIXME: also print the name
230-
log.Infof("- %s", identifier)
231-
}
232-
os.Exit(1)
233-
return ""
234-
}
235-
236152
var commands = []*Command{
237153
cmdAttach,
238154
cmdCommit,

commit.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func runCommit(cmd *Command, args []string) {
3434
cmd.PrintShortUsage()
3535
}
3636

37-
serverID := cmd.GetServer(args[0])
37+
serverID := cmd.API.GetServerID(args[0])
3838
server, err := cmd.API.GetServer(serverID)
3939
if err != nil {
4040
log.Fatalf("Cannot fetch server: %v", err)

cp.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func runCp(cmd *Command, args []string) {
4040
log.Fatalf("usage: scw %s", cmd.UsageLine)
4141
}
4242

43-
serverID := cmd.GetServer(serverParts[0])
43+
serverID := cmd.API.GetServerID(serverParts[0])
4444

4545
server, err := cmd.API.GetServer(serverID)
4646
if err != nil {

create.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ var createEnv string // -e, --env flag
3838
var createVolume string // -v, --volume flag
3939
var createHelp bool // -h, --help flag
4040

41-
// CreateVolumeFromHumanSize create a new volume using the API from a human-readable size
42-
func CreateVolumeFromHumanSize(cmd *Command, size string) (*string, error) {
41+
func CreateVolumeFromHumanSize(api *ScalewayAPI, size string) (*string, error) {
4342
bytes, err := humanize.ParseBytes(size)
4443
if err != nil {
4544
return nil, err
@@ -50,15 +49,15 @@ func CreateVolumeFromHumanSize(cmd *Command, size string) (*string, error) {
5049
newVolume.Size = bytes
5150
newVolume.Type = "l_ssd"
5251

53-
volumeID, err := cmd.API.PostVolume(newVolume)
52+
volumeID, err := api.PostVolume(newVolume)
5453
if err != nil {
5554
return nil, err
5655
}
5756

5857
return &volumeID, nil
5958
}
6059

61-
func createServer(cmd *Command, imageName string, name string, bootscript string, env string, additionalVolumes string) (string, error) {
60+
func createServer(api *ScalewayAPI, imageName string, name string, bootscript string, env string, additionalVolumes string) (string, error) {
6261
if name == "" {
6362
name = strings.Replace(namesgenerator.GetRandomName(0), "_", "-", -1)
6463
}
@@ -73,7 +72,7 @@ func createServer(cmd *Command, imageName string, name string, bootscript string
7372
if additionalVolumes != "" {
7473
volumes := strings.Split(additionalVolumes, " ")
7574
for i := range volumes {
76-
volumeID, err := CreateVolumeFromHumanSize(cmd, volumes[i])
75+
volumeID, err := CreateVolumeFromHumanSize(api, volumes[i])
7776
if err != nil {
7877
return "", err
7978
}
@@ -84,26 +83,26 @@ func createServer(cmd *Command, imageName string, name string, bootscript string
8483
}
8584
server.Name = name
8685
if bootscript != "" {
87-
bootscript := cmd.GetBootscript(bootscript)
86+
bootscript := api.GetBootscriptID(bootscript)
8887
server.Bootscript = &bootscript
8988
}
9089

9190
_, err := humanize.ParseBytes(imageName)
9291
if err == nil {
9392
// Create a new root volume
94-
volumeID, err := CreateVolumeFromHumanSize(cmd, imageName)
93+
volumeID, err := CreateVolumeFromHumanSize(api, imageName)
9594
if err != nil {
9695
return "", err
9796
}
9897
server.Volumes["0"] = *volumeID
9998
} else {
10099
// Use an existing image
101100
// FIXME: handle snapshots
102-
image := cmd.GetImage(imageName)
101+
image := api.GetImageID(imageName)
103102
server.Image = &image
104103
}
105104

106-
serverID, err := cmd.API.PostServer(server)
105+
serverID, err := api.PostServer(server)
107106
if err != nil {
108107
return "", nil
109108
}
@@ -120,7 +119,7 @@ func runCreate(cmd *Command, args []string) {
120119
cmd.PrintShortUsage()
121120
}
122121

123-
serverID, err := createServer(cmd, args[0], createName, createBootscript, createEnv, createVolume)
122+
serverID, err := createServer(cmd.API, args[0], createName, createBootscript, createEnv, createVolume)
124123

125124
if err != nil {
126125
log.Fatalf("Failed to create server: %v", err)

exec.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func runExec(cmd *Command, args []string) {
157157
cmd.PrintShortUsage()
158158
}
159159

160-
serverID := cmd.GetServer(args[0])
160+
serverID := cmd.API.GetServerID(args[0])
161161

162162
var server *ScalewayServer
163163
var err error

history.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func runHistory(cmd *Command, args []string) {
3636
cmd.PrintShortUsage()
3737
}
3838

39-
imageID := cmd.GetImage(args[0])
39+
imageID := cmd.API.GetImageID(args[0])
4040
image, err := cmd.API.GetImage(imageID)
4141
if err != nil {
4242
log.Fatalf("Cannot get image %s: %v", imageID, err)

0 commit comments

Comments
 (0)