|
|
|
package config
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
"git.phc.dm.unipi.it/phc/website/util"
|
|
|
|
"github.com/joho/godotenv"
|
|
|
|
)
|
|
|
|
|
|
|
|
var Mode string
|
|
|
|
var Host string
|
|
|
|
|
|
|
|
var GitUrl string
|
|
|
|
var ChatUrl string
|
|
|
|
var Email string
|
|
|
|
|
|
|
|
var UserPagesBaseUrl string
|
|
|
|
|
|
|
|
var AuthServiceHost string
|
|
|
|
|
|
|
|
func loadEnv(target *string, name, defaultValue string) {
|
|
|
|
value := os.Getenv(name)
|
|
|
|
if len(strings.TrimSpace(value)) == 0 {
|
|
|
|
*target = defaultValue
|
|
|
|
} else {
|
|
|
|
*target = value
|
|
|
|
}
|
|
|
|
|
|
|
|
log.Printf("%s = %v", name, *target)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Load() {
|
|
|
|
if err := godotenv.Load(); err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
|
|
|
|
|
|
|
|
// Production
|
|
|
|
loadEnv(&Mode, "MODE", "production")
|
|
|
|
loadEnv(&Host, "HOST", ":8080")
|
|
|
|
|
|
|
|
// Services
|
|
|
|
loadEnv(&GitUrl, "GIT_URL", "https://git.example.org")
|
|
|
|
loadEnv(&ChatUrl, "CHAT_URL", "https://chat.example.org")
|
|
|
|
loadEnv(&Email, "EMAIL", "mail@example.org")
|
|
|
|
|
|
|
|
// Poisson
|
|
|
|
loadEnv(&UserPagesBaseUrl, "USER_PAGES_BASE_URL", "https://poisson.phc.dm.unipi.it/~")
|
|
|
|
|
|
|
|
// AuthService
|
|
|
|
loadEnv(&AuthServiceHost, "AUTH_SERVICE_HOST", "http://localhost:3535")
|
|
|
|
}
|
|
|
|
|
|
|
|
func Object() util.H {
|
|
|
|
return util.H{
|
|
|
|
"Mode": Mode,
|
|
|
|
"Host": Host,
|
|
|
|
|
|
|
|
"GitUrl": GitUrl,
|
|
|
|
"ChatUrl": ChatUrl,
|
|
|
|
"Email": Email,
|
|
|
|
|
|
|
|
"UserPagesBaseUrl": UserPagesBaseUrl,
|
|
|
|
|
|
|
|
"AuthServiceHost": AuthServiceHost,
|
|
|
|
}
|
|
|
|
}
|