From cda3f0207e80390d0f92c6e4f72a56b8a1b81d9e Mon Sep 17 00:00:00 2001 From: crschnick Date: Fri, 15 Dec 2023 03:18:16 +0000 Subject: [PATCH] More environment variable fixes --- .../io/xpipe/core/process/CommandBuilder.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/io/xpipe/core/process/CommandBuilder.java b/core/src/main/java/io/xpipe/core/process/CommandBuilder.java index 45575b8d..2e537893 100644 --- a/core/src/main/java/io/xpipe/core/process/CommandBuilder.java +++ b/core/src/main/java/io/xpipe/core/process/CommandBuilder.java @@ -15,14 +15,24 @@ public class CommandBuilder { private final List elements = new ArrayList<>(); @Getter - private final Map environmentVariables = new LinkedHashMap<>(); + private final Map environmentVariables = new LinkedHashMap<>(); - public CommandBuilder envrironment(String k, String v) { + public CommandBuilder fixedEnvrironment(String k, String v) { + environmentVariables.put(k, new Fixed(v)); + return this; + } + + public CommandBuilder envrironment(String k, Element v) { environmentVariables.put(k, v); return this; } - public CommandBuilder envrironment(Map map) { + public CommandBuilder fixedEnvrironment(Map map) { + map.forEach((s, s2) -> fixedEnvrironment(s, s2)); + return this; + } + + public CommandBuilder envrironment(Map map) { environmentVariables.putAll(map); return this; } @@ -180,7 +190,14 @@ public class CommandBuilder { public String build(ShellControl sc) throws Exception { var s = buildBase(sc); - return sc.getShellDialect().addInlineVariablesToCommand(environmentVariables, s); + LinkedHashMap map = new LinkedHashMap<>(); + for (var e : environmentVariables.entrySet()) { + var v = e.getValue().evaluate(sc); + if (v != null) { + map.put(e.getKey(), v); + } + } + return sc.getShellDialect().addInlineVariablesToCommand(map, s); } public CommandControl buildCommand(ShellControl sc) {