new 1
This commit is contained in:
parent
9d86fd33c6
commit
da94a4b7b0
7 changed files with 133 additions and 246 deletions
79
pages/config.go
Normal file
79
pages/config.go
Normal file
|
@ -0,0 +1,79 @@
|
|||
package pages
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
GiteaServer string `yaml:"server" json:"server"`
|
||||
GiteaToken string `yaml:"token" json:"token"`
|
||||
GiteaBranch string `yaml:"branch" json:"branch"`
|
||||
PageBaseDomain string `yaml:"domain" json:"domain"`
|
||||
ConfigPath string `yaml:"config" json:"config"`
|
||||
}
|
||||
|
||||
var DefauleConfig = Config{
|
||||
GiteaServer: DefaultGiteaServer,
|
||||
GiteaToken: DefaultGiteaToken,
|
||||
GiteaBranch: DefaultGiteaBranch,
|
||||
PageBaseDomain: DefaultPageBaseDomain,
|
||||
ConfigPath: DefauleConfigPath,
|
||||
}
|
||||
|
||||
func ParseEnvs() *Config {
|
||||
config := &Config{}
|
||||
config.GiteaServer = GetEnvStr(ENV_PAGE_GiteaServer, DefaultGiteaServer)
|
||||
config.GiteaToken = GetEnvStr(ENV_PAGE_GiteaToken, DefaultGiteaToken)
|
||||
config.GiteaBranch = GetEnvStr(ENV_PAGE_GiteaBranch, DefaultGiteaBranch)
|
||||
config.PageBaseDomain = GetEnvStr(ENV_PAGE_PageBaseDomain, DefaultPageBaseDomain)
|
||||
|
||||
config.ConfigPath = GetEnvStr(ENV_PAGE_ConfigPath, DefauleConfigPath)
|
||||
return config
|
||||
}
|
||||
|
||||
func ParseFile(config *Config) error {
|
||||
c, err := os.ReadFile(config.ConfigPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return yaml.Unmarshal(c, &config)
|
||||
}
|
||||
|
||||
func mergeConfig(cli, file, envs, defaultKey Config) Config {
|
||||
config := defaultKey
|
||||
|
||||
config.GiteaServer = GetStr(cli.GiteaServer, file.GiteaServer, envs.GiteaServer, defaultKey.GiteaServer)
|
||||
config.GiteaToken = GetStr(cli.GiteaToken, file.GiteaToken, envs.GiteaToken, defaultKey.GiteaToken)
|
||||
config.GiteaBranch = GetStr(cli.GiteaBranch, file.GiteaBranch, envs.GiteaBranch, defaultKey.GiteaBranch)
|
||||
config.PageBaseDomain = GetStr(cli.PageBaseDomain, file.PageBaseDomain, envs.PageBaseDomain, defaultKey.PageBaseDomain)
|
||||
config.ConfigPath = GetStr(cli.ConfigPath, file.ConfigPath, envs.ConfigPath, defaultKey.ConfigPath)
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
func ParseCli(config *Config) {
|
||||
flag.StringVar(&config.GiteaServer, "server", config.GiteaServer, "gitea server")
|
||||
flag.StringVar(&config.GiteaToken, "token", config.GiteaToken, "gitea token")
|
||||
flag.StringVar(&config.GiteaBranch, "branch", config.GiteaBranch, "gitea branch")
|
||||
flag.StringVar(&config.PageBaseDomain, "domain", config.PageBaseDomain, "page base domain")
|
||||
flag.StringVar(&config.ConfigPath, "config", config.ConfigPath, "config path")
|
||||
flag.Parse()
|
||||
}
|
||||
|
||||
func Parse() Config {
|
||||
var config Config = DefauleConfig
|
||||
|
||||
envs := ParseEnvs()
|
||||
err := ParseFile(&config)
|
||||
if err != nil {
|
||||
fmt.Printf("Faild to parse config file: %v\n", err)
|
||||
}
|
||||
cli := Config{}
|
||||
ParseCli(&cli)
|
||||
|
||||
return mergeConfig(cli, config, *envs, DefauleConfig)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue