first commit

This commit is contained in:
William Bouzourène 2025-03-16 19:38:58 +01:00
commit 4b1861fa9b
14 changed files with 811 additions and 0 deletions

41
helpers/config.go Normal file
View file

@ -0,0 +1,41 @@
package helpers
import (
"os"
"github.com/golobby/dotenv"
)
type Config struct {
DryRun bool `env:"DRY_RUN"`
Hetzner struct {
ApiToken string `env:"HETZNER_API_TOKEN"`
}
}
var configParsed bool
var config Config
func GetConfig() (Config, error) {
if configParsed {
return config, nil
}
return parseConfig()
}
func parseConfig() (Config, error) {
file, err := os.Open(".env")
if err != nil {
return config, err
}
err = dotenv.NewDecoder(file).Decode(&config)
if err != nil {
return config, err
}
configParsed = true
return config, err
}

26
helpers/logger.go Normal file
View file

@ -0,0 +1,26 @@
package helpers
import (
"os"
"time"
"github.com/charmbracelet/log"
)
var loggerCreated bool
var logger *log.Logger
func GetLogger() *log.Logger {
if !loggerCreated {
logger = log.NewWithOptions(os.Stderr, log.Options{
Level: log.DebugLevel,
ReportCaller: true,
ReportTimestamp: true,
TimeFormat: time.RFC3339,
})
loggerCreated = true
}
return logger
}

14
helpers/resolver.go Normal file
View file

@ -0,0 +1,14 @@
package helpers
import (
"github.com/domainr/dnsr"
)
func ResolveRecord(recordName, recordType string) string {
r := dnsr.NewResolver(dnsr.WithCache(0))
for _, rr := range r.Resolve(recordName, recordType) {
return rr.Value
}
return ""
}