github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/unpacker-tool/getRaw.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "time" 6 7 uclient "github.com/Cloud-Foundations/Dominator/imageunpacker/client" 8 "github.com/Cloud-Foundations/Dominator/lib/format" 9 "github.com/Cloud-Foundations/Dominator/lib/fsutil" 10 "github.com/Cloud-Foundations/Dominator/lib/log" 11 "github.com/Cloud-Foundations/Dominator/lib/srpc" 12 ) 13 14 func getRawSubcommand(args []string, logger log.DebugLogger) error { 15 if err := getRaw(getClient(), args[0], logger); err != nil { 16 return fmt.Errorf("error getting raw data: %s", err) 17 } 18 return nil 19 } 20 21 func getRaw(client *srpc.Client, streamName string, 22 logger log.DebugLogger) error { 23 if *filename == "" { 24 return fmt.Errorf("no image filename specified") 25 } 26 reader, length, err := uclient.GetRaw(client, streamName) 27 if err != nil { 28 return err 29 } 30 defer reader.Close() 31 startTime := time.Now() 32 err = fsutil.CopyToFile(*filename, fsutil.PrivateFilePerms, reader, length) 33 if err != nil { 34 return err 35 } 36 timeTaken := time.Since(startTime) 37 logger.Printf("downloaded %s in %s (%s/s)\n", 38 format.FormatBytes(length), format.Duration(timeTaken), 39 format.FormatBytes(uint64(float64(length)/timeTaken.Seconds()))) 40 return nil 41 }