-
Notifications
You must be signed in to change notification settings - Fork 0
/
vars.go
83 lines (70 loc) · 1.84 KB
/
vars.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package vars
import (
"fmt"
"os"
"github.com/joaquinrovira/upv-oos-reservations/lib/exitcodes"
"github.com/joaquinrovira/upv-oos-reservations/lib/model/login"
"github.com/joho/godotenv"
)
type env string
const (
User env = "UPV_USER"
Pass env = "UPV_PASS"
LoginType env = "UPV_LOGIN_TYPE"
ActivityType env = "UPV_ACTIVITY_TYPE"
ActivityCode env = "UPV_ACTIVITY_CODE"
DefaultCron env = "DEFAULT_CRON"
CustomCron env = "CUSTOM_CRON"
ConfigFile env = "CONFIG_FILE"
Debug env = "DEBUG"
TestMode env = "TEST_MODE"
HighFqTrigger env = "HIGH_FQ_TRIGGER"
TZ env = "TZ" // https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
)
var required = []env{
User,
Pass,
ActivityType,
ActivityCode,
}
var defaults = map[env]string{
LoginType: string(login.StudentLogin),
ConfigFile: "./config.json",
DefaultCron: fmt.Sprintf("%s,%s", cronSaturdayEvery15Seconds, cronEvery15Minutes),
}
func init() {
// load from .env (if present)
godotenv.Load()
checkRequired()
applyDefaults()
}
func checkRequired() {
missingVars := false
for _, v := range required {
if os.Getenv(string(v)) == "" {
fmt.Fprintf(os.Stderr, "missing environment variable '%s'", v)
missingVars = true
}
}
if missingVars {
os.Exit(exitcodes.MISSING_REQUIRED_ENV)
}
}
func applyDefaults() {
for k, v := range defaults {
if os.Getenv(string(k)) == "" { // Apply defaults without overwriting existing values
os.Setenv(string(k), v)
}
}
}
func Get(v env) string {
return os.Getenv(string(v))
}
func Has(v env) bool {
return os.Getenv(string(v)) != ""
}
var cronEveryHour string = "0 0 * * * *"
var cronEvery10Seconds string = "*/10 * * * * *"
var cronEvery15Minutes string = "0 */15 * * * *"
var cronSaturdayAt10 string = "*/10 0-15 10 * * SAT"
var cronSaturdayEvery15Seconds string = "*/15 * * * * SAT"