/
config.go
45 lines (40 loc) · 1.45 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package cli
import "fmt"
//go:generate go run github.com/g4s8/envdoc@v0.1.2 --output ../CONFIG.md --all
// Version info
type Version struct {
Branch string `json:"branch" env:"SOURCE_BRANCH"`
Commit string `json:"commit" env:"SOURCE_COMMIT"`
Image string `json:"image" env:"IMAGE_NAME"`
}
type Config struct {
// Env must be local, development, test or production
Env string `env:"ENV" envDefault:"production"`
Timezone string `env:"TIMEZONE" envDefault:"Europe/Brussels"`
Host string `env:"HOST"`
Port int `env:"PORT" envDefault:"3000"`
Admins []string `env:"ADMINS,notEmpty"`
Storage struct {
Backend string `env:"BACKEND" envDefault:"s3"`
Conn string `env:"CONN,notEmpty"`
} `envPrefix:"STORAGE_"`
Repo struct {
Conn string `env:"CONN,notEmpty"`
} `envPrefix:"REPO_"`
OIDC struct {
URL string `env:"URL,notEmpty"`
ID string `env:"ID,notEmpty"`
Secret string `env:"SECRET,notEmpty"`
RedirectURL string `env:"REDIRECT_URL,notEmpty"`
UsernameClaim string `env:"USERNAME_CLAIM" envDefault:"preferred_username"`
NameClaim string `env:"NAME_CLAIM" envDefault:"name"`
EmailClaim string `env:"EMAIL_CLAIM" envDefault:"email"`
} `envPrefix:"OIDC_"`
Cookie struct {
Secret string `env:"SECRET,notEmpty"`
} `envPrefix:"COOKIE_"`
MaxFileSize int64 `env:"MAX_FILE_SIZE" envDefault:"2000000000"`
}
func (c Config) Addr() string {
return fmt.Sprintf("%s:%d", config.Host, config.Port)
}