From 6db6cf6ef0b79c9410d4205b79a9727f5196b75f Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Fri, 18 Dec 2020 03:43:00 +0300 Subject: [PATCH] before/after config stuff handled by implementations Signed-off-by: Vasiliy Tolstov --- vault.go | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/vault.go b/vault.go index 821dec8..aaa5411 100644 --- a/vault.go +++ b/vault.go @@ -90,6 +90,12 @@ func (c *vaultConfig) Init(opts ...config.Option) error { } func (c *vaultConfig) Load(ctx context.Context) error { + for _, fn := range c.opts.BeforeLoad { + if err := fn(ctx, c); err != nil { + return err + } + } + //_, version, err := getKVinfo(c.cli, c.path) //if err != nil { // return err @@ -121,10 +127,32 @@ func (c *vaultConfig) Load(ctx context.Context) error { return err } - return c.opts.Codec.Unmarshal(data, c.opts.Struct) + if err = c.opts.Codec.Unmarshal(data, c.opts.Struct); err != nil { + return err + } + + for _, fn := range c.opts.AfterLoad { + if err := fn(ctx, c); err != nil { + return err + } + } + + return nil } func (c *vaultConfig) Save(ctx context.Context) error { + for _, fn := range c.opts.BeforeSave { + if err := fn(ctx, c); err != nil { + return err + } + } + + for _, fn := range c.opts.AfterSave { + if err := fn(ctx, c); err != nil { + return err + } + } + return nil }