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 }