Skip to content

Commit c5e5f3c

Browse files
committed
feat: refactor configuration handling to use environment defaults and simplify initialization
1 parent 9fc5b6e commit c5e5f3c

File tree

1 file changed

+38
-41
lines changed

1 file changed

+38
-41
lines changed

config.go

Lines changed: 38 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,24 @@
11
package main
22

3-
import "os"
3+
import (
4+
"os"
5+
)
46

57
type Config struct {
6-
ImageDir string
7-
Secure string
8-
Password string
9-
Port string
10-
Title string
11-
Icon string
12-
Adderss string
13-
Dynamic string
14-
Linuxdo string
15-
LinuxdoClientId string
16-
LinuxdoClientSecret string
8+
ImageDir string
9+
Secure string
10+
Password string
11+
Port string
12+
Title string
13+
Icon string
14+
Adderss string
15+
Dynamic string
16+
Linuxdo string
17+
ClientId string
18+
ClientSecret string
1719
}
1820

19-
var config = Config{
20-
ImageDir: "./images",
21-
Password: "",
22-
Port: "8009",
23-
Title: "在线图集",
24-
Icon: "https://i.obai.cc/favicon.ico",
25-
Dynamic: "false",
26-
Adderss: "http://localhost:8009",
27-
Secure: "false",
28-
Linuxdo: "false",
29-
LinuxdoClientId: "",
30-
LinuxdoClientSecret: "",
31-
}
21+
var config = Config{}
3222

3323
var categoryCache []Category
3424

@@ -46,24 +36,31 @@ var imageExtensions = map[string]bool{
4636
".webp": true,
4737
}
4838

49-
func initConfig() {
50-
envVars := map[string]*string{
51-
"SITE_DIR": &config.ImageDir,
52-
"SITE_SECURE": &config.Secure,
53-
"SITE_PASSWORD": &config.Password,
54-
"SITE_PORT": &config.Port,
55-
"SITE_TITLE": &config.Title,
56-
"SITE_ICON": &config.Icon,
57-
"SITE_DYNAMIC": &config.Dynamic,
58-
"SITE_LINUXDO": &config.Linuxdo,
59-
"SITE_URL": &config.Adderss,
60-
"SITE_LINUXDO_CLIENT_ID": &config.LinuxdoClientId,
61-
"SITE_LINUXDO_CLIENT_SECRET": &config.LinuxdoClientSecret,
39+
func initEnv() {
40+
envDefaults := map[string]struct {
41+
target *string
42+
envKey string
43+
defaultVal string
44+
}{
45+
"ImageDir": {&config.ImageDir, "SITE_DIR", "./images"},
46+
"Port": {&config.Port, "SITE_PORT", "8009"},
47+
"Title": {&config.Title, "SITE_TITLE", "在线图集"},
48+
"Icon": {&config.Icon, "SITE_ICON", "https://i.obai.cc/favicon.ico"},
49+
"Dynamic": {&config.Dynamic, "SITE_DYNAMIC", "false"},
50+
"Linuxdo": {&config.Linuxdo, "SITE_LINUXDO", "false"},
51+
"Address": {&config.Adderss, "SITE_Address", "http://localhost:8009"},
52+
"ClientId": {&config.ClientId, "SITE_CLIENT_ID", ""},
53+
"ClientSecret": {&config.ClientSecret, "SITE_CLIENT_SECRET", ""},
54+
"Secure": {&config.Secure, "SITE_SECURE", "false"},
55+
"Password": {&config.Password, "SITE_PASSWORD", ""},
6256
}
6357

64-
for env, conf := range envVars {
65-
if val := os.Getenv(env); val != "" {
66-
*conf = val
58+
for _, cfg := range envDefaults {
59+
if val := os.Getenv(cfg.envKey); val != "" {
60+
*cfg.target = val
61+
} else {
62+
*cfg.target = cfg.defaultVal
6763
}
6864
}
65+
6966
}

0 commit comments

Comments
 (0)