github.com/jfrog/jfrog-cli-go@v1.22.1-0.20200318093948-4826ef344ffd/artifactory/commands/golang/gonative.go (about)

     1  package golang
     2  
     3  import (
     4  	"github.com/jfrog/jfrog-cli-go/artifactory/utils"
     5  	"github.com/jfrog/jfrog-cli-go/utils/config"
     6  	"github.com/jfrog/jfrog-client-go/utils/log"
     7  )
     8  
     9  type GoNativeCommand struct {
    10  	configFilePath string
    11  	GoCommand
    12  }
    13  
    14  func NewGoNativeCommand() *GoNativeCommand {
    15  	return &GoNativeCommand{GoCommand: *new(GoCommand)}
    16  }
    17  
    18  func (gnc *GoNativeCommand) SetConfigFilePath(configFilePath string) *GoNativeCommand {
    19  	gnc.configFilePath = configFilePath
    20  	return gnc
    21  }
    22  
    23  func (gnc *GoNativeCommand) SetArgs(args []string) *GoNativeCommand {
    24  	gnc.goArg = args
    25  	return gnc
    26  }
    27  
    28  func (gnc *GoNativeCommand) Run() error {
    29  	// Read config file.
    30  	log.Debug("Preparing to read the config file", gnc.configFilePath)
    31  	vConfig, err := utils.ReadConfigFile(gnc.configFilePath, utils.YAML)
    32  	if err != nil {
    33  		return err
    34  	}
    35  
    36  	// Extract resolution params.
    37  	gnc.resolverParams, err = utils.GetRepoConfigByPrefix(gnc.configFilePath, utils.ProjectConfigResolverPrefix, vConfig)
    38  	if err != nil {
    39  		return err
    40  	}
    41  
    42  	if vConfig.IsSet(utils.ProjectConfigDeployerPrefix) {
    43  		// Extract deployer params.
    44  		gnc.deployerParams, err = utils.GetRepoConfigByPrefix(gnc.configFilePath, utils.ProjectConfigDeployerPrefix, vConfig)
    45  		if err != nil {
    46  			return err
    47  		}
    48  		// Set to true for publishing dependencies.
    49  		gnc.SetPublishDeps(true)
    50  	}
    51  
    52  	// Extract build info information from the args.
    53  	gnc.goArg, gnc.buildConfiguration, err = utils.ExtractBuildDetailsFromArgs(gnc.goArg)
    54  	if err != nil {
    55  		return err
    56  	}
    57  	return gnc.GoCommand.Run()
    58  }
    59  
    60  func (gnc *GoNativeCommand) RtDetails() (*config.ArtifactoryDetails, error) {
    61  	// If deployer Artifactory details exists, returs it.
    62  	if gnc.deployerParams != nil && !gnc.deployerParams.IsRtDetailsEmpty() {
    63  		return gnc.deployerParams.RtDetails()
    64  	}
    65  
    66  	// If resolver Artifactory details exists, returs it.
    67  	if gnc.resolverParams != nil && !gnc.resolverParams.IsRtDetailsEmpty() {
    68  		return gnc.resolverParams.RtDetails()
    69  	}
    70  
    71  	// If conf file exists, return the server configured in the conf file.
    72  	if gnc.configFilePath != "" {
    73  		vConfig, err := utils.ReadConfigFile(gnc.configFilePath, utils.YAML)
    74  		if err != nil {
    75  			return nil, err
    76  		}
    77  		return utils.GetRtDetails(vConfig)
    78  	}
    79  	return nil, nil
    80  }