config.go
860 bytes
1package main
2
3import (
4 "fmt"
5 "os"
6)
7
8type config struct {
9 registry string
10 buildkitAddress string
11 databasePath string
12}
13
14func loadConfig() (config, error) {
15 registry, err := requiredEnvironment("REGISTRY")
16 if err != nil {
17 return config{}, err
18 }
19
20 buildkitAddress, err := requiredEnvironment("BUILDKIT_ADDR")
21 if err != nil {
22 return config{}, err
23 }
24
25 return config{
26 registry: registry,
27 buildkitAddress: buildkitAddress,
28 databasePath: environmentOrDefault("DATABASE_PATH", "/work/builds.db"),
29 }, nil
30}
31
32func requiredEnvironment(name string) (string, error) {
33 value := os.Getenv(name)
34 if value == "" {
35 return "", fmt.Errorf("%s is required", name)
36 }
37 return value, nil
38}
39
40func environmentOrDefault(name, defaultValue string) string {
41 if value := os.Getenv(name); value != "" {
42 return value
43 }
44 return defaultValue
45}