github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/actor/pushaction/resource.go (about)

     1  package pushaction
     2  
     3  import (
     4  	"os"
     5  
     6  	"code.cloudfoundry.org/cli/actor/v2action"
     7  	log "github.com/sirupsen/logrus"
     8  )
     9  
    10  func (actor Actor) CreateArchive(config ApplicationConfig) (string, error) {
    11  	log.Info("creating archive")
    12  
    13  	var archivePath string
    14  	var err error
    15  
    16  	if config.Archive {
    17  		archivePath, err = actor.V2Actor.ZipArchiveResources(config.Path, config.AllResources)
    18  	} else {
    19  		archivePath, err = actor.V2Actor.ZipDirectoryResources(config.Path, config.AllResources)
    20  	}
    21  	if err != nil {
    22  		log.WithField("path", config.Path).Errorln("archiving resources:", err)
    23  		return "", err
    24  	}
    25  	log.WithField("archivePath", archivePath).Debug("archive created")
    26  	return archivePath, nil
    27  }
    28  
    29  func (actor Actor) UploadPackage(config ApplicationConfig, archivePath string, progressbar ProgressBar, eventStream chan<- Event) (Warnings, error) {
    30  	log.Info("uploading archive")
    31  	archive, err := os.Open(archivePath)
    32  	if err != nil {
    33  		log.WithField("archivePath", archivePath).Errorln("opening temp archive:", err)
    34  		return nil, err
    35  	}
    36  	defer archive.Close()
    37  
    38  	archiveInfo, err := archive.Stat()
    39  	if err != nil {
    40  		log.WithField("archivePath", archivePath).Errorln("stat temp archive:", err)
    41  		return nil, err
    42  	}
    43  
    44  	log.WithFields(log.Fields{
    45  		"appGUID":     config.DesiredApplication.GUID,
    46  		"archiveSize": archiveInfo.Size(),
    47  	}).Debug("uploading app bits")
    48  
    49  	eventStream <- UploadingApplication
    50  	reader := progressbar.NewProgressBarWrapper(archive, archiveInfo.Size())
    51  
    52  	var allWarnings Warnings
    53  	job, warnings, err := actor.V2Actor.UploadApplicationPackage(config.DesiredApplication.GUID, []v2action.Resource{}, reader, archiveInfo.Size())
    54  	allWarnings = append(allWarnings, Warnings(warnings)...)
    55  
    56  	if err != nil {
    57  		log.WithField("archivePath", archivePath).Errorln("streaming archive:", err)
    58  		return allWarnings, err
    59  	}
    60  	eventStream <- UploadComplete
    61  	warnings, err = actor.V2Actor.PollJob(job)
    62  	allWarnings = append(allWarnings, Warnings(warnings)...)
    63  
    64  	return allWarnings, err
    65  }