Skip to content

Commit 95bcabb

Browse files
committed
feat: Refactor config loading to support remote and local paths
1 parent a3a62c6 commit 95bcabb

File tree

3 files changed

+39
-20
lines changed

3 files changed

+39
-20
lines changed

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ go 1.24.0
55
require (
66
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.8-20250717185734-6c6e0d3c608e.1
77
buf.build/go/protovalidate v0.14.0
8-
github.com/TBXark/confstore v0.0.5
98
github.com/gin-gonic/gin v1.10.1
109
github.com/go-sphere/binding v0.0.1
10+
github.com/go-sphere/confstore v0.0.1
1111
github.com/go-sphere/errors v0.0.1
1212
github.com/go-sphere/sphere v0.0.1
1313
github.com/google/wire v0.7.0
@@ -16,8 +16,8 @@ require (
1616
)
1717

1818
require (
19-
cel.dev/expr v0.23.1 // indirect
20-
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
19+
cel.dev/expr v0.24.0 // indirect
20+
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
2121
github.com/bytedance/sonic v1.14.0 // indirect
2222
github.com/bytedance/sonic/loader v0.3.0 // indirect
2323
github.com/cloudwego/base64x v0.1.6 // indirect
@@ -29,7 +29,7 @@ require (
2929
github.com/go-playground/universal-translator v0.18.1 // indirect
3030
github.com/go-playground/validator/v10 v10.27.0 // indirect
3131
github.com/goccy/go-json v0.10.5 // indirect
32-
github.com/google/cel-go v0.25.0 // indirect
32+
github.com/google/cel-go v0.26.1 // indirect
3333
github.com/json-iterator/go v1.1.12 // indirect
3434
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
3535
github.com/kr/pretty v0.3.1 // indirect
@@ -38,7 +38,7 @@ require (
3838
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
3939
github.com/modern-go/reflect2 v1.0.2 // indirect
4040
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
41-
github.com/stoewer/go-strcase v1.3.0 // indirect
41+
github.com/stoewer/go-strcase v1.3.1 // indirect
4242
github.com/stretchr/testify v1.11.1 // indirect
4343
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
4444
github.com/ugorji/go/codec v1.3.0 // indirect
@@ -52,7 +52,7 @@ require (
5252
golang.org/x/sync v0.16.0 // indirect
5353
golang.org/x/sys v0.35.0 // indirect
5454
golang.org/x/text v0.28.0 // indirect
55-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect
55+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 // indirect
5656
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
5757
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
5858
gopkg.in/yaml.v3 v3.0.1 // indirect

go.sum

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@ buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.8-2025071718573
22
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.8-20250717185734-6c6e0d3c608e.1/go.mod h1:8EQ5GzyGJQ5tEIwMSxCl8RKJYsjCpAwkdcENoioXT6g=
33
buf.build/go/protovalidate v0.14.0 h1:kr/rC/no+DtRyYX+8KXLDxNnI1rINz0imk5K44ZpZ3A=
44
buf.build/go/protovalidate v0.14.0/go.mod h1:+F/oISho9MO7gJQNYC2VWLzcO1fTPmaTA08SDYJZncA=
5-
cel.dev/expr v0.23.1 h1:K4KOtPCJQjVggkARsjG9RWXP6O4R73aHeJMa/dmCQQg=
6-
cel.dev/expr v0.23.1/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=
7-
github.com/TBXark/confstore v0.0.5 h1:LBbqBS9GdQuqzRi1azLJMdlTJjyEKrGZ9VOrteZUZfQ=
8-
github.com/TBXark/confstore v0.0.5/go.mod h1:TOxM19Snt9wT02PJzyz66sgq7sWhr4AFzPEZIKvVnTE=
9-
github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
10-
github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
5+
cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY=
6+
cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=
7+
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
8+
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
119
github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ=
1210
github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA=
1311
github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA=
@@ -40,6 +38,8 @@ github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHO
4038
github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo=
4139
github.com/go-sphere/binding v0.0.1 h1:HQr3DMEhcFlIMzdW08l2v2iOrUMw+JXqEOgJdSOPdkw=
4240
github.com/go-sphere/binding v0.0.1/go.mod h1:0mukFqHNQULXOcTDSMsB3S+hfS/de+ooWUOQSQU1yrQ=
41+
github.com/go-sphere/confstore v0.0.1 h1:TBGPiLWDgRWqzEkuL3CLQVb95+TL0qJMe3XqaAwOHy8=
42+
github.com/go-sphere/confstore v0.0.1/go.mod h1:rvp2oSOW4x3E8JU0efD9JtHpBM2M3VIqM4rohoSMr34=
4343
github.com/go-sphere/errors v0.0.1 h1:kdTFOB1L8yyNHaYgpYZPSHu/xeMsEkujmCpkzK+v3hQ=
4444
github.com/go-sphere/errors v0.0.1/go.mod h1:xShlZuLMCNDjkn8IHMcKVeImtjw1ax8dZuhpcrwqhho=
4545
github.com/go-sphere/sphere v0.0.1 h1:zALbgd8439RBABgIIvngp96VIU6pGNnitBBp8b59qaQ=
@@ -48,8 +48,8 @@ github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9L
4848
github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
4949
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
5050
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
51-
github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY=
52-
github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI=
51+
github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ=
52+
github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM=
5353
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
5454
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
5555
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -84,8 +84,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH
8484
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
8585
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
8686
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
87-
github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
88-
github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
87+
github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs=
88+
github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
8989
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
9090
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
9191
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
@@ -124,8 +124,8 @@ golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
124124
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
125125
google.golang.org/genproto/googleapis/api v0.0.0-20250826171959-ef028d996bc1 h1:APHvLLYBhtZvsbnpkfknDZ7NyH4z5+ub/I0u8L3Oz6g=
126126
google.golang.org/genproto/googleapis/api v0.0.0-20250826171959-ef028d996bc1/go.mod h1:xUjFWUnWDpZ/C0Gu0qloASKFb6f8/QXiiXhSPFsD668=
127-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg=
128-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo=
127+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1 h1:pmJpJEvT846VzausCQ5d7KreSROcDqmO388w5YbnltA=
128+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1/go.mod h1:GmFNa4BdJZ2a8G+wCe9Bg3wwThLrJun751XstdJt5Og=
129129
google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
130130
google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
131131
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

internal/config/config.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package config
22

33
import (
4-
"github.com/TBXark/confstore"
4+
"context"
5+
"errors"
6+
7+
"github.com/go-sphere/confstore"
8+
"github.com/go-sphere/confstore/codec"
9+
"github.com/go-sphere/confstore/provider"
510
"github.com/go-sphere/sphere-simple-layout/internal/server/api"
611
"github.com/go-sphere/sphere/log"
712
"github.com/go-sphere/sphere/utils/secure"
@@ -44,8 +49,22 @@ func setDefaultConfig(config *Config) *Config {
4449
return config
4550
}
4651

52+
func newConfProvider(path string) (provider.Provider, error) {
53+
if provider.IsRemoteURL(path) {
54+
return provider.NewHTTP(path, provider.WithTimeout(10)), nil
55+
}
56+
if provider.IsLocalPath(path) {
57+
return provider.NewFile(path, provider.WithExpandEnv()), nil
58+
}
59+
return nil, errors.New("unsupported config path")
60+
}
61+
4762
func NewConfig(path string) (*Config, error) {
48-
config, err := confstore.Load[Config](path)
63+
pro, err := newConfProvider(path)
64+
if err != nil {
65+
return nil, err
66+
}
67+
config, err := confstore.Load[Config](context.Background(), pro, codec.JsonCodec())
4968
if err != nil {
5069
return nil, err
5170
}

0 commit comments

Comments
 (0)