Skip to content

Commit 1a3743b

Browse files
authored
feat(config): Added env var helper (#14)
1 parent f598602 commit 1a3743b

File tree

3 files changed

+38
-22
lines changed

3 files changed

+38
-22
lines changed

config/README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,11 @@ func main() {
145145
cfg, _ := config.NewDefaultConfigFactory().Create()
146146
147147
// helpers
148-
fmt.Printf("name: %s", cfg.AppName()) // name: app
149-
fmt.Printf("env: %s", cfg.AppEnv()) // env: test
150-
fmt.Printf("version: %s", cfg.AppVersion()) // version: 0.1.0
151-
fmt.Printf("debug: %v", cfg.AppDebug()) // debug: true
148+
fmt.Printf("var: %s", cfg.GetEnvVar("APP_ENV")) // var: test
149+
fmt.Printf("name: %s", cfg.AppName()) // name: app
150+
fmt.Printf("env: %s", cfg.AppEnv()) // env: test
151+
fmt.Printf("version: %s", cfg.AppVersion()) // version: 0.1.0
152+
fmt.Printf("debug: %v", cfg.AppDebug()) // debug: true
152153
153154
// others
154155
fmt.Printf("string_value: %s", cfg.GetString("config.values.string_value")) // string_value: test

config/config.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package config
22

33
import (
44
"github.com/spf13/viper"
5+
"os"
56
)
67

78
const (
@@ -20,6 +21,11 @@ type Config struct {
2021
*viper.Viper
2122
}
2223

24+
// GetEnvVar returns the value of an env var.
25+
func (c *Config) GetEnvVar(envVar string) string {
26+
return os.Getenv(envVar)
27+
}
28+
2329
// AppName returns the configured application name (from config field app.name or env var APP_NAME).
2430
func (c *Config) AppName() string {
2531
return c.GetString("app.name")

config/config_test.go

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ import (
77
"github.com/stretchr/testify/assert"
88
)
99

10+
func TestGetEnvVar(t *testing.T) {
11+
cfg, err := createTestConfig()
12+
assert.NoError(t, err)
13+
14+
t.Setenv("foo", "bar")
15+
16+
assert.Equal(t, "bar", cfg.GetEnvVar("foo"))
17+
}
18+
1019
func TestAppNameFromDefaultConfig(t *testing.T) {
1120
cfg, err := createTestConfig()
1221

@@ -19,7 +28,7 @@ func TestAppNameOverrideFromTestEnvConfig(t *testing.T) {
1928

2029
cfg, err := createTestConfig()
2130

22-
assert.Nil(t, err)
31+
assert.NoError(t, err)
2332
assert.Equal(t, "test-app", cfg.AppName())
2433
}
2534

@@ -28,7 +37,7 @@ func TestAppNameOverrideFromCustomEnvConfig(t *testing.T) {
2837

2938
cfg, err := createTestConfig()
3039

31-
assert.Nil(t, err)
40+
assert.NoError(t, err)
3241
assert.Equal(t, "custom-app", cfg.AppName())
3342
}
3443

@@ -53,7 +62,7 @@ func TestAppNameOverrideFromEnvVar(t *testing.T) {
5362
func TestAppEnvFromConfig(t *testing.T) {
5463
cfg, err := createTestConfig()
5564

56-
assert.Nil(t, err)
65+
assert.NoError(t, err)
5766
assert.Equal(t, config.AppEnvDev, cfg.AppEnv())
5867
assert.False(t, cfg.IsProdEnv())
5968
assert.True(t, cfg.IsDevEnv())
@@ -65,7 +74,7 @@ func TestAppEnvOverrideFromTestEnvConfig(t *testing.T) {
6574

6675
cfg, err := createTestConfig()
6776

68-
assert.Nil(t, err)
77+
assert.NoError(t, err)
6978
assert.Equal(t, config.AppEnvTest, cfg.AppEnv())
7079
assert.False(t, cfg.IsProdEnv())
7180
assert.False(t, cfg.IsDevEnv())
@@ -77,7 +86,7 @@ func TestAppEnvOverrideFromCustomEnvConfig(t *testing.T) {
7786

7887
cfg, err := createTestConfig()
7988

80-
assert.Nil(t, err)
89+
assert.NoError(t, err)
8190
assert.Equal(t, "custom", cfg.AppEnv())
8291
assert.False(t, cfg.IsProdEnv())
8392
assert.False(t, cfg.IsDevEnv())
@@ -87,7 +96,7 @@ func TestAppEnvOverrideFromCustomEnvConfig(t *testing.T) {
8796
func TestAppDebugFromConfig(t *testing.T) {
8897
cfg, err := createTestConfig()
8998

90-
assert.Nil(t, err)
99+
assert.NoError(t, err)
91100
assert.False(t, cfg.AppDebug())
92101
}
93102

@@ -96,7 +105,7 @@ func TestAppDebugOverrideFromTestEnvConfig(t *testing.T) {
96105

97106
cfg, err := createTestConfig()
98107

99-
assert.Nil(t, err)
108+
assert.NoError(t, err)
100109
assert.True(t, cfg.AppDebug())
101110
}
102111

@@ -105,14 +114,14 @@ func TestAppDebugOverrideFromEnvVar(t *testing.T) {
105114

106115
cfg, err := createTestConfig()
107116

108-
assert.Nil(t, err)
117+
assert.NoError(t, err)
109118
assert.True(t, cfg.AppDebug())
110119
}
111120

112121
func TestAppVersionFromConfig(t *testing.T) {
113122
cfg, err := createTestConfig()
114123

115-
assert.Nil(t, err)
124+
assert.NoError(t, err)
116125
assert.Equal(t, "0.1.0", cfg.AppVersion())
117126
}
118127

@@ -121,7 +130,7 @@ func TestAppVersionOverrideFromTestEnvConfig(t *testing.T) {
121130

122131
cfg, err := createTestConfig()
123132

124-
assert.Nil(t, err)
133+
assert.NoError(t, err)
125134
assert.Equal(t, "0.1.0", cfg.AppVersion())
126135
}
127136

@@ -130,14 +139,14 @@ func TestAppVersionOverrideFromEnvVar(t *testing.T) {
130139

131140
cfg, err := createTestConfig()
132141

133-
assert.Nil(t, err)
142+
assert.NoError(t, err)
134143
assert.Equal(t, "0.1.2", cfg.AppVersion())
135144
}
136145

137146
func TestValuesFromConfig(t *testing.T) {
138147
cfg, err := createTestConfig()
139148

140-
assert.Nil(t, err)
149+
assert.NoError(t, err)
141150
assert.Equal(t, "default", cfg.GetString("config.values.string_value"))
142151
assert.Equal(t, 0, cfg.GetInt("config.values.int_value"))
143152
}
@@ -147,7 +156,7 @@ func TestValuesOverrideFromTestEnvConfig(t *testing.T) {
147156

148157
cfg, err := createTestConfig()
149158

150-
assert.Nil(t, err)
159+
assert.NoError(t, err)
151160
assert.Equal(t, "test", cfg.GetString("config.values.string_value"))
152161
assert.Equal(t, 0, cfg.GetInt("config.values.int_value"))
153162
}
@@ -157,36 +166,36 @@ func TestValuesOverrideFromCustomEnvConfig(t *testing.T) {
157166

158167
cfg, err := createTestConfig()
159168

160-
assert.Nil(t, err)
169+
assert.NoError(t, err)
161170
assert.Equal(t, "custom", cfg.GetString("config.values.string_value"))
162171
assert.Equal(t, 0, cfg.GetInt("config.values.int_value"))
163172
}
164173

165174
func TestValuesWithEnvVarsPlaceholder(t *testing.T) {
166175
cfg, err := createTestConfig()
167176

168-
assert.Nil(t, err)
177+
assert.NoError(t, err)
169178
assert.Equal(t, "foo--baz", cfg.GetString("config.placeholder"))
170179

171180
t.Setenv("BAR", "bar")
172181

173182
cfg, err = createTestConfig()
174183

175-
assert.Nil(t, err)
184+
assert.NoError(t, err)
176185
assert.Equal(t, "foo-bar-baz", cfg.GetString("config.placeholder"))
177186
}
178187

179188
func TestValuesWithEnvVarsSubstitution(t *testing.T) {
180189
cfg, err := createTestConfig()
181190

182-
assert.Nil(t, err)
191+
assert.NoError(t, err)
183192
assert.Equal(t, "foo", cfg.GetString("config.substitution"))
184193

185194
t.Setenv("CONFIG_SUBSTITUTION", "bar")
186195

187196
cfg, err = createTestConfig()
188197

189-
assert.Nil(t, err)
198+
assert.NoError(t, err)
190199
assert.Equal(t, "bar", cfg.GetString("config.substitution"))
191200
}
192201

0 commit comments

Comments
 (0)