From f6bcffd8df306d31a25967be49b4f72386cfa1d7 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Sat, 1 Apr 2023 18:15:37 +0200 Subject: [PATCH] Add Config Clone --- internal/definitions/config.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/internal/definitions/config.go b/internal/definitions/config.go index b6f8e5b..fa1d004 100644 --- a/internal/definitions/config.go +++ b/internal/definitions/config.go @@ -1,6 +1,7 @@ package definitions import ( + "encoding/json" "fmt" "github.com/go-playground/validator/v10" @@ -14,6 +15,20 @@ type Config struct { Network Network `json:"network" validate:"required,dive"` } +// Clone TODO find a better way to deep copy +func (c *Config) Clone() *Config { + data, err := json.Marshal(c) + if err != nil { + panic(fmt.Errorf("Marshal Error: %w", err)) + } + var clone Config + err = json.Unmarshal(data, &clone) + if err != nil { + panic(fmt.Errorf("Unmarshal Error: %w", err)) + } + return &clone +} + func ValidateConfig(conf *Config) error { val := validator.New() val.RegisterValidation("test", nilIfOtherNil)