From 64ca4af225e626c64a5b0f4a8ae516baf02b3558 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Mon, 6 Jan 2025 18:19:20 +0100 Subject: [PATCH] add a github workflow checking for x-maintenance-intent in the opam files of the PR --- .github/workflows/maintenance-intent.yml | 51 ++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/maintenance-intent.yml diff --git a/.github/workflows/maintenance-intent.yml b/.github/workflows/maintenance-intent.yml new file mode 100644 index 00000000000..2d31c25d289 --- /dev/null +++ b/.github/workflows/maintenance-intent.yml @@ -0,0 +1,51 @@ +name: maintenance-intent present + +on: + pull_request + +jobs: + changed_files: + runs-on: ubuntu-latest + name: Check changed files for x-maintenance-intent field + steps: + - uses: actions/checkout@v4 + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v45 + + - name: Find opam files without x-maintenance-intent field + id: missing-intent + env: + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + for file in ${ALL_CHANGED_FILES}; do + bn=$(basename ${file}) + if [ $bn = "opam" ]; then + maint_int_present=$(grep "^x-maintenance-intent: " ${file} | wc -l || true) + if [ "$maint_int_present" -eq 0 ]; then + echo "- $file" >> maint-int.md + fi; + fi; + done; + if [ -f maint-int.md ]; then + echo "modified=true" >> $GITHUB_OUTPUT + echo "The following opam files lack the x-maintenance-intent field:" > maint-int2.md + echo "" >> maint-int2.md + cat maint-int.md >> maint-int2.md + echo "" >> maint-int2.md + echo "Please look at https://github.com/ocaml/opam-repository/blob/master/governance/policies/archiving.md#specification-of-the-x--fields-used-in-the-archiving-process for further information." >> maint-int2.md + mv maint-int2.md maint-int.md + else + echo "modified=false" >> $GITHUB_OUTPUT + fi + + - name: Add PR Comment + if: steps.missing-intent.outputs.modified == 'true' + uses: marocchino/sticky-pull-request-comment@v2 + with: + recreate: true + path: maint-int.md + + - name: Write to Job Summary + if: steps.missing-intent.outputs.modified == 'true' + run: cat maint-int.md >> $GITHUB_STEP_SUMMARY