Files
CatsOfMastodonGo/internal/config/config.go
2025-07-11 17:59:38 +03:30

78 lines
1.6 KiB
Go

package config
import (
"log/slog"
"os"
"github.com/joho/godotenv"
)
type config struct {
AdminPassword string
Instance string
Tag string
JwtSecret string
JwtIssuer string
JwtAudience string
}
var Config *config
func Load() *config {
err := godotenv.Load()
if err != nil {
slog.Error("Error loading .env file - Using environment variables instead")
}
// Get mastodon instance
instance := os.Getenv("CAOM_INSTANCE")
if instance == "" {
instance = "https://mstdn.party"
}
// Get mastodon tag
tag := os.Getenv("CAOM_TAG")
if tag == "" {
tag = "catsofmastodon"
}
// Get admin password (Its a single user/admin app so its just fine)
adminPassword := os.Getenv("CAOM_ADMIN_PASSWORD")
if adminPassword == "" {
slog.Warn("No admin password provided, using default password 'catsaregood'")
adminPassword = "catsaregood"
}
// Jwt params
secret := os.Getenv("CAOM_JWT_SECRET")
if secret == "" {
panic("No jwt secret provided")
}
issuer := os.Getenv("CAOM_JWT_ISSUER")
if issuer == "" {
slog.Info("No jwt issuer provided, using default issuer 'CatsOfMastodonBotGo'")
issuer = "CatsOfMastodonBotGo"
}
audience := os.Getenv("CAOM_JWT_AUDIENCE")
if audience == "" {
slog.Info("No jwt audience provided, using default audience 'CatsOfMastodonBotGo'")
audience = "CatsOfMastodonBotGo"
}
// Inititlize AppContext
var appContext = &config{
AdminPassword: adminPassword,
Instance: instance,
Tag: tag,
JwtSecret: secret,
JwtIssuer: issuer,
JwtAudience: audience,
}
return appContext
}
func Init() {
Config = Load()
}