feat: add runner conversion scripts and strengthen cutover automation
This commit is contained in:
85
runners-conversion/periodVault/verify.sh
Executable file
85
runners-conversion/periodVault/verify.sh
Executable file
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
GRADLEW="./gradlew"
|
||||
|
||||
if [[ ! -x "$GRADLEW" ]]; then
|
||||
echo "Missing or non-executable ./gradlew. Did you generate the Gradle wrapper?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the task list once (quiet output to reduce noise)
|
||||
ALL_TASKS="$($GRADLEW -q tasks --all || true)"
|
||||
|
||||
if [[ -z "$ALL_TASKS" ]]; then
|
||||
echo "Could not read Gradle tasks. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Prefer KMP aggregate task when available
|
||||
if echo "$ALL_TASKS" | grep -qE '^allTests[[:space:]]+-'; then
|
||||
TASKS="allTests"
|
||||
else
|
||||
# Fallback: collect common test tasks, excluding device-dependent instrumentation tests
|
||||
TASKS="$(
|
||||
echo "$ALL_TASKS" \
|
||||
| awk '{print $1}' \
|
||||
| grep -E '(^test$|Test$|^check$)' \
|
||||
| grep -v 'AndroidTest' \
|
||||
| grep -v 'connectedAndroidTest' \
|
||||
| grep -v 'deviceAndroidTest' \
|
||||
| sort -u \
|
||||
| tr '\n' ' '
|
||||
)"
|
||||
fi
|
||||
|
||||
# Strip spaces and validate
|
||||
if [[ -z "${TASKS// /}" ]]; then
|
||||
echo "No test tasks found. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Running: $GRADLEW $TASKS"
|
||||
# Run all tasks in one go (faster, simpler)
|
||||
$GRADLEW $TASKS
|
||||
|
||||
echo "==================="
|
||||
echo "ALL TESTS PASSED!"
|
||||
echo "==================="
|
||||
|
||||
# --- Commit, push, and create PR if on a feature branch ---
|
||||
|
||||
# Skip commit/push/PR when invoked from a git hook (prevents infinite loop)
|
||||
if [[ "${GIT_PUSH_IN_PROGRESS:-}" == "1" ]] || [[ -n "${GIT_DIR:-}" && "${GIT_DIR}" != ".git" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
MAIN_BRANCH="main"
|
||||
|
||||
if [[ "$BRANCH" == "$MAIN_BRANCH" ]]; then
|
||||
echo "On $MAIN_BRANCH — skipping commit/push/PR."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Stage all changes (except untracked files the user hasn't added)
|
||||
if git diff --quiet && git diff --cached --quiet && [[ -z "$(git ls-files --others --exclude-standard)" ]]; then
|
||||
echo "No changes to commit."
|
||||
else
|
||||
git add -A
|
||||
COMMIT_MSG="feat: $(echo "$BRANCH" | sed 's/^[0-9]*-//' | tr '-' ' ')"
|
||||
git commit -m "$COMMIT_MSG" || echo "Nothing to commit."
|
||||
fi
|
||||
|
||||
# Push branch to remote (skip hooks to avoid re-triggering verify.sh)
|
||||
GIT_PUSH_IN_PROGRESS=1 git push --no-verify -u origin "$BRANCH"
|
||||
|
||||
# Create PR if one doesn't already exist for this branch
|
||||
if gh pr view "$BRANCH" --json state >/dev/null 2>&1; then
|
||||
PR_URL="$(gh pr view "$BRANCH" --json url -q '.url')"
|
||||
echo "PR already exists: $PR_URL"
|
||||
else
|
||||
TITLE="$(echo "$BRANCH" | sed 's/^[0-9]*-//' | tr '-' ' ' | awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) substr($i,2)}1')"
|
||||
PR_URL="$(gh pr create --title "$TITLE" --body "Automated PR from verify.sh" --base "$MAIN_BRANCH" --head "$BRANCH")"
|
||||
echo "PR created: $PR_URL"
|
||||
fi
|
||||
Reference in New Issue
Block a user