github.com/jfrog/jfrog-cli-go@v1.22.1-0.20200318093948-4826ef344ffd/bintray/commands/upload.go (about)

     1  package commands
     2  
     3  import (
     4  	"errors"
     5  	"github.com/jfrog/jfrog-cli-go/utils/config"
     6  	"github.com/jfrog/jfrog-client-go/bintray"
     7  	"github.com/jfrog/jfrog-client-go/bintray/services"
     8  	"github.com/jfrog/jfrog-client-go/bintray/services/packages"
     9  	"github.com/jfrog/jfrog-client-go/bintray/services/repositories"
    10  	"github.com/jfrog/jfrog-client-go/bintray/services/versions"
    11  	"github.com/jfrog/jfrog-client-go/utils/errorutils"
    12  	"github.com/jfrog/jfrog-client-go/utils/log"
    13  )
    14  
    15  func Upload(config bintray.Config, uploadDetails *services.UploadParams) (uploaded int, failed int, err error) {
    16  	var sm *bintray.ServicesManager
    17  	sm, err = bintray.New(config)
    18  	if err != nil {
    19  		return
    20  	}
    21  
    22  	if !config.IsDryRun() {
    23  		var exists bool
    24  		log.Info("Verifying repository", uploadDetails.Repo, "exists...")
    25  		exists, err = sm.IsRepoExists(&repositories.Path{Subject: uploadDetails.Subject, Repo: uploadDetails.Repo})
    26  		if err != nil {
    27  			return
    28  		}
    29  		if !exists {
    30  			promptRepoNotExist(uploadDetails.Params)
    31  		}
    32  
    33  		log.Info("Verifying package", uploadDetails.Package, "exists...")
    34  		packagePath := &packages.Path{Subject: uploadDetails.Subject, Repo: uploadDetails.Repo, Package: uploadDetails.Repo}
    35  		exists, err = sm.IsPackageExists(packagePath)
    36  		if err != nil {
    37  			return
    38  		}
    39  		if !exists {
    40  			promptPackageNotExist(uploadDetails.Path)
    41  		}
    42  
    43  		exists, err = sm.IsVersionExists(uploadDetails.Path)
    44  		if err != nil {
    45  			return
    46  		}
    47  		if !exists {
    48  			if err = sm.CreateVersion(uploadDetails.Params); err != nil {
    49  				return
    50  			}
    51  		}
    52  	}
    53  
    54  	return sm.UploadFiles(uploadDetails)
    55  }
    56  
    57  func promptRepoNotExist(versionDetails *versions.Params) error {
    58  	msg := "It looks like repository '" + versionDetails.Repo + "' does not exist.\n"
    59  	return errorutils.CheckError(errors.New(msg))
    60  }
    61  
    62  func promptPackageNotExist(versionDetails *versions.Path) error {
    63  	msg := "It looks like package '" + versionDetails.Package +
    64  		"' does not exist in the '" + versionDetails.Repo + "' repository.\n" +
    65  		"You can create the package by running the package-create command. For example:\n" +
    66  		"jfrog bt pc " +
    67  		versionDetails.Subject + "/" + versionDetails.Repo + "/" + versionDetails.Package +
    68  		" --vcs-url=https://github.com/example"
    69  
    70  	conf, err := config.ReadBintrayConf()
    71  	if err != nil {
    72  		return err
    73  	}
    74  	if conf.DefPackageLicense == "" {
    75  		msg += " --licenses=Apache-2.0-example"
    76  	}
    77  	err = errorutils.CheckError(errors.New(msg))
    78  	return err
    79  }