Skip to content

Commit 48d852b

Browse files
committed
fix: Allow overriding env variable names, restore CODER_TELEMETRY
1 parent 69326d1 commit 48d852b

File tree

3 files changed

+22
-9
lines changed

3 files changed

+22
-9
lines changed

cli/deployment/config.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ func newConfig() *codersdk.DeploymentConfig {
239239
Name: "Telemetry Enable",
240240
Usage: "Whether telemetry is enabled or not. Coder collects anonymized usage data to help improve our product.",
241241
Flag: "telemetry",
242+
Env: "CODER_TELEMETRY", // Override default environment.
242243
Default: flag.Lookup("test.v") == nil,
243244
},
244245
Trace: &codersdk.DeploymentConfigField[bool]{
@@ -396,22 +397,26 @@ func setConfig(prefix string, vip *viper.Viper, target interface{}) {
396397
// otherwise Viper will get confused if the parent struct is
397398
// assigned a value.
398399
if strings.HasPrefix(typ.Name(), "DeploymentConfigField[") {
400+
env := val.FieldByName("Env").String()
401+
if env == "" {
402+
env = formatEnv(prefix)
403+
}
399404
value := val.FieldByName("Value").Interface()
400405
switch value.(type) {
401406
case string:
402-
vip.MustBindEnv(prefix, formatEnv(prefix))
407+
vip.MustBindEnv(prefix, env)
403408
val.FieldByName("Value").SetString(vip.GetString(prefix))
404409
case bool:
405-
vip.MustBindEnv(prefix, formatEnv(prefix))
410+
vip.MustBindEnv(prefix, env)
406411
val.FieldByName("Value").SetBool(vip.GetBool(prefix))
407412
case int:
408-
vip.MustBindEnv(prefix, formatEnv(prefix))
413+
vip.MustBindEnv(prefix, env)
409414
val.FieldByName("Value").SetInt(int64(vip.GetInt(prefix)))
410415
case time.Duration:
411-
vip.MustBindEnv(prefix, formatEnv(prefix))
416+
vip.MustBindEnv(prefix, env)
412417
val.FieldByName("Value").SetInt(int64(vip.GetDuration(prefix)))
413418
case []string:
414-
vip.MustBindEnv(prefix, formatEnv(prefix))
419+
vip.MustBindEnv(prefix, env)
415420
// As of October 21st, 2022 we supported delimiting a string
416421
// with a comma, but Viper only supports with a space. This
417422
// is a small hack around it!
@@ -569,15 +574,20 @@ func setFlags(prefix string, flagset *pflag.FlagSet, vip *viper.Viper, target in
569574
if flg == "" {
570575
return
571576
}
577+
578+
env := val.FieldByName("Env").String()
579+
if env == "" {
580+
env = formatEnv(prefix)
581+
}
572582
usage := val.FieldByName("Usage").String()
573-
usage = fmt.Sprintf("%s\n%s", usage, cliui.Styles.Placeholder.Render("Consumes $"+formatEnv(prefix)))
583+
usage = fmt.Sprintf("%s\n%s", usage, cliui.Styles.Placeholder.Render("Consumes $"+env))
574584
shorthand := val.FieldByName("Shorthand").String()
575585
hidden := val.FieldByName("Hidden").Bool()
576586
value := val.FieldByName("Default").Interface()
577587

578588
// Allow currently set environment variables
579589
// to override default values in help output.
580-
vip.MustBindEnv(prefix, formatEnv(prefix))
590+
vip.MustBindEnv(prefix, env)
581591

582592
switch value.(type) {
583593
case string:

cli/deployment/config_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func TestConfig(t *testing.T) {
3535
"CODER_PROVISIONER_DAEMONS": "5",
3636
"CODER_SECURE_AUTH_COOKIE": "true",
3737
"CODER_SSH_KEYGEN_ALGORITHM": "potato",
38-
"CODER_TELEMETRY": "false",
38+
"CODER_TELEMETRY": "true",
3939
"CODER_TELEMETRY_TRACE": "false",
4040
"CODER_WILDCARD_ACCESS_URL": "something-wildcard.com",
4141
},
@@ -50,7 +50,7 @@ func TestConfig(t *testing.T) {
5050
require.Equal(t, config.ProvisionerDaemons.Value, 5)
5151
require.Equal(t, config.SecureAuthCookie.Value, true)
5252
require.Equal(t, config.SSHKeygenAlgorithm.Value, "potato")
53-
require.Equal(t, config.Telemetry.Enable.Value, false)
53+
require.Equal(t, config.Telemetry.Enable.Value, true)
5454
require.Equal(t, config.Telemetry.Trace.Value, false)
5555
require.Equal(t, config.WildcardAccessURL.Value, "something-wildcard.com")
5656
},

codersdk/deploymentconfig.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ type DeploymentConfigField[T Flaggable] struct {
131131
Name string `json:"name"`
132132
Usage string `json:"usage"`
133133
Flag string `json:"flag"`
134+
Env string `json:"env"`
134135
Shorthand string `json:"shorthand"`
135136
Enterprise bool `json:"enterprise"`
136137
Hidden bool `json:"hidden"`
@@ -146,6 +147,7 @@ func (f *DeploymentConfigField[T]) MarshalJSON() ([]byte, error) {
146147
Name string `json:"name"`
147148
Usage string `json:"usage"`
148149
Flag string `json:"flag"`
150+
Env string `json:"env"`
149151
Shorthand string `json:"shorthand"`
150152
Enterprise bool `json:"enterprise"`
151153
Hidden bool `json:"hidden"`
@@ -156,6 +158,7 @@ func (f *DeploymentConfigField[T]) MarshalJSON() ([]byte, error) {
156158
Name: f.Name,
157159
Usage: f.Usage,
158160
Flag: f.Flag,
161+
Env: f.Env,
159162
Shorthand: f.Shorthand,
160163
Enterprise: f.Enterprise,
161164
Hidden: f.Hidden,

0 commit comments

Comments
 (0)