@@ -54,44 +54,40 @@ func runDownload(cfg config.Config, flags *pflag.FlagSet, args []string) error {
54
54
return err
55
55
}
56
56
57
- uuid , err := flags .GetString ("uuid " )
57
+ track , err := flags .GetString ("track " )
58
58
if err != nil {
59
59
return err
60
60
}
61
- slug , err := flags .GetString ("exercise" )
61
+
62
+ team , err := flags .GetString ("team" )
62
63
if err != nil {
63
64
return err
64
65
}
65
- if uuid != "" && slug != "" || uuid == slug {
66
- return errors .New ("need an --exercise name or a solution --uuid" )
67
- }
68
66
69
- track , err := flags . GetString ( "track" )
67
+ identifier , err := downloadIdentifier ( flags )
70
68
if err != nil {
71
69
return err
72
70
}
71
+ url := fmt .Sprintf ("%s/solutions/%s" , usrCfg .GetString ("apibaseurl" ), identifier )
73
72
74
- team , err := flags . GetString ("team" )
73
+ client , err := api . NewClient ( usrCfg . GetString ("token" ), usrCfg . GetString ( "apibaseurl" ) )
75
74
if err != nil {
76
75
return err
77
76
}
78
77
79
- param := "latest"
80
- if uuid != "" {
81
- param = uuid
78
+ req , err := client . NewRequest ( "GET" , url , nil )
79
+ if err != nil {
80
+ return err
82
81
}
83
- url := fmt .Sprintf ("%s/solutions/%s" , usrCfg .GetString ("apibaseurl" ), param )
84
82
85
- client , err := api . NewClient ( usrCfg . GetString ("token" ), usrCfg . GetString ( "apibaseurl" ) )
83
+ uuid , err := flags . GetString ("uuid" )
86
84
if err != nil {
87
85
return err
88
86
}
89
-
90
- req , err := client .NewRequest ("GET" , url , nil )
87
+ slug , err := flags .GetString ("exercise" )
91
88
if err != nil {
92
89
return err
93
90
}
94
-
95
91
if uuid == "" {
96
92
q := req .URL .Query ()
97
93
q .Add ("exercise_id" , slug )
@@ -252,6 +248,27 @@ func (dp downloadPayload) metadata() workspace.ExerciseMetadata {
252
248
}
253
249
}
254
250
251
+ // downloadIdentifier is the variable for the URI to initiate an exercise download.
252
+ func downloadIdentifier (flags * pflag.FlagSet ) (string , error ) {
253
+ uuid , err := flags .GetString ("uuid" )
254
+ if err != nil {
255
+ return "" , err
256
+ }
257
+ slug , err := flags .GetString ("exercise" )
258
+ if err != nil {
259
+ return "" , err
260
+ }
261
+ if uuid != "" && slug != "" || uuid == slug {
262
+ return "" , errors .New ("need an --exercise name or a solution --uuid" )
263
+ }
264
+
265
+ identifier := "latest"
266
+ if uuid != "" {
267
+ identifier = uuid
268
+ }
269
+ return identifier , nil
270
+ }
271
+
255
272
func setupDownloadFlags (flags * pflag.FlagSet ) {
256
273
flags .StringP ("uuid" , "u" , "" , "the solution UUID" )
257
274
flags .StringP ("track" , "t" , "" , "the track ID" )
0 commit comments