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:
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)