github.com/jfrog/jfrog-cli-core@v1.12.1/artifactory/commands/generic/move.go (about)

     1  package generic
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/jfrog/jfrog-cli-core/artifactory/spec"
     7  	"github.com/jfrog/jfrog-cli-core/artifactory/utils"
     8  	"github.com/jfrog/jfrog-client-go/artifactory/services"
     9  	"github.com/jfrog/jfrog-client-go/utils/log"
    10  )
    11  
    12  type MoveCommand struct {
    13  	GenericCommand
    14  	threads int
    15  }
    16  
    17  func NewMoveCommand() *MoveCommand {
    18  	return &MoveCommand{GenericCommand: *NewGenericCommand()}
    19  }
    20  
    21  func (mc *MoveCommand) Threads() int {
    22  	return mc.threads
    23  }
    24  
    25  func (mc *MoveCommand) SetThreads(threads int) *MoveCommand {
    26  	mc.threads = threads
    27  	return mc
    28  }
    29  
    30  // Moves the artifacts using the specified move pattern.
    31  func (mc *MoveCommand) Run() error {
    32  	// Create Service Manager:
    33  	servicesManager, err := utils.CreateServiceManagerWithThreads(mc.serverDetails, mc.DryRun(), mc.threads, mc.retries)
    34  	if err != nil {
    35  		return err
    36  	}
    37  
    38  	var errorOccurred = false
    39  	var moveParamsArray []services.MoveCopyParams
    40  	// Create MoveParams for all File-Spec groups.
    41  	for i := 0; i < len(mc.Spec().Files); i++ {
    42  		moveParams, err := getMoveParams(mc.Spec().Get(i))
    43  		if err != nil {
    44  			errorOccurred = true
    45  			log.Error(err)
    46  			continue
    47  		}
    48  		moveParamsArray = append(moveParamsArray, moveParams)
    49  	}
    50  
    51  	// Perform move.
    52  	totalMoved, totalFailed, err := servicesManager.Move(moveParamsArray...)
    53  	if err != nil {
    54  		errorOccurred = true
    55  		log.Error(err)
    56  	}
    57  	mc.result.SetSuccessCount(totalMoved)
    58  	mc.result.SetFailCount(totalFailed)
    59  
    60  	if errorOccurred {
    61  		return errors.New("Move finished with errors, please review the logs.")
    62  	}
    63  	return err
    64  }
    65  
    66  func (mc *MoveCommand) CommandName() string {
    67  	return "rt_move"
    68  }
    69  
    70  func getMoveParams(f *spec.File) (moveParams services.MoveCopyParams, err error) {
    71  	moveParams = services.NewMoveCopyParams()
    72  	moveParams.ArtifactoryCommonParams, err = f.ToArtifactoryCommonParams()
    73  	if err != nil {
    74  		return
    75  	}
    76  	moveParams.Recursive, err = f.IsRecursive(true)
    77  	if err != nil {
    78  		return
    79  	}
    80  	moveParams.ExcludeArtifacts, err = f.IsExcludeArtifacts(false)
    81  	if err != nil {
    82  		return
    83  	}
    84  	moveParams.IncludeDeps, err = f.IsIncludeDeps(false)
    85  	if err != nil {
    86  		return
    87  	}
    88  	moveParams.Flat, err = f.IsFlat(false)
    89  	if err != nil {
    90  		return
    91  	}
    92  	return
    93  }