github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/imagetool/getFileInImage.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io" 6 "os" 7 8 "github.com/Cloud-Foundations/Dominator/lib/fsutil" 9 "github.com/Cloud-Foundations/Dominator/lib/log" 10 objectclient "github.com/Cloud-Foundations/Dominator/lib/objectserver/client" 11 ) 12 13 func getFileInImageSubcommand(args []string, logger log.DebugLogger) error { 14 _, objectClient := getClients() 15 var outFileName string 16 if len(args) > 2 { 17 outFileName = args[2] 18 } 19 err := getFileInImage(objectClient, args[0], args[1], outFileName) 20 if err != nil { 21 return fmt.Errorf("error getting file in image: %s", err) 22 } 23 return nil 24 } 25 26 func getFileInImage(objectClient *objectclient.ObjectClient, imageName, 27 imageFile, outFileName string) error { 28 if reader, err := getTypedFileReader(imageName, imageFile); err != nil { 29 return err 30 } else { 31 defer reader.Close() 32 if outFileName == "" { 33 _, err := io.Copy(os.Stdout, reader) 34 return err 35 } else { 36 return fsutil.CopyToFile(outFileName, filePerms, reader, 0) 37 } 38 } 39 }