From 8e2b8a56bc47c6d15f75bc64e5d0d1ce0989c935 Mon Sep 17 00:00:00 2001 From: anirudhwarrier <12178754+anirudhwarrier@users.noreply.github.com> Date: Wed, 6 May 2026 23:01:46 +0400 Subject: [PATCH 1/2] feat: add UI warning for EnvironmentSet values --- internal/environments/environments.go | 127 +++++++++++++++++++------- 1 file changed, 93 insertions(+), 34 deletions(-) diff --git a/internal/environments/environments.go b/internal/environments/environments.go index ef652ea9..205dd0b3 100644 --- a/internal/environments/environments.go +++ b/internal/environments/environments.go @@ -5,8 +5,11 @@ import ( "fmt" "os" "strings" + "sync" "gopkg.in/yaml.v2" + + "github.com/smartcontractkit/cre-cli/internal/ui" ) const ( @@ -24,7 +27,9 @@ const ( EnvVarDonFamily = "CRE_CLI_DON_FAMILY" EnvVarSecretsOrgOwned = "CRE_CLI_SECRETS_ORG_OWNED" - DefaultEnv = "PRODUCTION" + DefaultEnv = "PRODUCTION" + StagingEnv = "STAGING" + DevelopmentEnv = "DEVELOPMENT" ) //go:embed environments.yaml @@ -78,46 +83,100 @@ func loadEmbeddedEnvironmentFile() (*fileFormat, error) { return &ff, nil } +var newEnvironmentSetWarningsOnce sync.Once + func NewEnvironmentSet(ff *fileFormat, envName string) *EnvironmentSet { set, ok := ff.Envs[envName] if !ok { set = ff.Envs[DefaultEnv] } - set.EnvName = envName - if v := os.Getenv(EnvVarAuthBase); v != "" { - set.AuthBase = v - } - if v := os.Getenv(EnvVarClientID); v != "" { - set.ClientID = v - } - if v := os.Getenv(EnvVarGraphQLURL); v != "" { - set.GraphQLURL = v - } - if v := os.Getenv(EnvVarAudience); v != "" { - set.Audience = v - } - if v := os.Getenv(EnvVarVaultGatewayURL); v != "" { - set.GatewayURL = v - } - if v := os.Getenv(EnvVarWorkflowRegistryChainExplorerURL); v != "" { - set.WorkflowRegistryChainExplorerURL = v - } - // TODO for each contract - check if it's really a contract, not an EOA - if v := os.Getenv(EnvVarWorkflowRegistryAddress); v != "" { - set.WorkflowRegistryAddress = v - } - if v := os.Getenv(EnvVarWorkflowRegistryChainName); v != "" { - set.WorkflowRegistryChainName = v - } + authBase := os.Getenv(EnvVarAuthBase) + clientID := os.Getenv(EnvVarClientID) + graphqlURL := os.Getenv(EnvVarGraphQLURL) + audience := os.Getenv(EnvVarAudience) + gatewayURL := os.Getenv(EnvVarVaultGatewayURL) + wrChainExplorerURL := os.Getenv(EnvVarWorkflowRegistryChainExplorerURL) + // TODO for workflow registry contract - check if it's really a contract, not an EOA + wrAddress := os.Getenv(EnvVarWorkflowRegistryAddress) + wrChainName := os.Getenv(EnvVarWorkflowRegistryChainName) + donFamily := os.Getenv(EnvVarDonFamily) + secretsOrgOwned := os.Getenv(EnvVarSecretsOrgOwned) - if v := os.Getenv(EnvVarDonFamily); v != "" { - set.DonFamily = v - } - - if v := os.Getenv(EnvVarSecretsOrgOwned); v != "" { - set.SecretsOrgOwned = strings.EqualFold(v, "true") - } + set.EnvName = envName + if authBase != "" { + set.AuthBase = authBase + } + if clientID != "" { + set.ClientID = clientID + } + if graphqlURL != "" { + set.GraphQLURL = graphqlURL + } + if audience != "" { + set.Audience = audience + } + if gatewayURL != "" { + set.GatewayURL = gatewayURL + } + if wrChainExplorerURL != "" { + set.WorkflowRegistryChainExplorerURL = wrChainExplorerURL + } + if wrAddress != "" { + set.WorkflowRegistryAddress = wrAddress + } + if wrChainName != "" { + set.WorkflowRegistryChainName = wrChainName + } + if donFamily != "" { + set.DonFamily = donFamily + } + if secretsOrgOwned != "" { + set.SecretsOrgOwned = strings.EqualFold(secretsOrgOwned, "true") + } + + newEnvironmentSetWarningsOnce.Do(func() { + switch envName { + case DevelopmentEnv: + ui.Warning(fmt.Sprintf("%s set, using %s environment", EnvVarEnv, DevelopmentEnv)) + case StagingEnv: + ui.Warning(fmt.Sprintf("%s set, using %s environment", EnvVarEnv, StagingEnv)) + case DefaultEnv: + break + default: + ui.Warning(fmt.Sprintf("Environment %s not found, defaulting to %s", envName, DefaultEnv)) + } + if authBase != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarAuthBase, authBase)) + } + if clientID != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarClientID, clientID)) + } + if graphqlURL != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarGraphQLURL, graphqlURL)) + } + if audience != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarAudience, audience)) + } + if gatewayURL != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarVaultGatewayURL, gatewayURL)) + } + if wrChainExplorerURL != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarWorkflowRegistryChainExplorerURL, wrChainExplorerURL)) + } + if wrAddress != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarWorkflowRegistryAddress, wrAddress)) + } + if wrChainName != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarWorkflowRegistryChainName, wrChainName)) + } + if donFamily != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarDonFamily, donFamily)) + } + if secretsOrgOwned != "" { + ui.Warning(fmt.Sprintf("%s set, using %s", EnvVarSecretsOrgOwned, secretsOrgOwned)) + } + }) return &set } From 53fa0944f5a55d8bbbf4f3b6e273103ce1bb8c28 Mon Sep 17 00:00:00 2001 From: anirudhwarrier <12178754+anirudhwarrier@users.noreply.github.com> Date: Thu, 7 May 2026 08:15:10 +0400 Subject: [PATCH 2/2] simplify switch case --- internal/environments/environments.go | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/internal/environments/environments.go b/internal/environments/environments.go index 205dd0b3..c851fd74 100644 --- a/internal/environments/environments.go +++ b/internal/environments/environments.go @@ -137,12 +137,9 @@ func NewEnvironmentSet(ff *fileFormat, envName string) *EnvironmentSet { newEnvironmentSetWarningsOnce.Do(func() { switch envName { - case DevelopmentEnv: - ui.Warning(fmt.Sprintf("%s set, using %s environment", EnvVarEnv, DevelopmentEnv)) - case StagingEnv: - ui.Warning(fmt.Sprintf("%s set, using %s environment", EnvVarEnv, StagingEnv)) case DefaultEnv: - break + case DevelopmentEnv, StagingEnv: + ui.Warning(fmt.Sprintf("%s set, using %s environment", EnvVarEnv, envName)) default: ui.Warning(fmt.Sprintf("Environment %s not found, defaulting to %s", envName, DefaultEnv)) }