Skip to content

Commit 56d2ea7

Browse files
Merge pull request #29 from debeando/feat-env-getInt
feat - in env submodule is add GetInt, GetUInt8, GetUInt16 and GetBool.
2 parents 9d9cfee + c15e4aa commit 56d2ea7

File tree

6 files changed

+155
-31
lines changed

6 files changed

+155
-31
lines changed

aws/rds/logs_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ func TestLogsSort(t *testing.T) {
2424
}
2525

2626
assert.True(t, true)
27-
}
27+
}

env/main.go

+42-2
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,60 @@ package env
22

33
import (
44
"os"
5+
"strconv"
56
)
67

7-
// Verify environment variable.
8+
// Verify exist environment variable.
89
func Exist(key string) bool {
910
if _, ok := os.LookupEnv(key); ok {
1011
return true
1112
}
1213
return false
1314
}
1415

15-
// Retrieve environment variable.
16+
// Retrieve environment variable in String type.
1617
func Get(key, fallback string) string {
1718
if value, ok := os.LookupEnv(key); ok {
1819
return value
1920
}
2021
return fallback
2122
}
23+
24+
// Retrieve environment variable in Int type.
25+
func GetInt(key string, fallback int) int {
26+
if envvalue, ok := os.LookupEnv(key); ok {
27+
value, _ := strconv.Atoi(envvalue)
28+
return value
29+
}
30+
31+
return fallback
32+
}
33+
34+
// Retrieve environment variable in Int type.
35+
func GetUInt8(key string, fallback uint8) uint8 {
36+
if envvalue, ok := os.LookupEnv(key); ok {
37+
value, _ := strconv.Atoi(envvalue)
38+
return uint8(value)
39+
}
40+
41+
return fallback
42+
}
43+
44+
func GetUInt16(key string, fallback uint16) uint16 {
45+
if envvalue, ok := os.LookupEnv(key); ok {
46+
value, _ := strconv.Atoi(envvalue)
47+
return uint16(value)
48+
}
49+
50+
return fallback
51+
}
52+
53+
// Retrieve environment variable in Bool type.
54+
func GetBool(key string, fallback bool) bool {
55+
if envvalue, ok := os.LookupEnv(key); ok {
56+
value, _ := strconv.ParseBool(envvalue)
57+
return value
58+
}
59+
60+
return fallback
61+
}

env/main_test.go

+28
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,34 @@ func TestGet(t *testing.T) {
1414
assert.Equal(t, env.Get("ENV_TMP", "value1"), "value1")
1515
}
1616

17+
func TestGetInt(t *testing.T) {
18+
t.Setenv("ENV_VAR", "10")
19+
20+
assert.Equal(t, env.GetInt("ENV_VAR", 20), 10)
21+
assert.Equal(t, env.GetInt("ENV_TMP", 0), 0)
22+
}
23+
24+
func TestGetUInt8(t *testing.T) {
25+
t.Setenv("ENV_VAR", "255")
26+
27+
assert.Equal(t, env.GetUInt8("ENV_VAR", uint8(10)), uint8(255))
28+
assert.Equal(t, env.GetUInt8("ENV_TMP", uint8(0)), uint8(0))
29+
}
30+
31+
func TestGetUInt16(t *testing.T) {
32+
t.Setenv("ENV_VAR", "3306")
33+
34+
assert.Equal(t, env.GetUInt16("ENV_VAR", uint16(10)), uint16(3306))
35+
assert.Equal(t, env.GetUInt16("ENV_TMP", uint16(0)), uint16(0))
36+
}
37+
38+
func TestGetBool(t *testing.T) {
39+
t.Setenv("ENV_VAR", "true")
40+
41+
assert.Equal(t, env.GetBool("ENV_VAR", false), true)
42+
assert.Equal(t, env.GetBool("ENV_TMP", false), false)
43+
}
44+
1745
func TestExist(t *testing.T) {
1846
t.Setenv("ENV_VAR", "value1")
1947

go.mod

+28-25
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,51 @@
11
module github.com/debeando/go-common
22

3-
go 1.19
3+
go 1.22
4+
5+
toolchain go1.23.2
46

57
require (
6-
github.com/ClickHouse/clickhouse-go/v2 v2.14.2
7-
github.com/aws/aws-sdk-go v1.44.319
8-
github.com/fatih/color v1.15.0
9-
github.com/go-sql-driver/mysql v1.7.1
10-
github.com/google/uuid v1.3.1
8+
github.com/ClickHouse/clickhouse-go/v2 v2.30.0
9+
github.com/aws/aws-sdk-go v1.55.5
10+
github.com/fatih/color v1.18.0
11+
github.com/go-sql-driver/mysql v1.8.1
12+
github.com/google/uuid v1.6.0
1113
github.com/hpcloud/tail v1.0.0
1214
github.com/sirupsen/logrus v1.9.3
13-
github.com/stretchr/testify v1.8.4
14-
go.mongodb.org/mongo-driver v1.12.1
15-
golang.org/x/sys v0.14.0
15+
github.com/stretchr/testify v1.9.0
16+
go.mongodb.org/mongo-driver v1.17.1
17+
golang.org/x/sys v0.26.0
1618
)
1719

1820
require (
19-
github.com/ClickHouse/ch-go v0.58.2 // indirect
20-
github.com/andybalholm/brotli v1.0.5 // indirect
21+
filippo.io/edwards25519 v1.1.0 // indirect
22+
github.com/ClickHouse/ch-go v0.63.1 // indirect
23+
github.com/andybalholm/brotli v1.1.1 // indirect
2124
github.com/davecgh/go-spew v1.1.1 // indirect
2225
github.com/fsnotify/fsnotify v1.7.0 // indirect
2326
github.com/go-faster/city v1.0.1 // indirect
24-
github.com/go-faster/errors v0.6.1 // indirect
25-
github.com/golang/snappy v0.0.1 // indirect
27+
github.com/go-faster/errors v0.7.1 // indirect
28+
github.com/golang/snappy v0.0.4 // indirect
2629
github.com/jmespath/go-jmespath v0.4.0 // indirect
27-
github.com/klauspost/compress v1.16.7 // indirect
30+
github.com/klauspost/compress v1.17.11 // indirect
2831
github.com/mattn/go-colorable v0.1.13 // indirect
29-
github.com/mattn/go-isatty v0.0.17 // indirect
30-
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
31-
github.com/paulmach/orb v0.10.0 // indirect
32-
github.com/pierrec/lz4/v4 v4.1.18 // indirect
32+
github.com/mattn/go-isatty v0.0.20 // indirect
33+
github.com/montanaflynn/stats v0.7.1 // indirect
34+
github.com/paulmach/orb v0.11.1 // indirect
35+
github.com/pierrec/lz4/v4 v4.1.21 // indirect
3336
github.com/pkg/errors v0.9.1 // indirect
3437
github.com/pmezard/go-difflib v1.0.0 // indirect
3538
github.com/segmentio/asm v1.2.0 // indirect
36-
github.com/shopspring/decimal v1.3.1 // indirect
39+
github.com/shopspring/decimal v1.4.0 // indirect
3740
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
3841
github.com/xdg-go/scram v1.1.2 // indirect
3942
github.com/xdg-go/stringprep v1.0.4 // indirect
40-
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
41-
go.opentelemetry.io/otel v1.19.0 // indirect
42-
go.opentelemetry.io/otel/trace v1.19.0 // indirect
43-
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
44-
golang.org/x/sync v0.3.0 // indirect
45-
golang.org/x/text v0.7.0 // indirect
43+
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
44+
go.opentelemetry.io/otel v1.31.0 // indirect
45+
go.opentelemetry.io/otel/trace v1.31.0 // indirect
46+
golang.org/x/crypto v0.28.0 // indirect
47+
golang.org/x/sync v0.8.0 // indirect
48+
golang.org/x/text v0.19.0 // indirect
4649
gopkg.in/fsnotify.v1 v1.4.7 // indirect
4750
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
4851
gopkg.in/yaml.v3 v3.0.1 // indirect

0 commit comments

Comments
 (0)