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

     1  package buildinfo
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/jfrog/jfrog-cli-core/artifactory/utils"
     8  	"github.com/jfrog/jfrog-cli-core/utils/config"
     9  	"github.com/jfrog/jfrog-client-go/artifactory/buildinfo"
    10  	"github.com/jfrog/jfrog-client-go/utils/log"
    11  )
    12  
    13  type BuildCollectEnvCommand struct {
    14  	buildConfiguration *utils.BuildConfiguration
    15  }
    16  
    17  func NewBuildCollectEnvCommand() *BuildCollectEnvCommand {
    18  	return &BuildCollectEnvCommand{}
    19  }
    20  
    21  func (bcec *BuildCollectEnvCommand) SetBuildConfiguration(buildConfiguration *utils.BuildConfiguration) *BuildCollectEnvCommand {
    22  	bcec.buildConfiguration = buildConfiguration
    23  	return bcec
    24  }
    25  
    26  func (bcec *BuildCollectEnvCommand) Run() error {
    27  	log.Info("Collecting environment variables...")
    28  	err := utils.SaveBuildGeneralDetails(bcec.buildConfiguration.BuildName, bcec.buildConfiguration.BuildNumber, bcec.buildConfiguration.Project)
    29  	if err != nil {
    30  		return err
    31  	}
    32  	populateFunc := func(partial *buildinfo.Partial) {
    33  		partial.Env = getEnvVariables()
    34  	}
    35  	err = utils.SavePartialBuildInfo(bcec.buildConfiguration.BuildName, bcec.buildConfiguration.BuildNumber, bcec.buildConfiguration.Project, populateFunc)
    36  	if err != nil {
    37  		return err
    38  	}
    39  	log.Info("Collected environment variables for", bcec.buildConfiguration.BuildName+"/"+bcec.buildConfiguration.BuildNumber+".")
    40  	return nil
    41  }
    42  
    43  // Returns the default configured Artifactory server
    44  func (bcec *BuildCollectEnvCommand) ServerDetails() (*config.ServerDetails, error) {
    45  	return config.GetDefaultServerConf()
    46  }
    47  
    48  func (bcec *BuildCollectEnvCommand) CommandName() string {
    49  	return "rt_build_collect_env"
    50  }
    51  
    52  func getEnvVariables() buildinfo.Env {
    53  	m := make(map[string]string)
    54  	for _, e := range os.Environ() {
    55  		pair := strings.Split(e, "=")
    56  		if len(pair[0]) != 0 {
    57  			m["buildInfo.env."+pair[0]] = pair[1]
    58  		}
    59  	}
    60  	return m
    61  }