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  }