This commit is contained in:
unknown
2026-02-04 20:27:13 +08:00
commit 3b042d1dad
9410 changed files with 1488147 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
package configs
import (
"github.com/iwind/TeaGo/Tea"
"gopkg.in/yaml.v3"
"os"
"sync"
)
var (
brandConfig *BrandConfig
brandConfigOnce sync.Once
)
// BrandConfig 品牌配置
type BrandConfig struct {
OfficialSite string `yaml:"officialSite" json:"officialSite"`
DocsSite string `yaml:"docsSite" json:"docsSite"`
DocsPathPrefix string `yaml:"docsPathPrefix" json:"docsPathPrefix"`
DefaultInstallPath string `yaml:"defaultInstallPath" json:"defaultInstallPath"`
ProductName string `yaml:"productName" json:"productName"`
}
// GetBrandConfig 获取品牌配置
func GetBrandConfig() *BrandConfig {
brandConfigOnce.Do(func() {
brandConfig = loadBrandConfig()
})
return brandConfig
}
func loadBrandConfig() *BrandConfig {
config := &BrandConfig{
OfficialSite: getEnvOrDefault("BRAND_OFFICIAL_SITE", "https://goedge.cn"),
DocsSite: getEnvOrDefault("BRAND_DOCS_SITE", "https://goedge.cn"),
DocsPathPrefix: getEnvOrDefault("BRAND_DOCS_PREFIX", "/docs"),
DefaultInstallPath: getEnvOrDefault("BRAND_INSTALL_PATH", "/usr/local/goedge"),
ProductName: getEnvOrDefault("BRAND_PRODUCT_NAME", "GoEdge"),
}
// 从配置文件加载
configFile := Tea.ConfigFile("brand.yaml")
if data, err := os.ReadFile(configFile); err == nil {
var fileConfig struct {
Brand BrandConfig `yaml:"brand"`
}
if err := yaml.Unmarshal(data, &fileConfig); err == nil {
if fileConfig.Brand.OfficialSite != "" {
config.OfficialSite = fileConfig.Brand.OfficialSite
}
if fileConfig.Brand.DocsSite != "" {
config.DocsSite = fileConfig.Brand.DocsSite
}
if fileConfig.Brand.DocsPathPrefix != "" {
config.DocsPathPrefix = fileConfig.Brand.DocsPathPrefix
}
if fileConfig.Brand.DefaultInstallPath != "" {
config.DefaultInstallPath = fileConfig.Brand.DefaultInstallPath
}
if fileConfig.Brand.ProductName != "" {
config.ProductName = fileConfig.Brand.ProductName
}
}
}
return config
}
// GetDocsURL 获取文档 URL
func (c *BrandConfig) GetDocsURL(path string) string {
if len(path) > 0 && path[0] != '/' {
path = "/" + path
}
return c.DocsSite + c.DocsPathPrefix + path
}
// GetFullDocsURL 获取完整文档 URL
func (c *BrandConfig) GetFullDocsURL(path string) string {
return c.GetDocsURL(path)
}
// ToMap 转换为 map用于前端
func (c *BrandConfig) ToMap() map[string]interface{} {
return map[string]interface{}{
"officialSite": c.OfficialSite,
"docsSite": c.DocsSite,
"docsPathPrefix": c.DocsPathPrefix,
"defaultInstallPath": c.DefaultInstallPath,
"productName": c.ProductName,
}
}
func getEnvOrDefault(key, defaultValue string) string {
if value := os.Getenv(key); value != "" {
return value
}
return defaultValue
}