14
									
								
								file.go
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								file.go
									
									
									
									
									
								
							| @@ -50,7 +50,7 @@ func (c *fileConfig) Init(opts ...config.Option) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (c *fileConfig) Load(ctx context.Context) error { | ||||
| func (c *fileConfig) Load(ctx context.Context, opts ...config.LoadOption) error { | ||||
| 	for _, fn := range c.opts.BeforeLoad { | ||||
| 		if err := fn(ctx, c); err != nil && !c.opts.AllowFail { | ||||
| 			return err | ||||
| @@ -69,7 +69,15 @@ func (c *fileConfig) Load(ctx context.Context) error { | ||||
| 			if err == nil { | ||||
| 				err = c.opts.Codec.Unmarshal(buf, src) | ||||
| 				if err == nil { | ||||
| 					err = mergo.Merge(c.opts.Struct, src, mergo.WithOverride, mergo.WithTypeCheck, mergo.WithAppendSlice) | ||||
| 					options := config.NewLoadOptions(opts...) | ||||
| 					mopts := []func(*mergo.Config){mergo.WithTypeCheck} | ||||
| 					if options.Override { | ||||
| 						mopts = append(mopts, mergo.WithOverride) | ||||
| 					} | ||||
| 					if options.Append { | ||||
| 						mopts = append(mopts, mergo.WithAppendSlice) | ||||
| 					} | ||||
| 					err = mergo.Merge(c.opts.Struct, src, mopts...) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -87,7 +95,7 @@ func (c *fileConfig) Load(ctx context.Context) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (c *fileConfig) Save(ctx context.Context) error { | ||||
| func (c *fileConfig) Save(ctx context.Context, opts ...config.SaveOption) error { | ||||
| 	for _, fn := range c.opts.BeforeSave { | ||||
| 		if err := fn(ctx, c); err != nil && !c.opts.AllowFail { | ||||
| 			return err | ||||
|   | ||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @@ -4,5 +4,5 @@ go 1.16 | ||||
|  | ||||
| require ( | ||||
| 	github.com/imdario/mergo v0.3.12 | ||||
| 	github.com/unistack-org/micro/v3 v3.3.17 | ||||
| 	github.com/unistack-org/micro/v3 v3.4.0 | ||||
| ) | ||||
|   | ||||
							
								
								
									
										6
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.sum
									
									
									
									
									
								
							| @@ -5,9 +5,9 @@ github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= | ||||
| github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= | ||||
| github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= | ||||
| github.com/silas/dag v0.0.0-20210121180416-41cf55125c34/go.mod h1:7RTUFBdIRC9nZ7/3RyRNH1bdqIShrDejd1YbLwgPS+I= | ||||
| github.com/unistack-org/micro/v3 v3.3.17 h1:WcyS7InP0DlS/JpRQGLh5sG6VstkdHJbgpMp+gmHmwg= | ||||
| github.com/unistack-org/micro/v3 v3.3.17/go.mod h1:022EOEZZ789hZY3yB5ZSMXU6jLiadBgcNB/cpediV3c= | ||||
| golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= | ||||
| github.com/unistack-org/micro/v3 v3.4.0 h1:z9F3lgAb2j4cZ1ib5qBj66JPYUAzR4sNIJqUDjVwyVQ= | ||||
| github.com/unistack-org/micro/v3 v3.4.0/go.mod h1:LXmPfbJnJNvL0kQs8HfnkV3Wya2Wb+C7keVq++RCZnk= | ||||
| golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||
| golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||
|   | ||||
		Reference in New Issue
	
	Block a user