From 51f5084dd0c7011bd6b93173736a0db4a2bfdca5 Mon Sep 17 00:00:00 2001 From: Andrew Woodlee Date: Fri, 13 Sep 2024 20:47:59 -0500 Subject: [PATCH] more work on env variable parsing --- .vscode/settings.json | 3 +++ docs/content/config/commands.md | 2 +- pkg/backy/config.go | 5 +++++ pkg/backy/utils.go | 11 ++++++++--- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index d2d0aa1..9d8b418 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,9 @@ "knadh", "koanf", "mattn", + "maunium", + "mautrix", + "nikoksr", "Strs" ] } \ No newline at end of file diff --git a/docs/content/config/commands.md b/docs/content/config/commands.md index 5e20359..2ea8a5c 100644 --- a/docs/content/config/commands.md +++ b/docs/content/config/commands.md @@ -103,7 +103,7 @@ May be `scriptFile` or `script`. Runs script from local machine on remote host p If `type` is `script`, `cmd` is used as the script. -If `type` is `scriptFile`, cmd must be a file path. +If `type` is `scriptFile`, cmd must be a script file. ### environment diff --git a/pkg/backy/config.go b/pkg/backy/config.go index 301f7e2..3663bd7 100644 --- a/pkg/backy/config.go +++ b/pkg/backy/config.go @@ -22,6 +22,11 @@ var homeDirErr error var backyHomeConfDir string var configFiles []string +const macroStart string = "%{" +const macroEnd string = "}%" +const envMacroStart string = "%{env:" +const vaultMacroStart string = "%{env:" + func (opts *ConfigOpts) InitConfig() { homeDir, homeDirErr = os.UserHomeDir() diff --git a/pkg/backy/utils.go b/pkg/backy/utils.go index 999fae0..44d8beb 100644 --- a/pkg/backy/utils.go +++ b/pkg/backy/utils.go @@ -221,10 +221,15 @@ func expandEnvVars(backyEnv map[string]string, envVars []string) { return "" } + // parse env variables using new macros for indx, v := range envVars { - if strings.Contains(v, "$") || (strings.Contains(v, "${") && strings.Contains(v, "}")) { - out, _ := shell.Expand(v, env) - envVars[indx] = out + if strings.HasPrefix(v, macroStart) && strings.HasSuffix(v, macroEnd) { + if strings.HasPrefix(v, envMacroStart) { + v = strings.TrimPrefix(v, envMacroStart) + v = strings.TrimRight(v, macroEnd) + out, _ := shell.Expand(v, env) + envVars[indx] = out + } } } }