github.com/jfrog/jfrog-cli-core/v2@v2.51.0/artifactory/commands/container/pull.go (about) 1 package container 2 3 import ( 4 "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils" 5 "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils/container" 6 "github.com/jfrog/jfrog-cli-core/v2/common/build" 7 "github.com/jfrog/jfrog-cli-core/v2/utils/config" 8 "github.com/jfrog/jfrog-client-go/utils/errorutils" 9 ) 10 11 type PullCommand struct { 12 ContainerCommand 13 } 14 15 func NewPullCommand(containerManagerType container.ContainerManagerType) *PullCommand { 16 return &PullCommand{ 17 ContainerCommand: ContainerCommand{ 18 containerManagerType: containerManagerType, 19 }, 20 } 21 } 22 23 func (pc *PullCommand) Run() error { 24 if err := pc.init(); err != nil { 25 return err 26 } 27 if pc.containerManagerType == container.DockerClient { 28 err := container.ValidateClientApiVersion() 29 if err != nil { 30 return err 31 } 32 } 33 serverDetails, err := pc.ServerDetails() 34 if errorutils.CheckError(err) != nil { 35 return err 36 } 37 // Perform login 38 if err := pc.PerformLogin(serverDetails, pc.containerManagerType); err != nil { 39 return err 40 } 41 // Perform pull. 42 cm := container.NewManager(pc.containerManagerType) 43 err = cm.RunNativeCmd(pc.cmdParams) 44 if err != nil { 45 return err 46 } 47 toCollect, err := pc.buildConfiguration.IsCollectBuildInfo() 48 if err != nil || !toCollect { 49 return err 50 } 51 buildName, err := pc.buildConfiguration.GetBuildName() 52 if err != nil { 53 return err 54 } 55 buildNumber, err := pc.buildConfiguration.GetBuildNumber() 56 if err != nil { 57 return err 58 } 59 project := pc.BuildConfiguration().GetProject() 60 serviceManager, err := utils.CreateServiceManager(serverDetails, -1, 0, false) 61 if err != nil { 62 return err 63 } 64 repo, err := pc.GetRepo() 65 if err != nil { 66 return err 67 } 68 builder, err := container.NewLocalAgentBuildInfoBuilder(pc.image, repo, buildName, buildNumber, project, serviceManager, container.Pull, cm) 69 if err != nil { 70 return err 71 } 72 if err := build.SaveBuildGeneralDetails(buildName, buildNumber, project); err != nil { 73 return err 74 } 75 buildInfoModule, err := builder.Build(pc.BuildConfiguration().GetModule()) 76 if err != nil || buildInfoModule == nil { 77 return err 78 } 79 return build.SaveBuildInfo(buildName, buildNumber, project, buildInfoModule) 80 } 81 82 func (pc *PullCommand) CommandName() string { 83 return "rt_docker_pull" 84 } 85 86 func (pc *PullCommand) ServerDetails() (*config.ServerDetails, error) { 87 return pc.serverDetails, nil 88 }