fix(issue-26): the wrapper reads .mam.env through the Python loader's parser, never source
- lib_py/delegation/envfile.py (stdlib only) holds the one set of rules: comments and blank lines skipped, key and value stripped, one matching quote pair removed, no shell interpretation, keys must match ^[A-Za-z_][A-Za-z0-9_]*$ (bad or `=`-less lines warn with the line number, never the value). - mqtt_common._parse_env_file delegates to envfile.apply. - The delegate-job wrapper runs envfile.py --shell by path and evals the shlex-quoted exports; values never reach a command line. The environment now wins over the file in both loaders. - .mam.env.example: commented assignments no longer use $HOME, which the parser keeps literally. The shell parsed the env file in one place only (wrapper :38), not three. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e1eb22bd59
commit
f1331d36ce
5 files changed
+345
-19
No files matched your search
@@ -34,8 +34,12 @@ if [[ -z "$TARGET_ENV" ]]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Issue #26: parsed by envfile.py (the Python loader's rules; environment wins),
|
||||
# never sourced. Values come back as shlex-quoted exports over the pipe.
|
||||
if [[ -n "$TARGET_ENV" && -f "$TARGET_ENV" ]]; then
|
||||
set -a; source "$TARGET_ENV"; set +a
|
||||
_env_exports="$("${DELEGATE_JOB_PYTHON:-python3}" -I "$SCRIPT_DIR/../lib_py/delegation/envfile.py" --shell "$TARGET_ENV")" \
|
||||
|| { echo "ERROR: cannot read $TARGET_ENV" >&2; exit 1; }
|
||||
eval "$_env_exports"; unset _env_exports
|
||||
fi
|
||||
|
||||
# Source EARLY (before any herdr usage in run_agent) — this is what turns
|
||||
|
||||
Reference in new issue
Block a user