| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- name: Update copyright years
- on:
- schedule:
- - cron: '42 13 3 1 *' # 3rd of January at 13:42 UTC
- workflow_dispatch:
- inputs:
- year:
- type: number
- required: true
- description: 'The (new) year to update the copyright to'
- permissions:
- contents: write
- pull-requests: write
- jobs:
- update-copyrights:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
- - name: Determine years
- id: years
- env:
- TRIGGER_NAME: ${{ github.event_name }}
- YEAR_INPUT: ${{ inputs.year }}
- run: |
- if [ "${TRIGGER_NAME}" = 'workflow_dispatch' ]; then
- NEW_YEAR=${YEAR_INPUT}
- else
- NEW_YEAR=$(date '+%Y')
- fi
- echo "new-year=${NEW_YEAR}" >> "${GITHUB_OUTPUT}"
- echo "old-year=$((NEW_YEAR - 1))" >> "${GITHUB_OUTPUT}"
- - name: Checkout branch
- id: branch
- env:
- OLD_YEAR: ${{ steps.years.outputs.old-year }}
- NEW_YEAR: ${{ steps.years.outputs.new-year }}
- run: |
- BRANCH_NAME="update-copyright/${OLD_YEAR}-to-${NEW_YEAR}"
- echo "branch-name=${BRANCH_NAME}" >> "${GITHUB_OUTPUT}"
- git checkout -B "${BRANCH_NAME}"
- - name: Update copyrights
- run: ./Scripts/update-copyright.sh
- env:
- OLD_YEAR: ${{ steps.years.outputs.old-year }}
- NEW_YEAR: ${{ steps.years.outputs.new-year }}
- - name: Commit changes if needed
- id: commit
- env:
- ACTOR: ${{ github.actor }}
- OLD_YEAR: ${{ steps.years.outputs.old-year }}
- NEW_YEAR: ${{ steps.years.outputs.new-year }}
- BRANCH_NAME: ${{ steps.branch.outputs.branch-name }}
- run: |
- if [ -n "$(git status --porcelain)" ]; then
- git config --local user.email "${ACTOR}@noreply.github.com"
- git config --local user.name "${ACTOR}"
- git add .
- git commit -m "Update copyright from ${OLD_YEAR} to ${NEW_YEAR}"
- git push --set-upstream origin "${BRANCH_NAME}"
- echo 'has-changes=true' >> "${GITHUB_OUTPUT}"
- else
- echo 'has-changes=false' >> "${GITHUB_OUTPUT}"
- fi
- - name: Create PR if needed
- if: ${{ steps.commit.outputs.has-changes == 'true' }}
- env:
- OLD_YEAR: ${{ steps.years.outputs.old-year }}
- NEW_YEAR: ${{ steps.years.outputs.new-year }}
- REPO: ${{ github.repository }}
- SOURCE_BRANCH: ${{ steps.branch.outputs.branch-name }}
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- TARGET_BRANCH="$(gh repo view "${REPO}" --json 'defaultBranchRef' --jq '.defaultBranchRef.name')"
- PR_COUNT="$(gh pr list \
- --repo "${REPO}" \
- --state 'open' \
- --head "${SOURCE_BRANCH}" \
- --base "${TARGET_BRANCH}" \
- --json 'number' \
- --jq 'length')"
- if [ "${PR_COUNT}" -eq 0 ]; then
- gh pr create \
- --repo "${REPO}" \
- --head "${SOURCE_BRANCH}" \
- --base "${TARGET_BRANCH}" \
- --title "Update copyright years from ${OLD_YEAR} to ${NEW_YEAR}" \
- --body "This is an automated PR that updates the copyright years from \`${OLD_YEAR}\` to \`${NEW_YEAR}\`."
- fi
|