goconfig

package module
v0.25.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2026 License: Apache-2.0 Imports: 55 Imported by: 0

README

go-config

Go Reference Go Report Card Tests

一个功能强大且易于使用的 Go 配置管理库,支持多种配置格式、智能发现、热更新和环境隔离,为企业级应用提供开箱即用的配置管理解决方案。

  • Go 版本:go 1.25.0
  • 模块路径:github.com/HitGameAI/apex-config

✨ 核心特性

🎯 配置管理
  • 多格式支持 - 基于 Viper,支持 YAML、JSON、TOML、Properties 等多种配置格式
  • 智能发现 - 自动发现和加载配置文件,支持多环境配置(按文件名末尾段识别环境,如 config-dev.yaml、config-prod.yaml)
  • 灵活反序列化 - UnmarshalWithFlexibleNaming / UnmarshalWithKebabToSnake 支持宽松的键名匹配与 kebab→snake 转换
  • 配置校验 - ValidateConfig 校验配置可用性
  • 泛型安全访问 - GetConfigAs[T] / MustGetConfigAs[T] 以编译期类型安全的方式获取配置
  • 配置初始化生成 - SmartConfigGenerator 按模块生成带字段注释的 YAML/JSON 配置模板,支持备份已存在文件
  • 配置格式化 - ConfigFormatter 输出配置变更日志
🔥 热更新机制
  • 📁 文件监控 - 基于 fsnotify 实时监听配置文件变化
  • ⏱️ 防抖处理 - 可配置的防抖延迟,避免频繁重载
  • 🔔 回调系统 - CommonCallbackManager 灵活的回调管理器,支持优先级、异步执行、超时控制、按类型过滤
  • 🔄 错误恢复 - 配置重载失败时自动重试,可配置重试次数
  • 🌐 环境监控 - 支持监控环境变量变化并自动重载
🌍 环境管理
  • 63 种环境 - 内置 9 种标准环境 + 54 个国家/地区环境
  • 别名支持 - 每个环境支持多个别名(如 prod/production/prd)
  • 自动初始化 - 包导入时自动初始化,无需手动调用
  • 环境级别 - 按重要程度对环境分级(开发/测试/生产),提供 IsDevelopmentLevel / IsTestingLevel / IsProductionLevel
  • 动态切换 - 运行时动态切换环境并触发回调
  • 自定义注册 - RegisterEnvPrefixes 支持注册自定义环境类型与别名
📦 配置模块(35 个)
分类 配置模块 说明
🌐 网关与服务 Gateway 网关统一配置(含 HTTP/gRPC 服务)
💾 数据存储 Database 数据库统一配置(MySQL、PostgreSQL、SQLite)
Redis Redis 缓存配置
Cache 多级缓存配置(Memory、Expiring、Ristretto、Sharded、TwoLevel)
Elasticsearch Elasticsearch 配置
Etcd Etcd 配置
ClickHouse ClickHouse 列式数据库配置
TSDB 时序数据库配置
🔌 中间件 CORS 跨域资源共享配置
JWT JWT 认证配置
RateLimit 限流配置
Recovery 恢复中间件配置
Middleware 中间件统一配置
📊 监控运维 Health 健康检查配置
Metrics 指标收集配置
Prometheus Prometheus 监控配置
Jaeger Jaeger 链路追踪配置
Tracing 分布式追踪配置
Monitoring 监控统一配置
Grafana Grafana 配置
Pprof 性能分析配置
Alerting 告警配置
📨 消息队列 Kafka Kafka 配置
Queue 消息队列统一配置
SMTP 邮件发送配置
⚙️ 其他功能 Logging 日志配置
I18n 国际化配置
Security 安全配置
Signature 签名配置
Banner 启动横幅配置
Swagger API 文档配置
Jobs 定时任务配置
WSC WebSocket 通信配置
Breaker 熔断器配置
Common 公共基础配置
🎨 开发体验
  • 链式 API - 泛型构建器 NewConfigBuilder[T] 优雅的链式调用
  • 零配置启动 - 合理的默认值,开箱即用
  • 类型安全 - 泛型支持,编译时类型检查
  • 上下文集成 - 配置信息自动注入到 context.Context,通过 ContextKeyHelper 从上下文获取
  • 统一错误处理 - 分类错误(errors.go)支持错误分类、严重程度、回调

⚠️ 用之前先知道这几条

这几条都是实际踩过或实测过的,不是风格建议。

配置键一律用连字符

mapstructure 的键名必须写成连字符形式(module-name、l1-type),不要用下划线。 仓库里 1200 多个键有 764 处连字符,这是约定,而初次加载的反序列化不做 kebab↔snake 转换。

违反的代价是静默的。本库曾有 6 个字段把 mapstructure 写成 l1_type 而 yaml tag 写 l1-type,于是仓库自带的示例配置里那几行从来没生效过:

# 配置里写 l1-type,而 tag 是 l1_type
l1-type: memory      # -> 字段保持零值,没有任何报错
l1_type: memory      # -> 才是当时唯一生效的写法

新增字段时让 mapstructure / yaml 两个 tag 完全一致,json 用驼峰。

初次加载与热重载的键名匹配规则不同

这是上一条之所以危险的放大器:

路径 用的反序列化 是否做 kebab→snake
初次加载 裸 viper.Unmarshal 不做
热重载 UnmarshalWithFlexibleNaming 做

所以一个键名风格不匹配的字段,会在启动时是空的、热重载之后突然有值。实测:

配置里写 l1-type / l2-type:
  初次加载   tag=l1_type 收到 ""        tag=l2-type 收到 "redis"
  热重载     tag=l1_type 收到 "memory"  tag=l2-type 收到 "redis"

只要遵守上一条(两个 tag 一致、一律连字符),两条路径的行为就一致。

环境变量注入:目前不支持

配置值不能从环境变量注入。host、password 这类都得写在配置文件里。实测三种常见预期:

① YAML 里写 ${DB_HOST} 占位符   -> host="${DB_HOST}"   原样字面量,不展开
② 只设环境变量 HOST / PASSWORD  -> host="file-host"    环境变量完全无效
③ 手动开 viper.AutomaticEnv()   -> host="env-host"     生效
                                   password=""         但仍取不到

第 ③ 条是关键:AutomaticEnv() 只解析 viper 已经知道的键。配置文件里没出现过的 password,即使设了环境变量也取不到——而那恰好是密码最需要的场景(不写进文件)。 所以"打开 AutomaticEnv 就行"是不够的,还要配合 SetDefault 或 BindEnv 逐键注册。

环境变量目前只用来选环境(GO_ENV=production 之类),不用来注入配置值。

多实例配置:只有两处支持

想配 master / slave1 / slave2,或多个 Kafka 集群,目前配不出来。

配置 多实例 形式
gateway.GRPC.Clients ✅ map[string]*GRPCClient,key 为服务名
wsc.Tokens ✅ map[string]*ConnectionTokenSet,key 为 appid
数据库 / Kafka / NATS / Redis / ClickHouse / Elasticsearch / Etcd / MQTT / SMTP ❌ 单实例

数据库的容器按驱动类型分键(mysql / postgresql / sqlite / cockroachdb), 每个驱动一个实例,不是按实例名分键。

支持多实例的那两处用的是「map key 回填」模式:实例名不写在字段里,而是加载后从 map key 回填到一个 mapstructure:"-" 的字段上。新增多实例配置时照这个模式写。

衍生字段用 AfterLoad / Validate 计算

不从配置文件读、而是算出来的字段(如拼好的 Endpoint),tag 写 mapstructure:"-" yaml:"-" json:"-", 在 AfterLoad()(internal.CallAfterLoad 调用)或 Validate() 里计算。

注意是 "-" 不是 "_":写成 "_" 的话这个字段仍然可以被配置里一个叫 _ 的键覆盖掉。


⚡ 请求属性提取与性能

common.ExtractAttribute(r, sources) 按来源清单顺序取第一个非空值,来源可以是 header、 query 或 cookie。

取多个属性时用 AttributeExtractor

标准库的 r.URL.Query() 与 r.Cookie(name) 每次调用都重新解析。一个属性一次 ExtractAttribute 的用法下,同一个查询串会被解析几十遍——网关默认配置有 43 个 query 来源、 25 个 cookie 来源,分布在 28 个属性的清单里。

所以取多个属性时,建一个请求级的提取器共用:

// 推荐:一次请求建一个,查询串与 Cookie 头各只解析一次
e := common.NewAttributeExtractor(r)
traceID := e.Extract(cfg.TraceIDSources)
userID  := e.Extract(cfg.UserIDSources)
tenantID := e.Extract(cfg.TenantIDSources)

// 只取一个属性时,这样就够了
traceID := common.ExtractAttribute(r, cfg.TraceIDSources)

两者语义完全一致。提取器是请求级的,不加锁,不要跨 goroutine 共享。

实测(按真实默认配置取齐 28 个属性,Apple M4,基准见 pkg/gateway/request_bench_test.go):

请求形态 一个属性一次调用 复用提取器 提速
属性都不存在 644 ns / 0 allocs 649 ns / 0 allocs —
从 header 命中 885 ns / 0 allocs 778 ns / 0 allocs 1.14x
带查询串 9617 ns / 200 allocs 1210 ns / 8 allocs 7.95x
带 Cookie 头 3024 ns / 28 allocs 1278 ns / 7 allocs 2.37x
混合 6160 ns / 116 allocs 1594 ns / 9 allocs 3.86x

query 形态剩下的 8 次分配全部来自那唯一一次 url.ParseQuery——构建 url.Values 必须付的, 是当前语义下的地板。

header 来源的 Key 写规范形式

AttributeSource 里 header 来源的 Key 请写 HTTP 规范形式:X-User-Id,不要写 X-User-ID。

两种拼法的查找结果完全一样,但 Header.Get 每次都会对 key 调 CanonicalMIMEHeaderKey—— key 本来就规范时原样返回、不分配;不规范则每次查找都要现算并分配一个新字符串。

默认配置里的 Key 已经是规范形式。用户自己在 YAML 里写 x-user-id 也没关系: RequestContext.Validate() 会在加载后归一化一次,之后的查找同样零分配 (实测 111 ns / 3 allocs → 49 ns / 0 allocs)。

query 与 cookie 的键名大小写敏感,不会被归一化。


🚀 快速开始

安装
go get github.com/HitGameAI/apex-config
最小示例
package main

import (
 "fmt"
 "time"

 goconfig "github.com/HitGameAI/apex-config"
)

type AppConfig struct {
 Server struct {
  Host string `mapstructure:"host"`
  Port int    `mapstructure:"port"`
 } `mapstructure:"server"`
}

func main() {
 cfg := &AppConfig{}
 manager := goconfig.NewConfigBuilder(cfg).
  WithConfigPath("config.yaml").              // 指定配置文件路径
  WithEnvironment(goconfig.EnvDevelopment).    // 设置运行环境
  WithHotReload(&goconfig.HotReloadConfig{     // 启用热更新
   Enabled:       true,
   DebounceDelay: 1 * time.Second,
  }).
  MustBuildAndStart() // 构建并启动(失败时 panic)
 defer manager.Stop()

 fmt.Printf("服务启动在 %s:%d\n", cfg.Server.Host, cfg.Server.Port)
}

对应的 config.yaml:

server:
  host: localhost
  port: 8080
📖 示例代码

所有功能的完整示例代码请查看 examples 目录

示例 说明 链接
🎯 基础使用 最基本的配置加载和使用方式 examples/basic
🔥 配置热更新 启用配置热更新,注册配置变更回调 examples/hot_reload
🌍 环境管理 使用环境判断函数,在不同环境下加载不同配置 examples/environment
📋 上下文集成 将配置信息注入到 context.Context,从上下文中获取配置 examples/context
🔍 配置发现 配置文件的自动发现、扫描和创建功能 examples/discovery
🏗️ 构建器模式 配置构建器的各种链式 API 用法 examples/builder
快速运行示例
# 进入示例目录
cd examples

# 运行基础示例
cd basic && go run main.go

# 运行热更新示例
cd hot_reload && go run main.go

# 查看所有示例的详细说明
cat README.md

📋 配置构建器 API

ConfigBuilder[T] 提供以下链式方法(详见 config_builder.go):

方法 说明
WithConfigPath(path) 直接指定配置文件路径
WithSearchPath(path) 设置配置搜索目录
WithPrefix(prefix) 设置配置文件名前缀(如 gateway-xl)
WithPattern(pattern) 按模式匹配配置文件
WithEnvironment(env) 设置运行环境
WithHotReload(cfg) 配置热更新参数
WithContext(opts) 设置上下文键选项
Build() / BuildAndStart(ctx) 构建 / 构建并启动
MustBuildAndStart(ctx) 构建并启动,失败时 panic

完整示例请查看 examples/builder

配置发现

ConfigDiscovery 支持目录扫描、按环境/模式发现配置文件,环境识别按文件名末尾段匹配。完整示例请查看 examples/discovery

🎯 高级特性

上下文集成

ContextManager / ContextKeyHelper 将配置与环境信息注入 context.Context,便于跨层传递。完整示例请查看 examples/context

集成配置管理器

IntegratedConfigManager 是统一入口,聚合配置、热重载、环境与上下文管理,主要方法:

方法 说明
Start(ctx) / Stop() / MustStart(ctx) 生命周期管理
IsRunning() 运行状态
GetConfig() / GetConfigAs[T] / MustGetConfigAs[T] 获取配置(泛型安全访问)
GetViper() / GetContextManager() / GetEnvironmentManager() / GetHotReloader() 获取底层组件
GetConfigMetadata() 获取配置元数据
RegisterConfigCallback / UnregisterConfigCallback 注册/注销配置变更回调
RegisterEnvironmentCallback / UnregisterEnvironmentCallback 注册/注销环境变更回调
SetEnvironment(env) 动态切换环境
ValidateConfig() 校验配置
WithContext(ctx) 将配置注入 context

📚 详细文档

🎨 最佳实践

1. 使用配置前缀进行环境隔离
// 开发环境:gateway-xl-dev.yaml
// 测试环境:gateway-xl-test.yaml
// 生产环境:gateway-xl-prod.yaml
manager := goconfig.NewConfigBuilder(config).
    WithPrefix("gateway-xl").
    WithSearchPath("resources").
    MustBuildAndStart()
2. 利用热更新实现零停机配置变更
manager.RegisterConfigCallback(
    func(ctx context.Context, event goconfig.CallbackEvent) error {
        // 重新初始化依赖配置的组件
        return reinitializeComponents(event.NewValue)
    },
    goconfig.CallbackOptions{
        ID:    "component-reinit",
        Types: []goconfig.CallbackType{goconfig.CallbackTypeConfigChanged},
    },
)
3. 使用环境级别进行功能开关
func setupFeatures() {
    if goconfig.IsDevelopmentLevel() {
        // 开发环境:启用调试功能
        // pprof.EnableProfiling()
        // gin.SetMode(gin.DebugMode)
    }

    if goconfig.IsProductionLevel() {
        // 生产环境:启用监控
        // prometheus.EnableMetrics()
        // sentry.InitErrorTracking()
    }
}
4. 全球化部署配置
# 中国区域
export APP_ENV=china
./app

# 美国区域
export APP_ENV=usa
./app

# 欧洲区域
export APP_ENV=germany
./app

🔧 配置示例

查看 pkg/ 目录下各模块的 .yaml 和 .json 示例文件

📜 许可证

本项目采用 MIT 许可证


如果这个项目对你有帮助,请给我们一个 ⭐️

Documentation

Overview

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 15:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 15:00:00 * @FilePath: \go-config\callback_manager.go * @Description: 通用回调管理组件,提供统一的事件回调机制 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 16:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 16:00:00 * @FilePath: \go-config\config_builder.go * @Description: 配置管理器构建器,提供链式API和灵活的配置发现机制 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-27 09:30:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-27 09:30:00 * @FilePath: \go-config\config_unmarshaler.go * @Description: 通用配置反序列化工具 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 15:30:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-22 17:08:23 * @FilePath: \go-config\hot_reload.go * @Description: 重构后的配置热更新模块,使用通用回调管理器 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 16:20:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 16:20:00 * @FilePath: \go-config\integrated_manager_refactored.go * @Description: 重构后的集成配置管理器,专注于核心管理功能 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.

Index

Constants

This section is empty.

Variables

View Source
var (
	// 环境管理相关
	ErrCallbackIDEmpty = errors.New("回调ID不能为空")
	ErrConfigEmpty     = errors.New("配置为空")
	ErrNoConfigPath    = errors.New("未指定配置路径或搜索选项")

	// 管理器状态相关
	ErrManagerRunning     = errors.New("集成配置管理器已在运行")
	ErrManagerNotRunning  = errors.New("集成配置管理器未运行")
	ErrReloaderRunning    = errors.New("热更新器已经在运行")
	ErrReloaderNotRunning = errors.New("热更新器未运行")
)

预定义的基础错误(无参数的错误)

View Source
var ContextHelper = ContextKeyHelper{}

创建全局上下文辅助工具实例

View Source
var DefaultConfigNames = []string{"config", "application", "app", "gateway", "service"}

DefaultConfigNames 默认配置文件名

View Source
var DefaultEnvPrefixes = map[EnvironmentType][]string{

	EnvDevelopment: {"dev", "develop", "development"},
	EnvLocal:       {"local", "localhost"},
	EnvTest:        {"test", "testing", "qa", "sit"},
	EnvStaging:     {"staging", "stage", "stg", "pre", "preprod", "pre-prod", "fat", "gray", "grey", "canary"},
	EnvProduction:  {"prod", "production", "prd", "release", "live", "online", "master", "main"},
	EnvDebug:       {"debug", "debugging", "dbg"},
	EnvDemo:        {"demo", "demonstration", "showcase", "preview", "sandbox"},
	EnvUAT:         {"uat", "acceptance", "user-acceptance", "beta"},
	EnvIntegration: {"integration", "int", "ci", "integration-test", "integ"},

	EnvChina:       {"china", "cn", "chn"},
	EnvJapan:       {"japan", "jp", "jpn"},
	EnvKorea:       {"korea", "kr", "kor", "south-korea", "southkorea"},
	EnvIndia:       {"india", "in", "ind"},
	EnvSingapore:   {"singapore", "sg", "sgp"},
	EnvThailand:    {"thailand", "th", "tha", "thai"},
	EnvVietnam:     {"vietnam", "vn", "vnm", "viet"},
	EnvMalaysia:    {"malaysia", "my", "mys"},
	EnvIndonesia:   {"indonesia", "id", "idn"},
	EnvPhilippines: {"philippines", "ph", "phl"},
	EnvMyanmar:     {"myanmar", "mm", "mmr", "burma"},
	EnvLaos:        {"laos", "la", "lao"},
	EnvCambodia:    {"cambodia", "kh", "khm"},
	EnvPakistan:    {"pakistan", "pk", "pak"},
	EnvBangladesh:  {"bangladesh", "bd", "bgd"},
	EnvSriLanka:    {"srilanka", "lk", "lka", "sri-lanka"},
	EnvNepal:       {"nepal", "np", "npl"},
	EnvHongKong:    {"hongkong", "hk", "hkg", "hong-kong"},
	EnvTaiwan:      {"taiwan", "tw", "twn"},
	EnvMacao:       {"macao", "mo", "mac", "macau"},

	EnvUK:          {"uk", "gb", "gbr", "united-kingdom", "britain", "england"},
	EnvGermany:     {"germany", "de", "deu", "deutschland"},
	EnvFrance:      {"france", "fr", "fra"},
	EnvItaly:       {"italy", "it", "ita", "italia"},
	EnvSpain:       {"spain", "es", "esp", "espana"},
	EnvNetherlands: {"netherlands", "nl", "nld", "holland"},
	EnvBelgium:     {"belgium", "be", "bel"},
	EnvSwitzerland: {"switzerland", "ch", "che"},
	EnvAustria:     {"austria", "at", "aut"},
	EnvSweden:      {"sweden", "se", "swe"},
	EnvNorway:      {"norway", "no", "nor"},
	EnvDenmark:     {"denmark", "dk", "dnk"},
	EnvFinland:     {"finland", "fi", "fin"},
	EnvPoland:      {"poland", "pl", "pol"},
	EnvRussia:      {"russia", "ru", "rus"},
	EnvTurkey:      {"turkey", "tr", "tur"},

	EnvUSA:    {"usa", "us", "united-states", "america"},
	EnvCanada: {"canada", "ca", "can"},
	EnvMexico: {"mexico", "mx", "mex"},

	EnvBrazil:    {"brazil", "br", "bra", "brasil"},
	EnvArgentina: {"argentina", "ar", "arg"},
	EnvChile:     {"chile", "cl", "chl"},
	EnvColombia:  {"colombia", "co", "col"},
	EnvPeru:      {"peru", "pe", "per"},

	EnvAustralia:  {"australia", "au", "aus"},
	EnvNewZealand: {"newzealand", "nz", "nzl", "new-zealand"},

	EnvSouthAfrica: {"southafrica", "za", "zaf", "south-africa"},
	EnvEgypt:       {"egypt", "eg", "egy"},
	EnvNigeria:     {"nigeria", "ng", "nga"},
	EnvKenya:       {"kenya", "ke", "ken"},

	EnvUAE:         {"uae", "ae", "are", "emirates", "dubai"},
	EnvSaudiArabia: {"saudiarabia", "sa", "sau", "saudi-arabia", "saudi"},
	EnvIsrael:      {"israel", "il", "isr"},
	EnvQatar:       {"qatar", "qa", "qat"},
}

DefaultEnvPrefixes 全局环境前缀映射(统一定义,避免重复) 覆盖常见的环境命名约定,支持多种风格:短名、全名、连字符等

View Source
var DefaultSupportedExtensions = []string{".yaml", ".yml", ".json", ".toml", ".properties"}

DefaultSupportedExtensions 默认支持的配置文件扩展名

View Source
var ErrCallbackFuncNil = errors.New("回调函数不能为空")

ErrCallbackFuncNil 回调函数不能为空错误

View Source
var ErrNoConfigCandidate = errors.New("未找到任何配置文件候选")

ErrNoConfigCandidate 未找到任何配置文件候选错误

Functions

func ClearGlobalContextManager

func ClearGlobalContextManager()

ClearGlobalContextManager 清理全局上下文管理器(主要用于测试)

func ErrAddWatcher

func ErrAddWatcher(err error) error

ErrAddWatcher 添加配置目录监控失败错误

func ErrAutoDiscoverConfigFiles

func ErrAutoDiscoverConfigFiles(err error) error

ErrAutoDiscoverConfigFiles 自动发现配置文件失败错误

func ErrBreakerHalfOpenSuccessesInvalid

func ErrBreakerHalfOpenSuccessesInvalid(taskName string) error

ErrBreakerHalfOpenSuccessesInvalid 熔断器half_open_successes无效错误

func ErrBreakerMaxFailuresInvalid

func ErrBreakerMaxFailuresInvalid(taskName string) error

ErrBreakerMaxFailuresInvalid 熔断器max_failures无效错误

func ErrBreakerResetTimeoutInvalid

func ErrBreakerResetTimeoutInvalid(taskName string) error

ErrBreakerResetTimeoutInvalid 熔断器reset_timeout无效错误

func ErrCallbackIDExists

func ErrCallbackIDExists(id string) error

ErrCallbackIDExists 回调ID已存在错误

func ErrCallbackIDNotFound

func ErrCallbackIDNotFound(id string) error

ErrCallbackIDNotFound 回调ID不存在错误

func ErrConfigFileNotFound

func ErrConfigFileNotFound(suggestedPath string) error

ErrConfigFileNotFound 未找到配置文件错误

func ErrConfigTypeMismatch

func ErrConfigTypeMismatch(expected, actual any) error

ErrConfigTypeMismatch 配置类型不匹配错误

func ErrCreateDir

func ErrCreateDir(err error) error

ErrCreateDir 创建目录失败错误

func ErrCreateHotReloader

func ErrCreateHotReloader(err error) error

ErrCreateHotReloader 创建热更新器失败错误

func ErrCreateManager

func ErrCreateManager(err error) error

ErrCreateManager 创建集成配置管理器失败错误

func ErrCreateOutputDir

func ErrCreateOutputDir(err error) error

ErrCreateOutputDir 创建输出目录失败错误

func ErrCreateWatcher

func ErrCreateWatcher(err error) error

ErrCreateWatcher 创建文件监控器失败错误

func ErrCronSpecEmpty

func ErrCronSpecEmpty(taskName string) error

ErrCronSpecEmpty 任务cron_spec为空错误

func ErrDiscoverConfigFiles

func ErrDiscoverConfigFiles(err error) error

ErrDiscoverConfigFiles 发现配置文件失败错误

func ErrEnvTypeRegistered

func ErrEnvTypeRegistered(env EnvironmentType) error

ErrEnvTypeRegistered 环境类型已注册错误

func ErrEnvVarNotSet

func ErrEnvVarNotSet(key string) error

ErrEnvVarNotSet 环境变量未设置错误

func ErrFindConfigByPattern

func ErrFindConfigByPattern(err error) error

ErrFindConfigByPattern 按模式查找配置文件失败错误

func ErrGenerateDefaultConfig

func ErrGenerateDefaultConfig(err error) error

ErrGenerateDefaultConfig 生成默认配置失败错误

func ErrGenerateJSON

func ErrGenerateJSON(err error) error

ErrGenerateJSON 生成JSON配置失败错误

func ErrGenerateYAML

func ErrGenerateYAML(err error) error

ErrGenerateYAML 生成YAML配置失败错误

func ErrGetAbsPath

func ErrGetAbsPath(err error) error

ErrGetAbsPath 获取配置文件绝对路径失败错误

func ErrInvalidTimezone

func ErrInvalidTimezone(timezone string, err error) error

ErrInvalidTimezone 无效的时区错误

func ErrMarshalJSON

func ErrMarshalJSON(err error) error

ErrMarshalJSON 序列化JSON失败错误

func ErrMarshalYAML

func ErrMarshalYAML(err error) error

ErrMarshalYAML 序列化YAML失败错误

func ErrMaxConcurrentInvalid

func ErrMaxConcurrentInvalid(taskName string) error

ErrMaxConcurrentInvalid 任务max_concurrent无效错误

func ErrModuleConfigEmpty

func ErrModuleConfigEmpty(moduleName string) error

ErrModuleConfigEmpty 模块默认配置为空错误

func ErrModuleConfigSerializeFailed

func ErrModuleConfigSerializeFailed(moduleName string, err error) error

ErrModuleConfigSerializeFailed 模块配置序列化失败错误

func ErrModuleDefaultFuncNil

func ErrModuleDefaultFuncNil(moduleName string) error

ErrModuleDefaultFuncNil 模块默认函数为空错误

func ErrModuleNotFound

func ErrModuleNotFound(moduleName string) error

ErrModuleNotFound 模块不存在错误

func ErrModuleValidationFailed

func ErrModuleValidationFailed(failedModules []string) error

ErrModuleValidationFailed 模块配置验证失败错误

func ErrModulesValidationFailed

func ErrModulesValidationFailed(modules string) error

ErrModulesValidationFailed 模块配置验证失败错误(带模块列表)

func ErrNoMatchingConfig

func ErrNoMatchingConfig(pattern string) error

ErrNoMatchingConfig 未找到匹配模式的配置文件错误

func ErrPartialModuleFailed

func ErrPartialModuleFailed(successCount, failCount int) error

ErrPartialModuleFailed 部分模块配置生成失败错误

func ErrPriorityOutOfRange

func ErrPriorityOutOfRange(taskName string) error

ErrPriorityOutOfRange 任务priority超出范围错误

func ErrReadConfigFile

func ErrReadConfigFile(err error) error

ErrReadConfigFile 读取配置文件失败错误

func ErrResolveConfigPath

func ErrResolveConfigPath(err error) error

ErrResolveConfigPath 解析配置路径失败错误

func ErrScanDir

func ErrScanDir(err error) error

ErrScanDir 扫描目录失败错误

func ErrSearchPathNotExist

func ErrSearchPathNotExist(path string) error

ErrSearchPathNotExist 搜索路径不存在错误

func ErrStartHotReloader

func ErrStartHotReloader(err error) error

ErrStartHotReloader 启动热更新器失败错误

func ErrStartManager

func ErrStartManager(err error) error

ErrStartManager 启动管理器失败错误

func ErrStopHotReloader

func ErrStopHotReloader(err error) error

ErrStopHotReloader 停止热更新器失败错误

func ErrTimeoutInvalid

func ErrTimeoutInvalid(taskName string) error

ErrTimeoutInvalid 任务timeout无效错误

func ErrUnmarshalConfig

func ErrUnmarshalConfig(err error) error

ErrUnmarshalConfig 解析配置失败错误

func ErrUnsupportedFormat

func ErrUnsupportedFormat(extension string) error

ErrUnsupportedFormat 不支持的配置文件格式错误

func ErrWriteConfigFile

func ErrWriteConfigFile(err error) error

ErrWriteConfigFile 写入配置文件失败错误

func ErrWriteJSON

func ErrWriteJSON(err error) error

ErrWriteJSON 写入JSON文件失败错误

func ErrWriteYAML

func ErrWriteYAML(err error) error

ErrWriteYAML 写入YAML文件失败错误

func FlexibleMatchName

func FlexibleMatchName(mapKey, fieldName string) bool

FlexibleMatchName 灵活的键名匹配函数 支持多种命名约定之间的自动转换

匹配策略(按优先级): 1. 直接匹配(快速路径) 2. 大小写不敏感匹配 3. kebab-case 转 snake_case 4. camelCase/PascalCase 转 snake_case

参数:

mapKey: 配置文件中的键名(可能是 kebab-case、camelCase 等)
fieldName: 结构体字段的 mapstructure 标签名(通常是 snake_case)

返回:

bool: 是否匹配成功

func GetConfigAs

func GetConfigAs[T any](icm *IntegratedConfigManager) (*T, error)

GetConfigAs 获取指定类型的配置

func GetConfigFromContext

func GetConfigFromContext(ctx context.Context) (any, bool)

GetConfigFromContext 从上下文中获取配置信息

func GetCurrentEnvironmentLevel

func GetCurrentEnvironmentLevel() int

GetCurrentEnvironmentLevel 获取当前环境级别

func GetEnvPrefixes

func GetEnvPrefixes(env EnvironmentType) []string

GetEnvPrefixes 获取指定环境的前缀列表

func GetEnvironmentLevel

func GetEnvironmentLevel(env EnvironmentType) int

GetEnvironmentLevel 获取环境级别(用于比较环境的重要程度) 数字越小表示环境级别越高(生产环境最高)

func GetMetadataFromContext

func GetMetadataFromContext(ctx context.Context) (map[string]any, bool)

GetMetadataFromContext 从上下文中获取元数据

func IsAnyOf

func IsAnyOf(envs ...EnvironmentType) bool

IsAnyOf 判断当前环境是否为指定环境类型中的任意一种 envs: 要检查的环境类型列表

func IsDebug

func IsDebug() bool

IsDebug 判断当前环境是否为调试环境

func IsDemo

func IsDemo() bool

IsDemo 判断当前环境是否为演示环境

func IsDev

func IsDev() bool

IsDev 判断当前环境是否为开发环境

func IsDevelopmentLevel

func IsDevelopmentLevel() bool

IsDevelopmentLevel 判断当前环境是否为开发级别

func IsEnvironment

func IsEnvironment(env EnvironmentType) bool

IsEnvironment 通用环境判断函数 env: 要检查的环境类型

func IsIntegration

func IsIntegration() bool

IsIntegration 判断当前环境是否为集成环境

func IsLocal

func IsLocal() bool

IsLocal 判断当前环境是否为本地环境

func IsProduction

func IsProduction() bool

IsProduction 判断当前环境是否为生产环境

func IsProductionLevel

func IsProductionLevel() bool

IsProductionLevel 判断当前环境是否为生产级别

func IsStaging

func IsStaging() bool

IsStaging 判断当前环境是否为预发布环境

func IsTest

func IsTest() bool

IsTest 判断当前环境是否为测试环境

func IsTestingLevel

func IsTestingLevel() bool

IsTestingLevel 判断当前环境是否为测试级别

func IsUAT

func IsUAT() bool

IsUAT 判断当前环境是否为用户验收测试环境

func ListAllEnvPrefixes

func ListAllEnvPrefixes() map[EnvironmentType][]string

ListAllEnvPrefixes 列出所有已注册的环境前缀

func MustGetConfigAs

func MustGetConfigAs[T any](icm *IntegratedConfigManager) *T

MustGetConfigAs 必须成功获取指定类型的配置

func RegisterEnvPrefixes

func RegisterEnvPrefixes(env EnvironmentType, prefixes ...string)

RegisterEnvPrefixes 注册自定义环境前缀(包级别便捷函数) 内部调用 GetGlobalEnvManager().RegisterEnvironment(),保持逻辑统一 示例:

func init() {
    goconfig.RegisterEnvPrefixes("custom", "custom", "my-env", "myenv")
}

func SetContextKey

func SetContextKey(options *ContextKeyOptions)

SetContextKey 设置上下文键 options: 指定的上下文键选项,如果为 nil,将使用默认值

func SetCurrentEnvironment

func SetCurrentEnvironment(env EnvironmentType)

SetCurrentEnvironment 设置当前环境类型(便捷函数)

func SetGlobalBuilderFactory

func SetGlobalBuilderFactory(factory *BuilderFactory)

SetGlobalBuilderFactory 设置全局构建器工厂

func UnmarshalWithFlexibleNaming

func UnmarshalWithFlexibleNaming(v *viper.Viper, target interface{}) error

UnmarshalWithFlexibleNaming 使用灵活的命名匹配策略反序列化配置 支持的转换场景: 1. 直接匹配(大小写敏感) 2. 大小写不敏感匹配 3. kebab-case (service-name) -> snake_case (service_name) 4. camelCase (serviceName) -> snake_case (service_name) 5. PascalCase (ServiceName) -> snake_case (service_name)

参数:

v: Viper 实例
target: 目标配置结构体指针

返回:

error: 反序列化错误

func UnmarshalWithKebabToSnake

func UnmarshalWithKebabToSnake(v *viper.Viper, target interface{}) error

UnmarshalWithKebabToSnake 专门用于 kebab-case 到 snake_case 的转换 这是 UnmarshalWithFlexibleNaming 的简化版本,主要用于 YAML 配置

参数:

v: Viper 实例
target: 目标配置结构体指针

返回:

error: 反序列化错误

func WithGlobalConfig

func WithGlobalConfig(ctx context.Context) context.Context

WithGlobalConfig 使用全局上下文管理器将配置添加到上下文中

Types

type BuilderFactory

type BuilderFactory struct {
	// contains filtered or unexported fields
}

BuilderFactory 构建器工厂

func GetGlobalBuilderFactory

func GetGlobalBuilderFactory() *BuilderFactory

GetGlobalBuilderFactory 获取全局构建器工厂

func NewBuilderFactory

func NewBuilderFactory() *BuilderFactory

NewBuilderFactory 创建新的构建器工厂

func (*BuilderFactory) SetDefaults

func (f *BuilderFactory) SetDefaults(options ConfigBuilderOptions) *BuilderFactory

SetDefaults 设置默认选项

type CallbackEvent

type CallbackEvent struct {
	Type        CallbackType           `json:"type"`        // 事件类型
	Timestamp   time.Time              `json:"timestamp"`   // 事件时间
	Source      string                 `json:"source"`      // 事件源(文件路径、环境变量名等)
	OldValue    interface{}            `json:"old_value"`   // 旧值
	NewValue    interface{}            `json:"new_value"`   // 新值
	Environment EnvironmentType        `json:"environment"` // 当前环境
	Error       error                  `json:"error"`       // 错误信息(仅错误回调)
	Metadata    map[string]interface{} `json:"metadata"`    // 附加元数据
	ConfigPath  string                 `json:"config_path"` // 配置文件路径
	Duration    time.Duration          `json:"duration"`    // 事件处理耗时
}

CallbackEvent 回调事件结构

func CreateErrorEvent

func CreateErrorEvent(source string, err error) CallbackEvent

CreateErrorEvent 创建错误事件的辅助函数

func CreateEvent

func CreateEvent(eventType CallbackType, source string, oldValue, newValue interface{}) CallbackEvent

CreateEvent 创建回调事件的辅助函数

func (*CallbackEvent) GetMetadata

func (e *CallbackEvent) GetMetadata(key string) (interface{}, bool)

GetMetadata 获取事件元数据

func (*CallbackEvent) WithMetadata

func (e *CallbackEvent) WithMetadata(key string, value interface{}) *CallbackEvent

WithMetadata 为事件添加元数据

type CallbackFunc

type CallbackFunc func(ctx context.Context, event CallbackEvent) error

CallbackFunc 回调函数类型

type CallbackManager

type CallbackManager interface {
	// RegisterCallback 注册回调函数
	RegisterCallback(callback CallbackFunc, options CallbackOptions) error

	// UnregisterCallback 注销回调函数
	UnregisterCallback(id string) error

	// TriggerCallbacks 触发回调函数
	TriggerCallbacks(ctx context.Context, event CallbackEvent) error

	// ListCallbacks 列出所有已注册的回调
	ListCallbacks() []string

	// ClearCallbacks 清空所有回调
	ClearCallbacks()

	// HasCallback 检查是否存在指定ID的回调
	HasCallback(id string) bool
}

CallbackManager 回调管理器接口 提供统一的回调注册、注销和执行机制

func NewCallbackManager

func NewCallbackManager() CallbackManager

NewCallbackManager 创建新的回调管理器

type CallbackOptions

type CallbackOptions struct {
	ID       string                   // 回调的唯一标识符
	Types    []CallbackType           // 监听的事件类型
	Priority int                      // 优先级(越小越优先)
	Async    bool                     // 是否异步执行
	Timeout  time.Duration            // 超时时间
	Retry    int                      // 重试次数
	Filter   func(CallbackEvent) bool // 事件过滤器
}

CallbackOptions 回调选项配置

func DefaultCallbackOptions

func DefaultCallbackOptions() CallbackOptions

DefaultCallbackOptions 默认回调选项

type CallbackType

type CallbackType string

CallbackType 回调类型枚举

const (
	CallbackTypeConfigChanged CallbackType = "config_changed" // 配置变更
	CallbackTypeReloaded      CallbackType = "reloaded"       // 重新加载完成
	CallbackTypeError         CallbackType = "error"          // 错误事件
	CallbackTypeStarted       CallbackType = "started"        // 启动事件
	CallbackTypeStopped       CallbackType = "stopped"        // 停止事件
	CallbackTypeEnvironment   CallbackType = "environment"    // 环境变更
	CallbackTypeValidation    CallbackType = "validation"     // 配置验证
	CallbackTypeFileChanged   CallbackType = "file_changed"   // 文件变更
	CallbackTypeEnvVarChanged CallbackType = "envvar_changed" // 环境变量变更
)

type CommonCallbackManager

type CommonCallbackManager struct {
	// contains filtered or unexported fields
}

CommonCallbackManager 通用回调管理器实现

func (*CommonCallbackManager) ClearCallbacks

func (cm *CommonCallbackManager) ClearCallbacks()

ClearCallbacks 清空所有回调

func (*CommonCallbackManager) GetCallbackCount

func (cm *CommonCallbackManager) GetCallbackCount() int

GetCallbackCount 获取回调总数

func (*CommonCallbackManager) GetCallbackInfo

func (cm *CommonCallbackManager) GetCallbackInfo(id string) (CallbackOptions, bool)

GetCallbackInfo 获取回调信息(用于调试)

func (*CommonCallbackManager) HasCallback

func (cm *CommonCallbackManager) HasCallback(id string) bool

HasCallback 检查是否存在指定ID的回调

func (*CommonCallbackManager) ListCallbacks

func (cm *CommonCallbackManager) ListCallbacks() []string

ListCallbacks 列出所有已注册的回调

func (*CommonCallbackManager) RegisterCallback

func (cm *CommonCallbackManager) RegisterCallback(callback CallbackFunc, options CallbackOptions) error

RegisterCallback 注册回调函数

func (*CommonCallbackManager) TriggerCallbacks

func (cm *CommonCallbackManager) TriggerCallbacks(ctx context.Context, event CallbackEvent) error

TriggerCallbacks 触发回调函数

func (*CommonCallbackManager) UnregisterCallback

func (cm *CommonCallbackManager) UnregisterCallback(id string) error

UnregisterCallback 注销回调函数

type ConfigBuilder

type ConfigBuilder[T any] interface {
	// WithConfigPath 设置配置文件路径
	WithConfigPath(path string) ConfigBuilder[T]

	// WithSearchPath 设置配置文件搜索路径
	WithSearchPath(path string) ConfigBuilder[T]

	// WithEnvironment 设置运行环境
	WithEnvironment(env EnvironmentType) ConfigBuilder[T]

	// WithPrefix 设置配置文件名前缀
	WithPrefix(prefix string) ConfigBuilder[T]

	// WithPattern 设置文件匹配模式
	WithPattern(pattern string) ConfigBuilder[T]

	// WithHotReload 启用配置热重载功能
	WithHotReload(config *HotReloadConfig) ConfigBuilder[T]

	// WithContext 设置上下文配置选项
	WithContext(options *ContextKeyOptions) ConfigBuilder[T]

	// Build 构建配置管理器
	Build() (*IntegratedConfigManager, error)

	// BuildAndStart 构建并启动配置管理器
	BuildAndStart(ctx ...context.Context) (*IntegratedConfigManager, error)

	// MustBuildAndStart 构建并启动配置管理器(失败时panic)
	MustBuildAndStart(ctx ...context.Context) *IntegratedConfigManager
}

ConfigBuilder 配置构建器接口

func NewConfigBuilder

func NewConfigBuilder[T any](config *T) ConfigBuilder[T]

NewConfigBuilder 创建新的配置构建器

func NewManager

func NewManager[T any](config *T) ConfigBuilder[T]

NewManager 创建新的配置管理器构建器(简化API)

type ConfigBuilderOptions

type ConfigBuilderOptions struct {
	ConfigPath      string             `json:"config_path"`       // 配置文件路径
	SearchPath      string             `json:"search_path"`       // 搜索路径
	Environment     EnvironmentType    `json:"environment"`       // 环境类型
	ConfigPrefix    string             `json:"config_prefix"`     // 配置前缀
	Pattern         string             `json:"pattern"`           // 匹配模式
	HotReloadConfig *HotReloadConfig   `json:"hot_reload_config"` // 热重载配置
	ContextOptions  *ContextKeyOptions `json:"context_options"`   // 上下文选项
}

ConfigBuilderOptions 配置构建器选项

type ConfigContext

type ConfigContext struct {
	Environment EnvironmentType `json:"environment"` // 当前环境
	Config      any             `json:"config"`      // 配置对象
	Metadata    map[string]any  `json:"metadata"`    // 元数据
	CreatedAt   time.Time       `json:"created_at"`  // 创建时间
	UpdatedAt   time.Time       `json:"updated_at"`  // 更新时间
}

ConfigContext 配置上下文

type ConfigDiscovery

type ConfigDiscovery struct {
	// 支持的配置文件扩展名,按优先级排序
	SupportedExtensions []string
	// 默认配置文件名(不含扩展名)
	DefaultNames []string
	// 环境特定的配置文件前缀
	EnvPrefixes map[EnvironmentType][]string
}

ConfigDiscovery 配置文件发现器

func GetGlobalConfigDiscovery

func GetGlobalConfigDiscovery() *ConfigDiscovery

GetGlobalConfigDiscovery 获取全局配置发现器

func NewConfigDiscovery

func NewConfigDiscovery() *ConfigDiscovery

NewConfigDiscovery 创建配置文件发现器

func (*ConfigDiscovery) DiscoverConfigFiles

func (cd *ConfigDiscovery) DiscoverConfigFiles(searchPath string, env EnvironmentType) ([]*ConfigFileInfo, error)

DiscoverConfigFiles 在指定目录中发现配置文件

func (*ConfigDiscovery) FindBestConfigFile

func (cd *ConfigDiscovery) FindBestConfigFile(searchPath string, env EnvironmentType) (*ConfigFileInfo, error)

FindBestConfigFile 找到最合适的配置文件

func (*ConfigDiscovery) FindConfigFileByPattern

func (cd *ConfigDiscovery) FindConfigFileByPattern(searchPath, pattern string, env EnvironmentType) ([]*ConfigFileInfo, error)

FindConfigFileByPattern 根据模式查找配置文件

func (*ConfigDiscovery) ScanDirectory

func (cd *ConfigDiscovery) ScanDirectory(searchPath string) ([]*ConfigFileInfo, error)

ScanDirectory 扫描目录中的所有配置文件

type ConfigFileInfo

type ConfigFileInfo struct {
	Path        string          `json:"path"`        // 文件完整路径
	Name        string          `json:"name"`        // 文件名(含扩展名)
	BaseName    string          `json:"base_name"`   // 文件名(不含扩展名)
	Extension   string          `json:"extension"`   // 文件扩展名
	Environment EnvironmentType `json:"environment"` // 环境类型
	Priority    int             `json:"priority"`    // 优先级(数字越小优先级越高)
	Exists      bool            `json:"exists"`      // 文件是否存在
}

ConfigFileInfo 配置文件信息

func DiscoverConfig

func DiscoverConfig(searchPath string, env EnvironmentType) ([]*ConfigFileInfo, error)

DiscoverConfig 发现配置文件(便利函数)

func FindBestConfig

func FindBestConfig(searchPath string, env EnvironmentType) (*ConfigFileInfo, error)

FindBestConfig 找到最佳配置文件(便利函数)

func ScanAndDisplayConfigs

func ScanAndDisplayConfigs(searchPath string, env EnvironmentType) ([]*ConfigFileInfo, error)

ScanAndDisplayConfigs 扫描并显示可用的配置文件

type ConfigFormatter

type ConfigFormatter struct {
	// contains filtered or unexported fields
}

ConfigFormatter 配置格式化器

func NewConfigFormatter

func NewConfigFormatter(lg ...*logger.Logger) *ConfigFormatter

NewConfigFormatter 创建配置格式化器

func (*ConfigFormatter) LogConfigChanged

func (cf *ConfigFormatter) LogConfigChanged(event CallbackEvent, newConfig any)

LogConfigChanged 记录配置变更 - 主要入口函数

type ContextKey

type ContextKey string

定义上下文键类型

const (
	ContextKeyEnvironment ContextKey = "go_config_environment"
	ContextKeyConfig      ContextKey = "go_config_configuration"
	ContextKeyHotReloader ContextKey = "go_config_hot_reloader"
	ContextKeyMetadata    ContextKey = "go_config_metadata"
)

上下文键定义

func GetContextKey

func GetContextKey() ContextKey

GetContextKey 获取当前的上下文键

func (ContextKey) String

func (c ContextKey) String() string

String 返回上下文键的字符串表示

type ContextKeyHelper

type ContextKeyHelper struct{}

ContextKeyHelper 上下文键辅助工具

func (ContextKeyHelper) IsEnvironment

func (ContextKeyHelper) IsEnvironment(ctx context.Context, env EnvironmentType) bool

IsEnvironment 检查上下文中的环境是否匹配

func (ContextKeyHelper) MustGetConfig

func (ContextKeyHelper) MustGetConfig(ctx context.Context) any

MustGetConfig 从上下文中获取配置,如果不存在则panic

func (ContextKeyHelper) MustGetEnvironment

func (ContextKeyHelper) MustGetEnvironment(ctx context.Context) EnvironmentType

MustGetEnvironment 从上下文中获取环境,如果不存在则panic

func (ContextKeyHelper) NewConfigContext

func (ContextKeyHelper) NewConfigContext() context.Context

NewConfigContext 创建新的配置上下文

func (ContextKeyHelper) NewContextWithDeadline

func (ContextKeyHelper) NewContextWithDeadline(deadline time.Time) (context.Context, context.CancelFunc)

NewContextWithDeadline 创建带截止时间的配置上下文

func (ContextKeyHelper) NewContextWithTimeout

func (ContextKeyHelper) NewContextWithTimeout(timeout time.Duration) (context.Context, context.CancelFunc)

NewContextWithTimeout 创建带超时的配置上下文

type ContextKeyOptions

type ContextKeyOptions struct {
	Key   ContextKey
	Value EnvironmentType
}

ContextKeyOptions 定义上下文键的选项

type ContextManager

type ContextManager struct {
	// contains filtered or unexported fields
}

ContextManager 上下文管理器

func GetGlobalContextManager

func GetGlobalContextManager() *ContextManager

GetGlobalContextManager 获取全局上下文管理器

func InitializeContextManager

func InitializeContextManager(env *Environment, reloader HotReloader) *ContextManager

InitializeContextManager 初始化全局上下文管理器

func NewContextManager

func NewContextManager(env *Environment, reloader HotReloader) *ContextManager

NewContextManager 创建新的上下文管理器

func (*ContextManager) GetConfigContext

func (cm *ContextManager) GetConfigContext() *ConfigContext

GetConfigContext 获取完整的配置上下文

func (*ContextManager) GetCurrentConfig

func (cm *ContextManager) GetCurrentConfig() any

GetCurrentConfig 获取当前配置

func (*ContextManager) GetCurrentEnvironment

func (cm *ContextManager) GetCurrentEnvironment() EnvironmentType

GetCurrentEnvironment 获取当前环境

func (*ContextManager) GetMetadata

func (cm *ContextManager) GetMetadata(key string) (any, bool)

GetMetadata 获取元数据

func (*ContextManager) SetMetadata

func (cm *ContextManager) SetMetadata(key string, value any)

SetMetadata 设置元数据

func (*ContextManager) UpdateConfig

func (cm *ContextManager) UpdateConfig(config any)

UpdateConfig 更新配置

func (*ContextManager) WithConfig

func (cm *ContextManager) WithConfig(ctx context.Context) context.Context

WithConfig 将配置信息添加到上下文中

type Environment

type Environment struct {
	CheckFrequency time.Duration // 检查频率

	Value EnvironmentType // 当前环境值
	// contains filtered or unexported fields
}

环境配置

func Default

func Default() *Environment

Default 返回默认的 Environment 指针,支持链式调用

func DefaultEnvironment

func DefaultEnvironment() Environment

DefaultEnvironment 返回默认的 Environment 值

func GetGlobalEnvironment

func GetGlobalEnvironment() *Environment

GetGlobalEnvironment 获取全局环境实例,如果未初始化则自动初始化

func NewEnvironment

func NewEnvironment() *Environment

NewEnvironment 创建一个新的 Environment 实例,并将环境变量写入上下文

func (*Environment) CheckAndUpdateEnv

func (e *Environment) CheckAndUpdateEnv()

CheckAndUpdateEnv 检查并更新环境变量

func (*Environment) ClearCallbacks

func (e *Environment) ClearCallbacks()

ClearCallbacks 清除所有环境变更回调

func (*Environment) ClearEnv

func (e *Environment) ClearEnv()

ClearEnv 清除环境变量并等待锁 上下文键在取 e.mu 之前先读出来:与 SetEnvironment 同一个理由, contextKeyMutex 嵌在 e.mu 里会造成锁顺序倒置

[EN] The context key is read before acquiring e.mu, for the same reason as in SetEnvironment: nesting contextKeyMutex inside e.mu inverts the lock order

func (*Environment) ListCallbacks

func (e *Environment) ListCallbacks() []string

ListCallbacks 列出所有环境变更回调

func (*Environment) RegisterCallback

func (e *Environment) RegisterCallback(id string, callback EnvironmentCallback, priority int, async bool) error

RegisterCallback 注册环境变更回调

func (*Environment) RegisterEnvironment

func (e *Environment) RegisterEnvironment(env EnvironmentType) error

RegisterEnvironment 注册新的环境类型

func (*Environment) SetCheckFrequency

func (e *Environment) SetCheckFrequency(frequency time.Duration) *Environment

SetCheckFrequency 设置检查频率并支持链式调用

func (*Environment) SetEnvironment

func (e *Environment) SetEnvironment(value EnvironmentType) *Environment

SetEnvironment 设置环境变量

func (*Environment) StopWatch

func (e *Environment) StopWatch()

StopWatch 停止监控环境变量

func (*Environment) UnregisterCallback

func (e *Environment) UnregisterCallback(id string) error

UnregisterCallback 注销环境变更回调

type EnvironmentCallback

type EnvironmentCallback func(oldEnv, newEnv EnvironmentType) error

EnvironmentCallback 环境变更回调函数类型

type EnvironmentCallbackInfo

type EnvironmentCallbackInfo struct {
	ID       string              // 回调唯一标识
	Callback EnvironmentCallback // 回调函数
	Priority int                 // 优先级(数字越小优先级越高)
	Async    bool                // 是否异步执行
}

EnvironmentCallbackInfo 环境回调信息

type EnvironmentInterface

type EnvironmentInterface interface {
	SetEnvironment(value EnvironmentType) *Environment
	CheckAndUpdateEnv()
	SetCheckFrequency(frequency time.Duration) *Environment
	StopWatch()
	ClearEnv()
	RegisterCallback(id string, callback EnvironmentCallback, priority int, async bool) error
	UnregisterCallback(id string) error
	ListCallbacks() []string
	ClearCallbacks()
}

定义一个内部接口,隐藏实现细节

type EnvironmentManager

type EnvironmentManager struct {
	// contains filtered or unexported fields
}

EnvironmentManager 环境管理器

func GetGlobalEnvManager

func GetGlobalEnvManager() *EnvironmentManager

GetGlobalEnvManager 获取全局环境管理器 可用于注册自定义环境类型及其别名

func NewEnvironmentManager

func NewEnvironmentManager() *EnvironmentManager

NewEnvironmentManager 创建新的环境管理器

func (*EnvironmentManager) DetectEnvironmentType

func (em *EnvironmentManager) DetectEnvironmentType(envString string) (EnvironmentType, bool)

DetectEnvironmentType 检测环境字符串对应的环境类型

func (*EnvironmentManager) IsEnvironment

func (em *EnvironmentManager) IsEnvironment(envString string, envType EnvironmentType) bool

IsEnvironment 检查给定的环境字符串是否属于指定的环境类型

func (*EnvironmentManager) IsRegistered

func (em *EnvironmentManager) IsRegistered(envType EnvironmentType) bool

IsRegistered 检查环境类型是否已注册

func (*EnvironmentManager) RegisterEnvironment

func (em *EnvironmentManager) RegisterEnvironment(envType EnvironmentType, aliases ...string)

RegisterEnvironment 注册环境类型及其别名 同时会更新 DefaultEnvPrefixes,保持环境别名和配置文件前缀的一致性

type EnvironmentType

type EnvironmentType string

EnvironmentType 定义环境类型

const (
	// 标准环境
	EnvDevelopment EnvironmentType = "development" // 开发环境
	EnvTest        EnvironmentType = "test"        // 测试环境
	EnvStaging     EnvironmentType = "staging"     // 预发布环境
	EnvUAT         EnvironmentType = "uat"         // 用户验收测试环境
	EnvProduction  EnvironmentType = "production"  // 生产环境
	EnvLocal       EnvironmentType = "local"       // 本地环境
	EnvDebug       EnvironmentType = "debug"       // 调试环境
	EnvDemo        EnvironmentType = "demo"        // 演示环境
	EnvIntegration EnvironmentType = "integration" // 集成环境

	// 亚洲国家/地区
	EnvChina       EnvironmentType = "china"       // 中国
	EnvJapan       EnvironmentType = "japan"       // 日本
	EnvKorea       EnvironmentType = "korea"       // 韩国
	EnvIndia       EnvironmentType = "india"       // 印度
	EnvSingapore   EnvironmentType = "singapore"   // 新加坡
	EnvThailand    EnvironmentType = "thailand"    // 泰国
	EnvVietnam     EnvironmentType = "vietnam"     // 越南
	EnvMalaysia    EnvironmentType = "malaysia"    // 马来西亚
	EnvIndonesia   EnvironmentType = "indonesia"   // 印度尼西亚
	EnvPhilippines EnvironmentType = "philippines" // 菲律宾
	EnvMyanmar     EnvironmentType = "myanmar"     // 缅甸
	EnvLaos        EnvironmentType = "laos"        // 老挝
	EnvCambodia    EnvironmentType = "cambodia"    // 柬埔寨
	EnvPakistan    EnvironmentType = "pakistan"    // 巴基斯坦
	EnvBangladesh  EnvironmentType = "bangladesh"  // 孟加拉国
	EnvSriLanka    EnvironmentType = "srilanka"    // 斯里兰卡
	EnvNepal       EnvironmentType = "nepal"       // 尼泊尔
	EnvHongKong    EnvironmentType = "hongkong"    // 香港
	EnvTaiwan      EnvironmentType = "taiwan"      // 台湾
	EnvMacao       EnvironmentType = "macao"       // 澳门

	// 欧洲国家
	EnvUK          EnvironmentType = "uk"          // 英国
	EnvGermany     EnvironmentType = "germany"     // 德国
	EnvFrance      EnvironmentType = "france"      // 法国
	EnvItaly       EnvironmentType = "italy"       // 意大利
	EnvSpain       EnvironmentType = "spain"       // 西班牙
	EnvNetherlands EnvironmentType = "netherlands" // 荷兰
	EnvBelgium     EnvironmentType = "belgium"     // 比利时
	EnvSwitzerland EnvironmentType = "switzerland" // 瑞士
	EnvAustria     EnvironmentType = "austria"     // 奥地利
	EnvSweden      EnvironmentType = "sweden"      // 瑞典
	EnvNorway      EnvironmentType = "norway"      // 挪威
	EnvDenmark     EnvironmentType = "denmark"     // 丹麦
	EnvFinland     EnvironmentType = "finland"     // 芬兰
	EnvPoland      EnvironmentType = "poland"      // 波兰
	EnvRussia      EnvironmentType = "russia"      // 俄罗斯
	EnvTurkey      EnvironmentType = "turkey"      // 土耳其

	// 北美洲国家
	EnvUSA    EnvironmentType = "usa"    // 美国
	EnvCanada EnvironmentType = "canada" // 加拿大
	EnvMexico EnvironmentType = "mexico" // 墨西哥

	// 南美洲国家
	EnvBrazil    EnvironmentType = "brazil"    // 巴西
	EnvArgentina EnvironmentType = "argentina" // 阿根廷
	EnvChile     EnvironmentType = "chile"     // 智利
	EnvColombia  EnvironmentType = "colombia"  // 哥伦比亚
	EnvPeru      EnvironmentType = "peru"      // 秘鲁

	// 大洋洲国家
	EnvAustralia  EnvironmentType = "australia"  // 澳大利亚
	EnvNewZealand EnvironmentType = "newzealand" // 新西兰

	// 非洲国家
	EnvSouthAfrica EnvironmentType = "southafrica" // 南非
	EnvEgypt       EnvironmentType = "egypt"       // 埃及
	EnvNigeria     EnvironmentType = "nigeria"     // 尼日利亚
	EnvKenya       EnvironmentType = "kenya"       // 肯尼亚

	// 中东国家
	EnvUAE         EnvironmentType = "uae"         // 阿联酋
	EnvSaudiArabia EnvironmentType = "saudiarabia" // 沙特阿拉伯
	EnvIsrael      EnvironmentType = "israel"      // 以色列
	EnvQatar       EnvironmentType = "qatar"       // 卡塔尔

	// 向后兼容的别名
	Dev  = EnvDevelopment
	Sit  = EnvTest
	Fat  = EnvStaging
	Uat  = EnvUAT
	Prod = EnvProduction

	DefaultEnv EnvironmentType = EnvDevelopment
)

定义有效的环境常量

func GetCurrentEnvironment

func GetCurrentEnvironment() EnvironmentType

GetCurrentEnvironment 获取当前环境类型(便捷函数)

func GetEnvironment

func GetEnvironment() EnvironmentType

GetEnvironment 从上下文中获取环境变量并解析为正确的环境类型 上下文键经 GetContextKey 一次性取出再复用,不直接读 envContextKey: SetContextKey 是加锁写的,这里裸读会与它构成数据竞争 hotReloadManager 的事件循环在后台 goroutine 里调本函数,调用方只要在运行期 调过一次 SetContextKey 就会触发,-race 下已实测到

[EN] The context key is read once through GetContextKey rather than touching envContextKey directly: SetContextKey writes it under a mutex, so an unguarded read here races with it hotReloadManager's event loop calls this from a background goroutine, so any runtime call to SetContextKey trips it, as observed under -race

func GetEnvironmentFromContext

func GetEnvironmentFromContext(ctx context.Context) (EnvironmentType, bool)

GetEnvironmentFromContext 从上下文中获取环境信息

func (EnvironmentType) IsValid

func (e EnvironmentType) IsValid() bool

IsValid 检查环境类型是否有效

func (EnvironmentType) String

func (e EnvironmentType) String() string

String 返回环境类型的字符串表示

type HotReloadConfig

type HotReloadConfig struct {
	Enabled         bool          `yaml:"enabled" json:"enabled"`                   // 是否启用热更新
	WatchInterval   time.Duration `yaml:"watch_interval" json:"watch_interval"`     // 监控间隔
	DebounceDelay   time.Duration `yaml:"debounce_delay" json:"debounce_delay"`     // 防抖延迟
	MaxRetries      int           `yaml:"max_retries" json:"max_retries"`           // 最大重试次数
	CallbackTimeout time.Duration `yaml:"callback_timeout" json:"callback_timeout"` // 回调超时
	EnableEnvWatch  bool          `yaml:"enable_env_watch" json:"enable_env_watch"` // 是否监控环境变量
}

HotReloadConfig 热更新配置

func DefaultHotReloadConfig

func DefaultHotReloadConfig() *HotReloadConfig

DefaultHotReloadConfig 默认热更新配置

type HotReloader

type HotReloader interface {
	CallbackManager
	// Start 启动热更新监控
	Start(ctx context.Context) error
	// Stop 停止热更新监控
	Stop() error
	// Reload 手动重新加载配置
	Reload(ctx context.Context) error
	// IsRunning 检查是否正在运行
	IsRunning() bool
	// GetConfig 获取当前配置
	GetConfig() any
	// SetConfig 设置配置
	SetConfig(config any) error
}

HotReloader 热更新器接口

func GetHotReloaderFromContext

func GetHotReloaderFromContext(ctx context.Context) (HotReloader, bool)

GetHotReloaderFromContext 从上下文中获取热更新器

func NewHotReloader

func NewHotReloader(config interface{}, viper *viper.Viper, configPath string, options *HotReloadConfig) (HotReloader, error)

NewHotReloader 创建新的热更新器

type IntegratedConfigManager

type IntegratedConfigManager struct {
	// contains filtered or unexported fields
}

IntegratedConfigManager 集成配置管理器 统一管理配置文件、环境变量、热重载和上下文的核心组件

func CreateIntegratedManager

func CreateIntegratedManager(config interface{}, configPath string, env EnvironmentType) (*IntegratedConfigManager, error)

CreateIntegratedManager 创建集成配置管理器的便捷函数

func NewIntegratedConfigManager

func NewIntegratedConfigManager(config interface{}, options *IntegratedConfigOptions) (*IntegratedConfigManager, error)

NewIntegratedConfigManager 创建集成配置管理器

func QuickBuild

func QuickBuild[T any](config *T, configPath string, env EnvironmentType) (*IntegratedConfigManager, error)

QuickBuild 快速构建配置管理器的便捷函数

func QuickStart

func QuickStart[T any](config *T, configPath string, env EnvironmentType) (*IntegratedConfigManager, error)

QuickStart 快速启动配置管理器的便捷函数

func (*IntegratedConfigManager) GetConfig

func (icm *IntegratedConfigManager) GetConfig() interface{}

GetConfig 获取当前配置

func (*IntegratedConfigManager) GetConfigMetadata

func (icm *IntegratedConfigManager) GetConfigMetadata() map[string]interface{}

GetConfigMetadata 获取配置元数据

func (*IntegratedConfigManager) GetConfigPath

func (icm *IntegratedConfigManager) GetConfigPath() string

GetConfigPath 获取配置文件路径

func (*IntegratedConfigManager) GetContextManager

func (icm *IntegratedConfigManager) GetContextManager() *ContextManager

GetContextManager 获取上下文管理器

func (*IntegratedConfigManager) GetEnvironment

func (icm *IntegratedConfigManager) GetEnvironment() EnvironmentType

GetEnvironment 获取当前环境

func (*IntegratedConfigManager) GetEnvironmentManager

func (icm *IntegratedConfigManager) GetEnvironmentManager() *Environment

GetEnvironmentManager 获取环境管理器

func (*IntegratedConfigManager) GetHotReloader

func (icm *IntegratedConfigManager) GetHotReloader() HotReloader

GetHotReloader 获取热重载器

func (*IntegratedConfigManager) GetViper

func (icm *IntegratedConfigManager) GetViper() *viper.Viper

GetViper 获取Viper实例

func (*IntegratedConfigManager) IsRunning

func (icm *IntegratedConfigManager) IsRunning() bool

IsRunning 检查管理器是否正在运行

func (*IntegratedConfigManager) MustStart

func (icm *IntegratedConfigManager) MustStart(ctx context.Context)

MustStart 必须成功启动配置管理器

func (*IntegratedConfigManager) RegisterConfigCallback

func (icm *IntegratedConfigManager) RegisterConfigCallback(callback CallbackFunc, options CallbackOptions) error

RegisterConfigCallback 注册配置变更回调

func (*IntegratedConfigManager) RegisterEnvironmentCallback

func (icm *IntegratedConfigManager) RegisterEnvironmentCallback(id string, callback EnvironmentCallback, priority int, async bool) error

RegisterEnvironmentCallback 注册环境变更回调

func (*IntegratedConfigManager) SetEnvironment

func (icm *IntegratedConfigManager) SetEnvironment(env EnvironmentType) error

SetEnvironment 设置应用环境

func (*IntegratedConfigManager) Start

func (icm *IntegratedConfigManager) Start(ctx context.Context) error

Start 启动配置管理器

func (*IntegratedConfigManager) Stop

func (icm *IntegratedConfigManager) Stop() error

Stop 停止配置管理器

func (*IntegratedConfigManager) UnregisterConfigCallback

func (icm *IntegratedConfigManager) UnregisterConfigCallback(id string) error

UnregisterConfigCallback 取消配置变更回调

func (*IntegratedConfigManager) UnregisterEnvironmentCallback

func (icm *IntegratedConfigManager) UnregisterEnvironmentCallback(id string) error

UnregisterEnvironmentCallback 取消环境变更回调

func (*IntegratedConfigManager) ValidateConfig

func (icm *IntegratedConfigManager) ValidateConfig() error

ValidateConfig 验证配置有效性

func (*IntegratedConfigManager) WithContext

func (icm *IntegratedConfigManager) WithContext(ctx context.Context) context.Context

WithContext 将配置信息注入到上下文中

type IntegratedConfigOptions

type IntegratedConfigOptions struct {
	ConfigPath      string             // 配置文件路径
	Environment     EnvironmentType    // 初始环境
	HotReloadConfig *HotReloadConfig   // 热更新配置
	ContextOptions  *ContextKeyOptions // 上下文选项
}

IntegratedConfigOptions 集成配置管理器选项

func DefaultIntegratedConfigOptions

func DefaultIntegratedConfigOptions() *IntegratedConfigOptions

DefaultIntegratedConfigOptions 默认集成配置管理器选项

type ManagerBuilder

type ManagerBuilder[T any] struct {
	// contains filtered or unexported fields
}

ManagerBuilder 配置管理器构建器实现

func (*ManagerBuilder[T]) Build

func (b *ManagerBuilder[T]) Build() (*IntegratedConfigManager, error)

Build 构建配置管理器

func (*ManagerBuilder[T]) BuildAndStart

func (b *ManagerBuilder[T]) BuildAndStart(ctx ...context.Context) (*IntegratedConfigManager, error)

BuildAndStart 构建并启动配置管理器

func (*ManagerBuilder[T]) MustBuildAndStart

func (b *ManagerBuilder[T]) MustBuildAndStart(ctx ...context.Context) *IntegratedConfigManager

MustBuildAndStart 构建并启动配置管理器

func (*ManagerBuilder[T]) WithConfigPath

func (b *ManagerBuilder[T]) WithConfigPath(path string) ConfigBuilder[T]

WithConfigPath 设置配置文件路径

func (*ManagerBuilder[T]) WithContext

func (b *ManagerBuilder[T]) WithContext(options *ContextKeyOptions) ConfigBuilder[T]

WithContext 设置上下文配置选项

func (*ManagerBuilder[T]) WithEnvironment

func (b *ManagerBuilder[T]) WithEnvironment(env EnvironmentType) ConfigBuilder[T]

WithEnvironment 设置运行环境

func (*ManagerBuilder[T]) WithHotReload

func (b *ManagerBuilder[T]) WithHotReload(config *HotReloadConfig) ConfigBuilder[T]

WithHotReload 启用配置热重载功能

func (*ManagerBuilder[T]) WithPattern

func (b *ManagerBuilder[T]) WithPattern(pattern string) ConfigBuilder[T]

WithPattern 设置文件匹配模式

func (*ManagerBuilder[T]) WithPrefix

func (b *ManagerBuilder[T]) WithPrefix(prefix string) ConfigBuilder[T]

WithPrefix 设置配置文件名前缀

func (*ManagerBuilder[T]) WithSearchPath

func (b *ManagerBuilder[T]) WithSearchPath(path string) ConfigBuilder[T]

WithSearchPath 设置配置文件搜索路径

type ModuleConfig

type ModuleConfig struct {
	Name          string             // 模块名称
	PackageName   string             // 包名
	DefaultFunc   func() interface{} // 默认配置函数
	OutputSubDir  string             // 输出子目录
	SourceFile    string             // 源文件路径
	StructName    string             // 结构体名称
	Description   string             // 模块描述
	Enabled       bool               // 是否启用此模块生成
	LastGenerated time.Time          // 最后生成时间
}

ModuleConfig 模块配置信息

type SmartConfigGenerator

type SmartConfigGenerator struct {
	BaseOutputDir     string                  // 基础输出目录
	Logger            *gologger.Logger        // 日志记录器
	ModuleRegistry    map[string]ModuleConfig // 模块注册表
	ForceRegenerate   bool                    // 是否强制重新生成
	IncludeComments   bool                    // 是否包含注释
	GenerateJSON      bool                    // 是否生成JSON
	GenerateYAML      bool                    // 是否生成YAML
	BackupExisting    bool                    // 是否备份现有文件
	OverwriteExisting bool                    // 是否覆盖现有文件
	// contains filtered or unexported fields
}

SmartConfigGenerator 智能配置生成器

func NewSmartConfigGenerator

func NewSmartConfigGenerator(baseOutputDir string) *SmartConfigGenerator

NewSmartConfigGenerator 创建新的智能配置生成器

func (*SmartConfigGenerator) CleanupBackupFiles

func (sg *SmartConfigGenerator) CleanupBackupFiles(maxAge time.Duration) error

CleanupBackupFiles 清理备份文件

func (*SmartConfigGenerator) DisableModule

func (sg *SmartConfigGenerator) DisableModule(moduleName string) error

DisableModule 禁用指定模块

func (*SmartConfigGenerator) EnableModule

func (sg *SmartConfigGenerator) EnableModule(moduleName string) error

EnableModule 启用指定模块

func (*SmartConfigGenerator) EnableOnlyModules

func (sg *SmartConfigGenerator) EnableOnlyModules(moduleNames ...string) error

EnableOnlyModules 只启用指定的模块,其他模块全部禁用

func (*SmartConfigGenerator) GenerateAllConfigs

func (sg *SmartConfigGenerator) GenerateAllConfigs() error

GenerateAllConfigs 生成所有模块的配置文件

func (*SmartConfigGenerator) GenerateModuleConfig

func (sg *SmartConfigGenerator) GenerateModuleConfig(module ModuleConfig) error

GenerateModuleConfig 生成单个模块的配置文件

func (*SmartConfigGenerator) GenerateModulesByNames

func (sg *SmartConfigGenerator) GenerateModulesByNames(moduleNames ...string) error

GenerateModulesByNames 根据模块名称生成指定模块的配置文件

func (*SmartConfigGenerator) GetEnabledModules

func (sg *SmartConfigGenerator) GetEnabledModules() []string

GetEnabledModules 获取已启用的模块列表

func (*SmartConfigGenerator) GetModuleInfo

func (sg *SmartConfigGenerator) GetModuleInfo(moduleName string) (*ModuleConfig, error)

GetModuleInfo 获取模块详细信息

func (*SmartConfigGenerator) GetModuleList

func (sg *SmartConfigGenerator) GetModuleList() []string

GetModuleList 获取所有注册的模块列表

func (*SmartConfigGenerator) PrintModuleStatus

func (sg *SmartConfigGenerator) PrintModuleStatus()

PrintModuleStatus 打印模块状态

func (*SmartConfigGenerator) UpdateModuleConfig

func (sg *SmartConfigGenerator) UpdateModuleConfig(moduleName string, updates map[string]interface{}) error

UpdateModuleConfig 更新模块配置

func (*SmartConfigGenerator) ValidateAllModules

func (sg *SmartConfigGenerator) ValidateAllModules() error

ValidateAllModules 验证所有模块配置

func (*SmartConfigGenerator) ValidateModuleConfig

func (sg *SmartConfigGenerator) ValidateModuleConfig(moduleName string) error

ValidateModuleConfig 验证模块配置

func (*SmartConfigGenerator) WithBackupExisting

func (sg *SmartConfigGenerator) WithBackupExisting(backup bool) *SmartConfigGenerator

WithBackupExisting 设置是否备份现有文件

func (*SmartConfigGenerator) WithForceRegenerate

func (sg *SmartConfigGenerator) WithForceRegenerate(force bool) *SmartConfigGenerator

WithForceRegenerate 设置是否强制重新生成

func (*SmartConfigGenerator) WithIncludeComments

func (sg *SmartConfigGenerator) WithIncludeComments(include bool) *SmartConfigGenerator

WithIncludeComments 设置是否包含注释

func (*SmartConfigGenerator) WithLogger

func (sg *SmartConfigGenerator) WithLogger(logger *gologger.Logger) *SmartConfigGenerator

WithLogger 设置日志记录器

Directories

Path Synopsis
examples
basic command
builder command
context command
discovery command
environment command
hot_reload command
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-07 23:55:15 * @FilePath: \go-config\internal\common.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-07 23:55:15 * @FilePath: \go-config\internal\common.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
pkg
common
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 15:05:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 15:05:00 * @FilePath: \go-config\pkg\common\attribute_source.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2025-11-12 15:05:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-12 15:05:00 * @FilePath: \go-config\pkg\common\attribute_source.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
database
* @Author: kamalyes 501893067@qq.com * @Date: 2024-11-03 20:55:05 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-04-28 11:16:58 * @FilePath: \go-config\pkg\database\cockroachdb.go * @Description: CockroachDB统一配置管理 * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2024-11-03 20:55:05 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-04-28 11:16:58 * @FilePath: \go-config\pkg\database\cockroachdb.go * @Description: CockroachDB统一配置管理 * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
elasticsearch
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-07 23:59:11 * @FilePath: \go-config\pkg\elasticsearch\elasticsearch.go * @Description: * * Copyright (j) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-07 23:59:11 * @FilePath: \go-config\pkg\elasticsearch\elasticsearch.go * @Description: * * Copyright (j) 2024 by kamalyes, All Rights Reserved.
jwt
kafka
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-15 13:26:00 * @FilePath: \go-config\pkg\kafka\kafka.go * @Description: * * Copyright (j) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-15 13:26:00 * @FilePath: \go-config\pkg\kafka\kafka.go * @Description: * * Copyright (j) 2024 by kamalyes, All Rights Reserved.
tsdb
* @Author: kamalyes 501893067@qq.com * @Date: 2026-04-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-04-23 19:58:55 * @FilePath: \go-config\pkg\tsdb\clickhouse.go * @Description: ClickHouse数据库配置 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2026-04-23 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-04-23 19:58:55 * @FilePath: \go-config\pkg\tsdb\clickhouse.go * @Description: ClickHouse数据库配置 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.
wsc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL