Compare commits
No commits in common. "main" and "v1.0.6" have entirely different histories.
7
.gitignore
vendored
7
.gitignore
vendored
@ -1,7 +0,0 @@
|
|||||||
.ai/
|
|
||||||
.geminiignore
|
|
||||||
.gemini
|
|
||||||
env.json
|
|
||||||
env.yml
|
|
||||||
env.yaml
|
|
||||||
/CODE-FULL.md
|
|
||||||
@ -1,13 +1,5 @@
|
|||||||
# 更新日志 (Changelog)
|
# 更新日志 (Changelog)
|
||||||
|
|
||||||
## [1.0.7] - 2026-05-09
|
|
||||||
- **修复**: 在 `resolveConfigPath` 中补充了对无后缀 `.yaml` 配置文件的支持。
|
|
||||||
- **变更**: 将 `apigo.cc/go/file` 的依赖升级至 `v1.0.7` 以对齐基础设施。
|
|
||||||
- **变更**: 补充针对无后缀 `.yaml` 文件的回归测试 `TestForYaml_Support`。
|
|
||||||
|
|
||||||
## [1.0.6] - 2026-05-06
|
|
||||||
- **变更**: 修复与基础设施的兼容性。
|
|
||||||
|
|
||||||
## [1.0.5] - 2026-05-05
|
## [1.0.5] - 2026-05-05
|
||||||
- **变更**: 基础设施对齐与生态系统同步发布。
|
- **变更**: 基础设施对齐与生态系统同步发布。
|
||||||
|
|
||||||
|
|||||||
5
TEST.md
5
TEST.md
@ -10,7 +10,6 @@
|
|||||||
- `TestForMap_Regression`: 验证基础的基于 Map 的配置加载。
|
- `TestForMap_Regression`: 验证基础的基于 Map 的配置加载。
|
||||||
- `TestForStruct_Regression`: 验证基于结构体的映射及环境变量覆盖。
|
- `TestForStruct_Regression`: 验证基于结构体的映射及环境变量覆盖。
|
||||||
- `TestForYml_Regression`: 检查 YAML 配置解析,包括接口切片和映射。
|
- `TestForYml_Regression`: 检查 YAML 配置解析,包括接口切片和映射。
|
||||||
- `TestForYaml_Support`: 验证针对无后缀 `.yaml` 文件的默认解析支持。
|
|
||||||
|
|
||||||
## 基准测试结果
|
## 基准测试结果
|
||||||
|
|
||||||
@ -18,8 +17,8 @@
|
|||||||
goos: darwin
|
goos: darwin
|
||||||
goarch: amd64
|
goarch: amd64
|
||||||
pkg: apigo.cc/go/config
|
pkg: apigo.cc/go/config
|
||||||
BenchmarkLoad-16 6255 164111 ns/op
|
BenchmarkLoad-16 9104 123326 ns/op 5136 B/op 104 allocs/op
|
||||||
BenchmarkApplyEnvOverrides-16 294292 3592 ns/op
|
BenchmarkApplyEnvOverrides-16 260586 4700 ns/op 2657 B/op 64 allocs/op
|
||||||
```
|
```
|
||||||
|
|
||||||
*注:基准测试反映了在 Intel i9-9980HK 上的性能表现。*
|
*注:基准测试反映了在 Intel i9-9980HK 上的性能表现。*
|
||||||
|
|||||||
@ -89,13 +89,10 @@ func resolveConfigPath(name string) string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, check for .yml, .yaml, then .json
|
// Otherwise, check for .yml then .json
|
||||||
if file.Exists(name + ".yml") {
|
if file.Exists(name + ".yml") {
|
||||||
return name + ".yml"
|
return name + ".yml"
|
||||||
}
|
}
|
||||||
if file.Exists(name + ".yaml") {
|
|
||||||
return name + ".yaml"
|
|
||||||
}
|
|
||||||
if file.Exists(name + ".json") {
|
if file.Exists(name + ".json") {
|
||||||
return name + ".json"
|
return name + ".json"
|
||||||
}
|
}
|
||||||
|
|||||||
24
go.mod
24
go.mod
@ -3,16 +3,26 @@ module apigo.cc/go/config
|
|||||||
go 1.25.0
|
go 1.25.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
apigo.cc/go/cast v1.3.3
|
apigo.cc/go/cast v1.2.7
|
||||||
apigo.cc/go/file v1.3.2
|
apigo.cc/go/file v1.0.6
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
apigo.cc/go/encoding v1.3.1 // indirect
|
apigo.cc/go/encoding v1.0.5 // indirect
|
||||||
apigo.cc/go/rand v1.3.1 // indirect
|
apigo.cc/go/rand v1.0.5 // indirect
|
||||||
apigo.cc/go/safe v1.3.1 // indirect
|
apigo.cc/go/safe v1.0.5 // indirect
|
||||||
github.com/kr/text v0.2.0 // indirect
|
github.com/kr/text v0.2.0 // indirect
|
||||||
golang.org/x/crypto v0.51.0 // indirect
|
golang.org/x/crypto v0.50.0 // indirect
|
||||||
golang.org/x/sys v0.44.0 // indirect
|
golang.org/x/sys v0.43.0 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
|
replace apigo.cc/go/cast => ../cast
|
||||||
|
|
||||||
|
replace apigo.cc/go/file => ../file
|
||||||
|
|
||||||
|
replace apigo.cc/go/encoding => ../encoding
|
||||||
|
|
||||||
|
replace apigo.cc/go/safe => ../safe
|
||||||
|
|
||||||
|
replace apigo.cc/go/rand => ../rand
|
||||||
|
|||||||
18
go.sum
18
go.sum
@ -1,13 +1,3 @@
|
|||||||
apigo.cc/go/cast v1.3.3 h1:aln5eDR5DZVWVzZ/y5SJh1gQNgWv2sT82I25NaO9g34=
|
|
||||||
apigo.cc/go/cast v1.3.3/go.mod h1:lGlwImiOvHxG7buyMWhFzcdvQzmSaoKbmr7bcDfUpHk=
|
|
||||||
apigo.cc/go/encoding v1.3.1 h1:y8O58KYAyulkThg1O2ji2BqjnFoSvk42sit9I3z+K7Y=
|
|
||||||
apigo.cc/go/encoding v1.3.1/go.mod h1:xAJk5b83VZ31mXMTnyp0dfMoBKfT/AHDn0u+cQfojgY=
|
|
||||||
apigo.cc/go/file v1.3.2 h1:pu4oiDyiqgj3/eykfnJf+/6+A9v/Z0b3ClP5XK+lwG4=
|
|
||||||
apigo.cc/go/file v1.3.2/go.mod h1:vci4h0Pz94mV6dkniQkuyBYERVYeq7/LX4jJVuCg9hs=
|
|
||||||
apigo.cc/go/rand v1.3.1 h1:7FvsI6PtQ5XrWER0dTiLVo0p7GIxRidT/TBKhVy93j8=
|
|
||||||
apigo.cc/go/rand v1.3.1/go.mod h1:mZ/4Soa3bk+XvDaqPWJuUe1bfEi4eThBj1XmEAuYxsk=
|
|
||||||
apigo.cc/go/safe v1.3.1 h1:irTCqPAC97gGsX/Lw5AzLelDt1xXLEZIAaVhLELWe9Q=
|
|
||||||
apigo.cc/go/safe v1.3.1/go.mod h1:XdOpBhN2vkImalaykYXXmEpczqWa1y3ah6/Q72cdRqE=
|
|
||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
||||||
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
|
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
|
||||||
@ -15,10 +5,10 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
||||||
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
||||||
golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI=
|
golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
|
||||||
golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
|
golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
|
||||||
golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
|
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
|
||||||
golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
|
|||||||
30
yaml_test.go
30
yaml_test.go
@ -1,30 +0,0 @@
|
|||||||
package config_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"apigo.cc/go/config"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestForYaml_Support(t *testing.T) {
|
|
||||||
os.Clearenv()
|
|
||||||
// create a test.yaml without extension in the load call
|
|
||||||
os.WriteFile("test3.yaml", []byte(`
|
|
||||||
name: yaml-config
|
|
||||||
sets: [4, 5, 6]
|
|
||||||
`), 0644)
|
|
||||||
defer os.Remove("test3.yaml")
|
|
||||||
|
|
||||||
var testConf RegressionConf
|
|
||||||
if err := config.Load(&testConf, "test3"); err != nil {
|
|
||||||
t.Errorf("Load failed: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if testConf.Name != "yaml-config" {
|
|
||||||
t.Errorf("Expected name yaml-config, got %v", testConf.Name)
|
|
||||||
}
|
|
||||||
if len(testConf.Sets) != 3 || testConf.Sets[0] != 4 {
|
|
||||||
t.Errorf("Sets failed: %v", testConf.Sets)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user