Add environment variable configuration
This commit is contained in:
parent
a9a3a2094e
commit
fed9e6527b
1
go.mod
1
go.mod
@ -3,6 +3,7 @@ module go.elara.ws/lure-updater
|
|||||||
go 1.20
|
go 1.20
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/caarlos0/env/v8 v8.0.0
|
||||||
github.com/go-git/go-git/v5 v5.7.0
|
github.com/go-git/go-git/v5 v5.7.0
|
||||||
github.com/pelletier/go-toml/v2 v2.0.8
|
github.com/pelletier/go-toml/v2 v2.0.8
|
||||||
github.com/spf13/pflag v1.0.5
|
github.com/spf13/pflag v1.0.5
|
||||||
|
2
go.sum
2
go.sum
@ -9,6 +9,8 @@ github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ
|
|||||||
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
|
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
|
||||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
|
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
|
||||||
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
|
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
|
||||||
|
github.com/caarlos0/env/v8 v8.0.0 h1:POhxHhSpuxrLMIdvTGARuZqR4Jjm8AYmoi/JKlcScs0=
|
||||||
|
github.com/caarlos0/env/v8 v8.0.0/go.mod h1:7K4wMY9bH0esiXSSHlfHLX5xKGQMnkH5Fk4TDSSSzfo=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||||
|
@ -19,27 +19,27 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Git Git `toml:"git"`
|
Git Git `toml:"git" envPrefix:"GIT_"`
|
||||||
Webhook Webhook `toml:"webhook"`
|
Webhook Webhook `toml:"webhook" envPrefix:"WEBHOOK_"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Git struct {
|
type Git struct {
|
||||||
RepoDir string `toml:"repoDir"`
|
RepoDir string `toml:"repoDir" env:"REPO_DIR"`
|
||||||
RepoURL string `toml:"repoURL"`
|
RepoURL string `toml:"repoURL" env:"REPO_URL"`
|
||||||
Commit Commit `toml:"commit"`
|
Commit Commit `toml:"commit" envPrefix:"COMMIT_"`
|
||||||
Credentials Credentials `toml:"credentials"`
|
Credentials Credentials `toml:"credentials" envPrefix:"CREDENTIALS_"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Credentials struct {
|
type Credentials struct {
|
||||||
Username string
|
Username string `toml:"username" env:"USERNAME"`
|
||||||
Password string
|
Password string `toml:"password" env:"PASSWORD"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Commit struct {
|
type Commit struct {
|
||||||
Name string `toml:"name"`
|
Name string `toml:"name" env:"NAME"`
|
||||||
Email string `toml:"email"`
|
Email string `toml:"email" env:"EMAIL"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Webhook struct {
|
type Webhook struct {
|
||||||
PasswordHash string `toml:"pwd_hash"`
|
PasswordHash string `toml:"pwd_hash" env:"PASSWORD_HASH"`
|
||||||
}
|
}
|
||||||
|
23
main.go
23
main.go
@ -25,6 +25,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/caarlos0/env/v8"
|
||||||
"github.com/go-git/go-git/v5"
|
"github.com/go-git/go-git/v5"
|
||||||
"github.com/pelletier/go-toml/v2"
|
"github.com/pelletier/go-toml/v2"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
@ -49,6 +50,7 @@ func main() {
|
|||||||
pluginDir := pflag.StringP("plugin-dir", "p", "/etc/lure-updater/plugins", "Path to plugin directory")
|
pluginDir := pflag.StringP("plugin-dir", "p", "/etc/lure-updater/plugins", "Path to plugin directory")
|
||||||
serverAddr := pflag.StringP("address", "a", ":8080", "Webhook server address")
|
serverAddr := pflag.StringP("address", "a", ":8080", "Webhook server address")
|
||||||
genHash := pflag.BoolP("gen-hash", "g", false, "Generate a password hash for webhooks")
|
genHash := pflag.BoolP("gen-hash", "g", false, "Generate a password hash for webhooks")
|
||||||
|
useEnv := pflag.BoolP("use-env", "E", false, "Use environment variables for configuration")
|
||||||
pflag.Parse()
|
pflag.Parse()
|
||||||
|
|
||||||
if *genHash {
|
if *genHash {
|
||||||
@ -71,13 +73,20 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cfg := &config.Config{}
|
cfg := &config.Config{}
|
||||||
fl, err := os.Open(*configPath)
|
if *useEnv {
|
||||||
if err != nil {
|
err = env.Parse(cfg)
|
||||||
log.Fatal("Error opening config file").Err(err).Send()
|
if err != nil {
|
||||||
}
|
log.Fatal("Error parsing environment variables").Err(err).Send()
|
||||||
err = toml.NewDecoder(fl).Decode(cfg)
|
}
|
||||||
if err != nil {
|
} else {
|
||||||
log.Fatal("Error decoding config file").Err(err).Send()
|
fl, err := os.Open(*configPath)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("Error opening config file").Err(err).Send()
|
||||||
|
}
|
||||||
|
err = toml.NewDecoder(fl).Decode(cfg)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("Error decoding config file").Err(err).Send()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := os.Stat(cfg.Git.RepoDir); os.IsNotExist(err) {
|
if _, err := os.Stat(cfg.Git.RepoDir); os.IsNotExist(err) {
|
||||||
|
Loading…
Reference in New Issue
Block a user