Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 5 additions & 18 deletions scripts/post-code.sh
Original file line number Diff line number Diff line change
Expand Up @@ -266,27 +266,14 @@ echo "Signed-off-by scan passed — no trailers in agent's commit(s)"
# ---------------------------------------------------------------------------
# 4. Auto-install pre-commit tool dependencies
# ---------------------------------------------------------------------------
SCRIPT_DIR_POST="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RESOLVE_SCRIPT="${SCRIPT_DIR_POST}/resolve-precommit-tools.py"
INSTALL_SCRIPT="${SCRIPT_DIR_POST}/install-precommit-tools.sh"

if [ -f .pre-commit-config.yaml ] \
&& [ -f "${RESOLVE_SCRIPT}" ] \
&& [ -f "${INSTALL_SCRIPT}" ]; then
MANIFEST="$(mktemp)"
if [ -f .pre-commit-config.yaml ]; then
LOCAL_REG="$(mktemp)"
RESOLVE_ARGS=(".")
PRECOMMIT_INSTALL_ARGS=(--target-dir .)
if git show "origin/${TARGET_BRANCH}:.pre-commit-tools.yaml" > "${LOCAL_REG}" 2>/dev/null; then
RESOLVE_ARGS+=("--local-registry" "${LOCAL_REG}")
fi
if python3 "${RESOLVE_SCRIPT}" "${RESOLVE_ARGS[@]}" > "${MANIFEST}"; then
if [ -s "${MANIFEST}" ] && jq -e '.tools | length > 0' "${MANIFEST}" >/dev/null 2>&1; then
bash "${INSTALL_SCRIPT}" "${MANIFEST}"
fi
else
echo "::warning::Pre-commit tool resolution failed — continuing without auto-install"
PRECOMMIT_INSTALL_ARGS+=(--local-registry "${LOCAL_REG}")
fi
rm -f "${MANIFEST}" "${LOCAL_REG}"
fullsend postrun precommit-install "${PRECOMMIT_INSTALL_ARGS[@]}"
rm -f "${LOCAL_REG}"
fi
export PATH="${HOME}/.local/bin:${PATH}"

Expand Down
35 changes: 8 additions & 27 deletions scripts/post-fix.sh
Original file line number Diff line number Diff line change
Expand Up @@ -178,27 +178,14 @@ fi
# ---------------------------------------------------------------------------
# 2. Auto-install pre-commit tool dependencies
# ---------------------------------------------------------------------------
SCRIPT_DIR_POST="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RESOLVE_SCRIPT="${SCRIPT_DIR_POST}/resolve-precommit-tools.py"
INSTALL_SCRIPT="${SCRIPT_DIR_POST}/install-precommit-tools.sh"

if [ -f .pre-commit-config.yaml ] \
&& [ -f "${RESOLVE_SCRIPT}" ] \
&& [ -f "${INSTALL_SCRIPT}" ]; then
MANIFEST="$(mktemp)"
if [ -f .pre-commit-config.yaml ]; then
LOCAL_REG="$(mktemp)"
RESOLVE_ARGS=(".")
PRECOMMIT_INSTALL_ARGS=(--target-dir .)
if git show "origin/${TARGET_BRANCH}:.pre-commit-tools.yaml" > "${LOCAL_REG}" 2>/dev/null; then
RESOLVE_ARGS+=("--local-registry" "${LOCAL_REG}")
PRECOMMIT_INSTALL_ARGS+=(--local-registry "${LOCAL_REG}")
fi
if python3 "${RESOLVE_SCRIPT}" "${RESOLVE_ARGS[@]}" > "${MANIFEST}"; then
if [ -s "${MANIFEST}" ] && jq -e '.tools | length > 0' "${MANIFEST}" >/dev/null 2>&1; then
bash "${INSTALL_SCRIPT}" "${MANIFEST}"
fi
else
echo "::warning::Pre-commit tool resolution failed — continuing without auto-install"
fi
rm -f "${MANIFEST}" "${LOCAL_REG}"
fullsend postrun precommit-install "${PRECOMMIT_INSTALL_ARGS[@]}"
rm -f "${LOCAL_REG}"
fi
export PATH="${HOME}/.local/bin:${PATH}"

Expand Down Expand Up @@ -314,10 +301,6 @@ fi
# ---------------------------------------------------------------------------
export GH_TOKEN="${PUSH_TOKEN}"

# Locate process-fix-result.py relative to this script.
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROCESS_SCRIPT="${SCRIPT_DIR}/process-fix-result.py"

# Find fix-result.json in the output directory.
# RUN_DIR is the original cwd (runDir = <outputBase>/<sandboxName>), saved
# before we cd'd into REPO_DIR. The agent writes its structured output to
Expand All @@ -333,8 +316,6 @@ done

if [ -z "${RESULT_FILE}" ] || [ ! -f "${RESULT_FILE}" ]; then
echo "::warning::No fix-result.json found — skipping summary comment"
elif [ ! -f "${PROCESS_SCRIPT}" ]; then
echo "::warning::process-fix-result.py not found at ${PROCESS_SCRIPT} — skipping"
else
# Scan fix-result.json for secrets before posting content as a PR comment.
# The agent could have been tricked into embedding sensitive data in the
Expand All @@ -353,12 +334,12 @@ else

echo "Processing fix-result.json: ${RESULT_FILE}"
PROCESS_EXIT=0
python3 "${PROCESS_SCRIPT}" "${RESULT_FILE}" "${REPO_FULL_NAME}" "${PR_NUMBER}" || PROCESS_EXIT=$?
fullsend postrun fix-summary --result "${RESULT_FILE}" --repo "${REPO_FULL_NAME}" --pr "${PR_NUMBER}" --token "${GH_TOKEN}" || PROCESS_EXIT=$?
if [ "${PROCESS_EXIT}" -eq 1 ]; then
echo "::error::process-fix-result.py failed with exit code 1 (bad input) for PR #${PR_NUMBER} in ${REPO_FULL_NAME}" >&2
echo "::error::fullsend postrun fix-summary failed with exit code 1 (bad input) for PR #${PR_NUMBER} in ${REPO_FULL_NAME}" >&2
exit 1
elif [ "${PROCESS_EXIT}" -ne 0 ]; then
echo "::warning::process-fix-result.py exited ${PROCESS_EXIT} — continuing with labels/summary"
echo "::warning::fullsend postrun fix-summary exited ${PROCESS_EXIT} — continuing with labels/summary"
fi
fi

Expand Down
27 changes: 6 additions & 21 deletions scripts/pre-code.sh
Original file line number Diff line number Diff line change
Expand Up @@ -125,33 +125,18 @@ echo "skipped=false" >> "${GITHUB_OUTPUT:-/dev/null}"
# ---------------------------------------------------------------------------
# Auto-detect and install pre-commit tool dependencies
# ---------------------------------------------------------------------------
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TARGET_REPO="${REPO_DIR:-${GITHUB_WORKSPACE:-}/target-repo}"
RESOLVE_SCRIPT="${SCRIPT_DIR}/resolve-precommit-tools.py"
INSTALL_SCRIPT="${SCRIPT_DIR}/install-precommit-tools.sh"

if [ -f "${TARGET_REPO}/.pre-commit-config.yaml" ] \
&& [ -f "${RESOLVE_SCRIPT}" ] \
&& [ -f "${INSTALL_SCRIPT}" ]; then
echo "Resolving pre-commit tool dependencies..."
MANIFEST="$(mktemp)"

if [ -f "${TARGET_REPO}/.pre-commit-config.yaml" ]; then
LOCAL_REG="$(mktemp)"
RESOLVE_ARGS=("${TARGET_REPO}")
PRECOMMIT_INSTALL_ARGS=(--target-dir "${TARGET_REPO}")
DEFAULT_BR="$(git -C "${TARGET_REPO}" symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/origin/||')" || DEFAULT_BR=""
if [ -n "${DEFAULT_BR}" ] \
&& git -C "${TARGET_REPO}" show "origin/${DEFAULT_BR}:.pre-commit-tools.yaml" > "${LOCAL_REG}" 2>/dev/null; then
RESOLVE_ARGS+=("--local-registry" "${LOCAL_REG}")
fi
if python3 "${RESOLVE_SCRIPT}" "${RESOLVE_ARGS[@]}" > "${MANIFEST}"; then
if [ -s "${MANIFEST}" ] && jq -e '.tools | length > 0' "${MANIFEST}" >/dev/null 2>&1; then
bash "${INSTALL_SCRIPT}" "${MANIFEST}"
else
echo "No additional pre-commit tools needed"
fi
else
echo "::warning::Pre-commit tool resolution failed — continuing without auto-install"
PRECOMMIT_INSTALL_ARGS+=(--local-registry "${LOCAL_REG}")
fi
rm -f "${MANIFEST}" "${LOCAL_REG}"
fullsend postrun precommit-install "${PRECOMMIT_INSTALL_ARGS[@]}"
rm -f "${LOCAL_REG}"
fi
export PATH="${HOME}/.local/bin:${PATH}"
echo "${HOME}/.local/bin" >> "${GITHUB_PATH:-/dev/null}"
25 changes: 5 additions & 20 deletions scripts/pre-fix.sh
Original file line number Diff line number Diff line change
Expand Up @@ -105,36 +105,21 @@ fi
# ---------------------------------------------------------------------------
# Ensures tools required by the target repo's pre-commit hooks are
# available on the runner for the authoritative post-script check.
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TARGET_REPO="${REPO_DIR:-${GITHUB_WORKSPACE:-}/target-repo}"
RESOLVE_SCRIPT="${SCRIPT_DIR}/resolve-precommit-tools.py"
INSTALL_SCRIPT="${SCRIPT_DIR}/install-precommit-tools.sh"

if [ -f "${TARGET_REPO}/.pre-commit-config.yaml" ] \
&& [ -f "${RESOLVE_SCRIPT}" ] \
&& [ -f "${INSTALL_SCRIPT}" ]; then
echo "Resolving pre-commit tool dependencies..."
MANIFEST="$(mktemp)"
if [ -f "${TARGET_REPO}/.pre-commit-config.yaml" ]; then
LOCAL_REG="$(mktemp)"
RESOLVE_ARGS=("${TARGET_REPO}")
PRECOMMIT_INSTALL_ARGS=(--target-dir "${TARGET_REPO}")
_BASE_BR="${TARGET_BRANCH:-}"
if [ -z "${_BASE_BR}" ]; then
_BASE_BR="$(git -C "${TARGET_REPO}" symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/origin/||')" || _BASE_BR=""
fi
if [ -n "${_BASE_BR}" ] \
&& git -C "${TARGET_REPO}" show "origin/${_BASE_BR}:.pre-commit-tools.yaml" > "${LOCAL_REG}" 2>/dev/null; then
RESOLVE_ARGS+=("--local-registry" "${LOCAL_REG}")
PRECOMMIT_INSTALL_ARGS+=(--local-registry "${LOCAL_REG}")
fi
if python3 "${RESOLVE_SCRIPT}" "${RESOLVE_ARGS[@]}" > "${MANIFEST}"; then
if [ -s "${MANIFEST}" ] && jq -e '.tools | length > 0' "${MANIFEST}" >/dev/null 2>&1; then
bash "${INSTALL_SCRIPT}" "${MANIFEST}"
else
echo "No additional pre-commit tools needed"
fi
else
echo "::warning::Pre-commit tool resolution failed — continuing without auto-install"
fi
rm -f "${MANIFEST}" "${LOCAL_REG}"
fullsend postrun precommit-install "${PRECOMMIT_INSTALL_ARGS[@]}"
rm -f "${LOCAL_REG}"
fi
export PATH="${HOME}/.local/bin:${PATH}"
echo "${HOME}/.local/bin" >> "${GITHUB_PATH:-/dev/null}"
Loading