Skip to content

Commit e542a7a

Browse files
authored
✨ feat: support import config define custom config struct (#149)
1 parent 75406b0 commit e542a7a

File tree

5 files changed

+52
-18
lines changed

5 files changed

+52
-18
lines changed

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
github.com/aws/aws-sdk-go-v2/credentials v1.17.27
1111
github.com/aws/aws-sdk-go-v2/service/appconfigdata v1.16.4
1212
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.5
13-
github.com/aws/aws-sdk-go-v2/service/s3 v1.58.3
13+
github.com/aws/aws-sdk-go-v2/service/s3 v1.60.0
1414
github.com/casbin/casbin/v2 v2.98.0
1515
github.com/casbin/gorm-adapter/v3 v3.27.0
1616
github.com/casbin/mongodb-adapter/v3 v3.7.0
@@ -56,17 +56,17 @@ require (
5656
github.com/alecthomas/units v0.0.0-20240626203959-61d1e3462e30 // indirect
5757
github.com/armon/go-metrics v0.4.1 // indirect
5858
github.com/aws/aws-sdk-go v1.54.20 // indirect
59-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 // indirect
59+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.4 // indirect
6060
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 // indirect
6161
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 // indirect
6262
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 // indirect
6363
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
64-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.15 // indirect
64+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.16 // indirect
6565
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 // indirect
66-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.17 // indirect
66+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.18 // indirect
6767
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.17 // indirect
68-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 // indirect
69-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.15 // indirect
68+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18 // indirect
69+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.16 // indirect
7070
github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect
7171
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect
7272
github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect

go.sum

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ github.com/aws/aws-sdk-go v1.54.20 h1:FZ2UcXya7bUkvkpf7TaPmiL7EubK0go1nlXGLRwEso
6262
github.com/aws/aws-sdk-go v1.54.20/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
6363
github.com/aws/aws-sdk-go-v2 v1.30.4 h1:frhcagrVNrzmT95RJImMHgabt99vkXGslubDaDagTk8=
6464
github.com/aws/aws-sdk-go-v2 v1.30.4/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0=
65-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 h1:tW1/Rkad38LA15X4UQtjXZXNKsCgkshC3EbmcUmghTg=
66-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3/go.mod h1:UbnqO+zjqk3uIt9yCACHJ9IVNhyhOCnYk8yA19SAWrM=
65+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.4 h1:70PVAiL15/aBMh5LThwgXdSQorVr91L127ttckI9QQU=
66+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.4/go.mod h1:/MQxMqci8tlqDH+pjmoLu1i0tbWCUP1hhyMRuFxpQCw=
6767
github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90=
6868
github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg=
6969
github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI=
@@ -76,24 +76,24 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 h1:jYfy8UPmd+6kJW5YhY
7676
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16/go.mod h1:7ZfEPZxkW42Afq4uQB8H2E2e6ebh6mXTueEpYzjCzcs=
7777
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU=
7878
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
79-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.15 h1:Z5r7SycxmSllHYmaAZPpmN8GviDrSGhMS6bldqtXZPw=
80-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.15/go.mod h1:CetW7bDE00QoGEmPUoZuRog07SGVAUVW6LFpNP0YfIg=
79+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.16 h1:mimdLQkIX1zr8GIPY1ZtALdBQGxcASiBd2MOp8m/dMc=
80+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.16/go.mod h1:YHk6owoSwrIsok+cAH9PENCOGoH5PU2EllX4vLtSrsY=
8181
github.com/aws/aws-sdk-go-v2/service/appconfigdata v1.16.4 h1:ggE2+kzdvXtLYp3lJBjQfRrCFTsrwt4HgyjrAmUTXB0=
8282
github.com/aws/aws-sdk-go-v2/service/appconfigdata v1.16.4/go.mod h1:5Gr7pLLSaOc79qkghPFURtmJ2/8vgmTQPU2tSm9LOgo=
8383
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.5 h1:Cm77yt+/CV7A6DglkENsWA3H1hq8+4ItJnFKrhxHkvg=
8484
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.34.5/go.mod h1:s2fYaueBuCnwv1XQn6T8TfShxJWusv5tWPMcL+GY6+g=
8585
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 h1:KypMCbLPPHEmf9DgMGw51jMj77VfGPAN2Kv4cfhlfgI=
8686
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4/go.mod h1:Vz1JQXliGcQktFTN/LN6uGppAIRoLBR2bMvIMP0gOjc=
87-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.17 h1:YPYe6ZmvUfDDDELqEKtAd6bo8zxhkm+XEFEzQisqUIE=
88-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.17/go.mod h1:oBtcnYua/CgzCWYN7NZ5j7PotFDaFSUjCYVTtfyn7vw=
87+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.18 h1:GckUnpm4EJOAio1c8o25a+b3lVfwVzC9gnSBqiiNmZM=
88+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.18/go.mod h1:Br6+bxfG33Dk3ynmkhsW2Z/t9D4+lRqdLDNCKi85w0U=
8989
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.17 h1:HDJGz1jlV7RokVgTPfx1UHBHANC0N5Uk++xgyYgz5E0=
9090
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.17/go.mod h1:5szDu6TWdRDytfDxUQVv2OYfpTQMKApVFyqpm+TcA98=
91-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrxZlQ044RiM+WdoZxp0p+EGM62y3L6pwA4olE=
92-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII=
93-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.15 h1:246A4lSTXWJw/rmlQI+TT2OcqeDMKBdyjEQrafMaQdA=
94-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.15/go.mod h1:haVfg3761/WF7YPuJOER2MP0k4UAXyHaLclKXB6usDg=
95-
github.com/aws/aws-sdk-go-v2/service/s3 v1.58.3 h1:hT8ZAZRIfqBqHbzKTII+CIiY8G2oC9OpLedkZ51DWl8=
96-
github.com/aws/aws-sdk-go-v2/service/s3 v1.58.3/go.mod h1:Lcxzg5rojyVPU/0eFwLtcyTaek/6Mtic5B1gJo7e/zE=
91+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18 h1:tJ5RnkHCiSH0jyd6gROjlJtNwov0eGYNz8s8nFcR0jQ=
92+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18/go.mod h1:++NHzT+nAF7ZPrHPsA+ENvsXkOO8wEu+C6RXltAG4/c=
93+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.16 h1:jg16PhLPUiHIj8zYIW6bqzeQSuHVEiWnGA0Brz5Xv2I=
94+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.16/go.mod h1:Uyk1zE1VVdsHSU7096h/rwnXDzOzYQVl+FNPhPw7ShY=
95+
github.com/aws/aws-sdk-go-v2/service/s3 v1.60.0 h1:2QXGJvG19QwqXUvgcdoCOZPyLuvZf8LiXPCN4P53TdI=
96+
github.com/aws/aws-sdk-go-v2/service/s3 v1.60.0/go.mod h1:BSPI0EfnYUuNHPS0uqIo5VrRwzie+Fp+YhQOUs16sKI=
9797
github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM=
9898
github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU=
9999
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE=

pkg/config/config.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,14 @@ func Init(cfg source.Entity, options ...source.Option) (err error) {
107107
slog.Error(err.Error())
108108
return err
109109
}
110+
//postfix hook
111+
if opts.PostfixHook != nil {
112+
err = unm(rb, opts.PostfixHook)
113+
if err != nil {
114+
slog.Error(err.Error())
115+
return err
116+
}
117+
}
110118

111119
rb, err = f.ReadFile(fmt.Sprintf("%s-%s", opts.Name, stage))
112120
if err == nil {
@@ -127,9 +135,24 @@ func Init(cfg source.Entity, options ...source.Option) (err error) {
127135
slog.Error(err.Error())
128136
}
129137
}
138+
//postfix hook
139+
if opts.PostfixHook != nil {
140+
err = unm(rb, opts.PostfixHook)
141+
if err != nil {
142+
slog.Error(err.Error())
143+
return err
144+
}
145+
}
146+
130147
if !opts.Watch {
131148
return nil
132149
}
150+
err = f.Watch(opts.PostfixHook, unm)
151+
if err != nil {
152+
slog.Warn("watch custom config failed", "err", err)
153+
// ignore error
154+
err = nil
155+
}
133156
return f.Watch(cfg, unm)
134157
}
135158

pkg/config/source/entity.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ type Entity interface {
1515
type PrefixHook interface {
1616
Init()
1717
}
18+
19+
type PostHook interface {
20+
Entity
21+
}

pkg/config/source/options.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ type Options struct {
7676
Namespace string
7777
Configmap string
7878
PrefixHook PrefixHook
79+
PostfixHook PostHook
7980
Clientset *kubernetes.Clientset
8081
Kubeconfig string
8182
KubeconfigPath string
@@ -103,6 +104,12 @@ func WithPrefixHook(hook PrefixHook) Option {
103104
}
104105
}
105106

107+
func WithPostfixHook(hook PostHook) Option {
108+
return func(args *Options) {
109+
args.PostfixHook = hook
110+
}
111+
}
112+
106113
// WithDatasource set datasource
107114
func WithDatasource(datasource string) Option {
108115
return func(args *Options) {

0 commit comments

Comments
 (0)