lockbox

password manager
Log | Files | Refs | README | LICENSE

commit da1e27820a1ef0097e36e6c6ef74730af25b6a03
parent 98ce7abf460ffe793d23a3c7ae5bb96307cc20dd
Author: Sean Enck <sean@ttypty.com>
Date:   Sat, 29 Jul 2023 09:19:31 -0400

stop expanding when no changes were made

Diffstat:
Minternal/config/core.go | 20+++++++++++++++++++-
Minternal/config/core_test.go | 2+-
2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/internal/config/core.go b/internal/config/core.go @@ -357,7 +357,25 @@ func ExpandParsed(inputs map[string]string) (map[string]string, error) { } result := inputs for cycles > 0 { - result = expandParsed(result) + expanded := expandParsed(result) + if len(expanded) == len(result) { + same := true + for k, v := range expanded { + val, ok := result[k] + if !ok { + same = false + break + } + if val != v { + same = false + break + } + } + if same { + return expanded, nil + } + } + result = expanded cycles-- } return result, nil diff --git a/internal/config/core_test.go b/internal/config/core_test.go @@ -198,7 +198,7 @@ func TestExpandParsed(t *testing.T) { ins["OTHER_FIRST"] = "2" ins["OTHER_OTHER"] = "$ANOTHER_TEST|$TEST_ABC|$OTHER_TEST" ins["OTHER"] = "$OTHER_OTHER|$OTHER_FIRST" - os.Setenv("LOCKBOX_ENV_EXPANDS", "4") + os.Setenv("LOCKBOX_ENV_EXPANDS", "20") r, err = config.ExpandParsed(ins) if err != nil || len(r) != 4 || r["TEST"] != "2" || r["OTHER"] != "2|2|2|2" || r["OTHER_OTHER"] != "2|2|2" { t.Errorf("invalid expand: %v", r)