func getArtifactoryDetails(c *cli.Context, includeConfig bool) *utils.ArtifactoryDetails { details := new(utils.ArtifactoryDetails) details.Url = c.String("url") details.User = c.String("user") details.Password = c.String("password") if includeConfig { if details.Url == "" || details.User == "" || details.Password == "" { confDetails := commands.GetConfig() if details.Url == "" { details.Url = confDetails.Url } if details.User == "" { details.User = confDetails.User } if details.Password == "" { details.Password = confDetails.Password } } } if details.Url != "" && !strings.HasSuffix(details.Url, "/") { details.Url += "/" } return details }
func Config(details *utils.ArtifactoryDetails, interactive, shouldEncPassword bool) { var bytePassword []byte if interactive { if details.Url == "" { print("Artifactory Url: ") fmt.Scanln(&details.Url) } if details.User == "" { print("User: "******"" { print("Password: ") var err error bytePassword, err = terminal.ReadPassword(int(syscall.Stdin)) details.Password = string(bytePassword) utils.CheckError(err) } } details.Url = utils.AddTrailingSlashIfNeeded(details.Url) if shouldEncPassword { details = encryptPassword(details) } writeConfFile(details) }
func getArtifactoryDetails(c *cli.Context, includeConfig bool) *utils.ArtifactoryDetails { details := new(utils.ArtifactoryDetails) details.Url = c.String("url") details.User = c.String("user") details.Password = c.String("password") if includeConfig { if details.Url == "" || details.User == "" || details.Password == "" { confDetails := commands.GetConfig() if details.Url == "" { details.Url = confDetails.Url } if details.User == "" { details.User = confDetails.User } if details.Password == "" { details.Password = confDetails.Password } } } details.Url = utils.AddTrailingSlashIfNeeded(details.Url) return details }
func encryptPassword(details *utils.ArtifactoryDetails) *utils.ArtifactoryDetails { if details.Password == "" { return details } response, encPassword := utils.GetEncryptedPasswordFromArtifactory(details) switch response.StatusCode { case 409: utils.Exit(utils.ExitCodeError, "\nYour Artifactory server is not configured to encrypt passwords.\n"+ "You may use \"art config --enc-password=false\"") case 200: details.Password = encPassword default: utils.Exit(utils.ExitCodeError, "\nArtifactory response: "+response.Status) } return details }