diff --git a/.github/workflows/auto-merge-dependabot.yml b/.github/workflows/auto-merge-dependabot.yml new file mode 100644 index 0000000..945d5e3 --- /dev/null +++ b/.github/workflows/auto-merge-dependabot.yml @@ -0,0 +1,33 @@ +name: Auto-merge Dependabot PRs + +on: + workflow_run: + workflows: ["Test"] + types: [completed] + +permissions: + contents: write + pull-requests: write + +jobs: + auto-merge: + if: >- + github.event.workflow_run.event == 'pull_request' && + github.event.workflow_run.conclusion == 'success' && + github.event.workflow_run.actor.login == 'dependabot[bot]' + runs-on: ubuntu-latest + steps: + - name: Find and merge Dependabot PR + env: + GH_TOKEN: ${{ github.token }} + REPO: ${{ github.repository }} + HEAD_SHA: ${{ github.event.workflow_run.head_sha }} + run: | + pr_number=$(gh api "repos/$REPO/commits/$HEAD_SHA/pulls" \ + --jq 'map(select(.user.login == "dependabot[bot]")) | .[0].number') + if [ -z "$pr_number" ] || [ "$pr_number" = "null" ]; then + echo "No Dependabot PR found for SHA $HEAD_SHA" + exit 0 + fi + gh pr review --approve "$pr_number" -R "$REPO" + gh pr merge --squash "$pr_number" -R "$REPO" diff --git a/.github/workflows/generate-template.sh b/.github/workflows/generate-template.sh index b650af9..eaa798e 100755 --- a/.github/workflows/generate-template.sh +++ b/.github/workflows/generate-template.sh @@ -28,8 +28,8 @@ while IFS= read -r -d '' entry; do fi done < <("${FILE_CMD[@]}") -# Remove files only needed for template generation -rm --recursive --force -- "$DEST/.template" "$DEST/.github/workflows/generate-template."{yml,sh} +# Remove files only needed for template generation or this specific repo +rm --recursive --force -- "$DEST/.template" "$DEST/.github/workflows/generate-template."{yml,sh} "$DEST/.github/workflows/auto-merge-dependabot.yml" # Normalize version so generated projects don't inherit the template repo's version sed --in-place 's/^version = ".*"/version = "0.1.0"/' "$DEST/pyproject.toml"