11package cmd
22
33import (
4+ "errors"
45 "fmt"
56 "io/ioutil"
67 "net/http"
@@ -277,10 +278,12 @@ deisctl looks for unit files in these directories, in this order:
277278- /var/lib/deis/units
278279
279280Usage:
280- deisctl refresh-units [-p <target>]
281+ deisctl refresh-units [-p <target>] [-t <tag>]
281282
282283Options:
283284 -p --path=<target> where to save unit files [default: /var/lib/deis/units]
285+ -t --tag=<tag> git tag, branch, or SHA to use when downloading unit files
286+ [default: master]
284287`
285288 // parse command-line arguments
286289 args , err := docopt .Parse (usage , nil , true , "" , false )
@@ -295,7 +298,7 @@ Options:
295298 }
296299 // download and save the unit files to the specified path
297300 rootURL := "https://raw.githubusercontent.com/deis/deisctl/"
298- branch := "master"
301+ tag := args [ "--tag" ].( string )
299302 units := []string {
300303 "deis-builder.service" ,
301304 "deis-builder-data.service" ,
@@ -310,12 +313,15 @@ Options:
310313 "deis-router.service" ,
311314 }
312315 for _ , unit := range units {
313- src := rootURL + branch + "/units/" + unit
316+ src := rootURL + tag + "/units/" + unit
314317 dest := filepath .Join (dir , unit )
315318 res , err := http .Get (src )
316319 if err != nil {
317320 return err
318321 }
322+ if res .StatusCode != 200 {
323+ return errors .New (res .Status )
324+ }
319325 defer res .Body .Close ()
320326 data , err := ioutil .ReadAll (res .Body )
321327 if err != nil {
@@ -324,7 +330,7 @@ Options:
324330 if err = ioutil .WriteFile (dest , data , 0644 ); err != nil {
325331 return err
326332 }
327- fmt .Printf ("Refreshed %s from %s\n " , unit , branch )
333+ fmt .Printf ("Refreshed %s from %s\n " , unit , tag )
328334 }
329335 return nil
330336}
0 commit comments