github.com/jfrog/jfrog-cli-core/v2@v2.51.0/plugins/common/server.go (about) 1 package common 2 3 import ( 4 "errors" 5 "os" 6 7 "github.com/jfrog/jfrog-cli-core/v2/common/cliutils" 8 cliUtils "github.com/jfrog/jfrog-cli-core/v2/common/cliutils" 9 "github.com/jfrog/jfrog-cli-core/v2/common/commands" 10 "github.com/jfrog/jfrog-cli-core/v2/plugins/components" 11 "github.com/jfrog/jfrog-cli-core/v2/utils/config" 12 "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" 13 clientUtils "github.com/jfrog/jfrog-client-go/utils" 14 ) 15 16 // Get the common 'server-id' flag 17 func GetServerIdFlag() components.StringFlag { 18 return components.NewStringFlag("server-id", "Server ID configured using the config command.") 19 } 20 21 // Return the Artifactory Details of the provided 'server-id', or the default one. 22 func GetServerDetails(c *components.Context) (*config.ServerDetails, error) { 23 details, err := commands.GetConfig(c.GetStringFlagValue("server-id"), false) 24 if err != nil { 25 return nil, err 26 } 27 if details.Url == "" { 28 return nil, errors.New("no server-id was found, or the server-id has no url") 29 } 30 details.Url = clientUtils.AddTrailingSlashIfNeeded(details.Url) 31 err = config.CreateInitialRefreshableTokensIfNeeded(details) 32 if err != nil { 33 return nil, err 34 } 35 return details, nil 36 } 37 38 func CreateServerDetailsFromFlags(c *components.Context) (details *config.ServerDetails, err error) { 39 details = new(config.ServerDetails) 40 details.Url = clientUtils.AddTrailingSlashIfNeeded(c.GetStringFlagValue("url")) 41 details.ArtifactoryUrl = clientUtils.AddTrailingSlashIfNeeded(c.GetStringFlagValue("artifactory-url")) 42 details.DistributionUrl = clientUtils.AddTrailingSlashIfNeeded(c.GetStringFlagValue("distribution-url")) 43 details.XrayUrl = clientUtils.AddTrailingSlashIfNeeded(c.GetStringFlagValue("xray-url")) 44 details.MissionControlUrl = clientUtils.AddTrailingSlashIfNeeded(c.GetStringFlagValue("mission-control-url")) 45 details.PipelinesUrl = clientUtils.AddTrailingSlashIfNeeded(c.GetStringFlagValue("pipelines-url")) 46 details.User = c.GetStringFlagValue("user") 47 details.Password, err = HandleSecretInput(c, "password", "password-stdin") 48 if err != nil { 49 return 50 } 51 details.AccessToken, err = HandleSecretInput(c, "access-token", "access-token-stdin") 52 if err != nil { 53 return 54 } 55 details.SshKeyPath = c.GetStringFlagValue("ssh-key-path") 56 details.SshPassphrase = c.GetStringFlagValue("ssh-passphrase") 57 details.ClientCertPath = c.GetStringFlagValue("client-cert-path") 58 details.ClientCertKeyPath = c.GetStringFlagValue("client-cert-key-path") 59 details.ServerId = c.GetStringFlagValue("server-id") 60 if details.ServerId == "" { 61 details.ServerId = os.Getenv(coreutils.ServerID) 62 } 63 details.InsecureTls = c.GetBoolFlagValue("insecure-tls") 64 return 65 } 66 67 func createServerDetailsFromFlags(c *components.Context, domain cliUtils.CommandDomain) (details *config.ServerDetails, err error) { 68 details, err = CreateServerDetailsFromFlags(c) 69 if err != nil { 70 return 71 } 72 switch domain { 73 case cliUtils.Rt: 74 details.ArtifactoryUrl = details.Url 75 case cliUtils.Xr: 76 details.XrayUrl = details.Url 77 case cliUtils.Ds: 78 details.DistributionUrl = details.Url 79 case cliUtils.Platform: 80 return 81 } 82 details.Url = "" 83 84 return 85 } 86 87 // Exclude refreshable tokens parameter should be true when working with external tools (build tools, curl, etc) 88 // or when sending requests not via ArtifactoryHttpClient. 89 func CreateServerDetailsWithConfigOffer(c *components.Context, excludeRefreshableTokens bool, domain cliUtils.CommandDomain) (*config.ServerDetails, error) { 90 return cliutils.CreateServerDetailsWithConfigOffer(func() (*config.ServerDetails, error) { return createServerDetailsFromFlags(c, domain) }, excludeRefreshableTokens) 91 }