@@ -94,17 +94,32 @@ runs:
9494 using : composite
9595 steps :
9696 - name : Resolve toolchain versions from runtime lock
97+ env :
98+ INPUT_NODE_VERSION : ${{ inputs.node-version }}
99+ INPUT_PYTHON_VERSION : ${{ inputs.python-version }}
100+ INPUT_RUNTIME_LOCK_PATH : ${{ inputs.runtime-lock-path }}
97101 shell : bash
98102 run : |
99103 set -euo pipefail
100- node_version="${{ inputs.node-version }}"
101- python_version="${{ inputs.python-version }}"
102- if [[ -f "${{ inputs.runtime-lock-path }}" ]]; then
104+ write_env_var() {
105+ local key="$1"
106+ local value="$2"
107+ local marker="EOF_${key}_$(date +%s%N)"
108+ {
109+ printf '%s<<%s\n' "$key" "$marker"
110+ printf '%s\n' "$value"
111+ printf '%s\n' "$marker"
112+ } >> "$GITHUB_ENV"
113+ }
114+
115+ node_version="$INPUT_NODE_VERSION"
116+ python_version="$INPUT_PYTHON_VERSION"
117+ if [[ -f "$INPUT_RUNTIME_LOCK_PATH" ]]; then
103118 if [[ -z "$node_version" ]]; then
104- node_version="$(python3 -c 'import json, pathlib; payload=json.loads( pathlib.Path("${{ inputs.runtime-lock- path }}") .read_text(encoding="utf-8")); print(str(payload.get("toolchain", {}).get("node", "")).strip())')"
119+ node_version="$(INPUT_RUNTIME_LOCK_PATH="$INPUT_RUNTIME_LOCK_PATH" python3 -c 'import json, os, pathlib; path = pathlib.Path(os.environ["INPUT_RUNTIME_LOCK_PATH"]); payload = json.loads( path.read_text(encoding="utf-8")); print(str(payload.get("toolchain", {}).get("node", "")).strip())')"
105120 fi
106121 if [[ -z "$python_version" ]]; then
107- python_version="$(python3 -c 'import json, pathlib; payload=json.loads( pathlib.Path("${{ inputs.runtime-lock- path }}") .read_text(encoding="utf-8")); print(str(payload.get("toolchain", {}).get("python", "")).strip())')"
122+ python_version="$(INPUT_RUNTIME_LOCK_PATH="$INPUT_RUNTIME_LOCK_PATH" python3 -c 'import json, os, pathlib; path = pathlib.Path(os.environ["INPUT_RUNTIME_LOCK_PATH"]); payload = json.loads( path.read_text(encoding="utf-8")); print(str(payload.get("toolchain", {}).get("python", "")).strip())')"
108123 fi
109124 fi
110125 if [[ -z "$node_version" ]]; then
@@ -113,8 +128,8 @@ runs:
113128 if [[ -z "$python_version" ]]; then
114129 python_version="3.11.15"
115130 fi
116- echo "UIQ_SETUP_NODE_VERSION=$node_version" >> "$GITHUB_ENV "
117- echo "UIQ_SETUP_PYTHON_VERSION=$python_version" >> "$GITHUB_ENV "
131+ write_env_var "UIQ_SETUP_NODE_VERSION" "$node_version "
132+ write_env_var "UIQ_SETUP_PYTHON_VERSION" "$python_version "
118133
119134 - name: Setup Node + pnpm
120135 if: ${{ inputs.enable-node == 'true' }}
@@ -126,13 +141,15 @@ runs:
126141
127142 - name: Install Node dependencies
128143 if: ${{ inputs.enable-node == 'true' && inputs.pnpm-install == 'true' }}
144+ env:
145+ INPUT_PNPM_INSTALL_COMMAND: ${{ inputs.pnpm-install-command }}
129146 shell: bash
130147 run: |
131148 set -euo pipefail
132149 cd "$GITHUB_WORKSPACE"
133150 install_log="$(mktemp)"
134151 set +e
135- ${{ inputs.pnpm-install-command }} >"$install_log" 2>&1
152+ bash -lc "$INPUT_PNPM_INSTALL_COMMAND" >"$install_log" 2>&1
136153 install_status=$?
137154 set -e
138155 if [[ "$install_status" -ne 0 ]]; then
@@ -145,7 +162,7 @@ runs:
145162 mkdir -p "${PNPM_STORE_DIR}"
146163 pnpm config set store-dir "${PNPM_STORE_DIR}"
147164 fi
148- ${{ inputs.pnpm-install-command }}
165+ bash -lc "$INPUT_PNPM_INSTALL_COMMAND"
149166 else
150167 rm -f "$install_log"
151168 exit "$install_status"
@@ -164,9 +181,21 @@ runs:
164181
165182 - name: Sync Python dependencies
166183 if: ${{ inputs.enable-python == 'true' && inputs.uv-sync == 'true' }}
184+ env:
185+ INPUT_UV_SYNC_COMMAND: ${{ inputs.uv-sync-command }}
167186 shell: bash
168187 run: |
169188 set -euo pipefail
189+ write_env_var() {
190+ local key="$1"
191+ local value="$2"
192+ local marker="EOF_${key}_$(date +%s%N)"
193+ {
194+ printf '%s<<%s\n' "$key" "$marker"
195+ printf '%s\n' "$value"
196+ printf '%s\n' "$marker"
197+ } >> "$GITHUB_ENV"
198+ }
170199 cd "$GITHUB_WORKSPACE"
171200 requested_python_version="${UIQ_SETUP_PYTHON_VERSION}"
172201 managed_python_env="${PROJECT_PYTHON_ENV:-${UV_PROJECT_ENVIRONMENT:-.runtime-cache/toolchains/python/.venv}}"
@@ -198,9 +227,9 @@ runs:
198227 fi
199228 export PROJECT_PYTHON_ENV="$managed_python_env"
200229 export UV_PROJECT_ENVIRONMENT="$managed_python_env"
201- echo "PROJECT_PYTHON_ENV=$managed_python_env" >> "$GITHUB_ENV "
202- echo "UV_PROJECT_ENVIRONMENT=$managed_python_env" >> "$GITHUB_ENV "
203- ${{ inputs.uv-sync-command }}
230+ write_env_var "PROJECT_PYTHON_ENV" "$managed_python_env "
231+ write_env_var "UV_PROJECT_ENVIRONMENT" "$managed_python_env "
232+ bash -lc "$INPUT_UV_SYNC_COMMAND"
204233
205234 - name: Setup Playwright
206235 if: ${{ inputs.enable-playwright == 'true' }}
0 commit comments