Skip to content

Update License

Update License #70

name: Update License
on:
push:
branches: main
paths: .github/workflows/update-license.yml
schedule:
- cron: '0 0 1 1 *'
workflow_dispatch:
permissions:
contents: read
concurrency: update-license
jobs:
update-license:
name: Update License
runs-on: ubuntu-latest
timeout-minutes: 5
env:
REGEX: ^(((\/\/|#) )?Copyright \(c\) )[0-9]{4}( Devon Powell)$
steps:
- name: Checkout
uses: actions/[email protected]
- name: Determine info
shell: bash
id: info
run: |
OLD_YEAR=$(grep -oEi "$REGEX" LICENSE | grep -oEi '[0-9]{4}')
NEW_YEAR=$(date +%Y)
UPDATE_TITLE="Bump license year from $OLD_YEAR to $NEW_YEAR"
UPDATE_BODY="$UPDATE_TITLE."
echo "license-year=$NEW_YEAR" >> $GITHUB_OUTPUT
echo "update-title=$UPDATE_TITLE" >> $GITHUB_OUTPUT
echo "update-body=$UPDATE_BODY" >> $GITHUB_OUTPUT
- name: Update licenses
run: >
find . -type f -not -path './.git/*' -and
-iregex '^.*\(\.\(h\|c\|c\.in\)\|LICENSE\)$'
-exec sed -i -E "s/$REGEX/\1$YEAR\4/" {} \;
env:
YEAR: ${{steps.info.outputs.license-year}}
- name: Generate app token
id: app-token
uses: actions/[email protected]
with:
app-id: ${{secrets.GH_APP_ID}}
private-key: ${{secrets.GH_APP_PRIVATE_KEY}}
- name: Generate user info
id: user-info
run: |
USER_NAME="$GH_APP_SLUG[bot]"
USER_ID=$(gh api "/users/$USER_NAME" --jq .id)
USER_EMAIL="[email protected]"
echo "id=$USER_ID" >> $GITHUB_OUTPUT
echo "name=$USER_NAME" >> $GITHUB_OUTPUT
echo "[email protected]" >> $GITHUB_OUTPUT
echo "commit-author=$USER_NAME <$USER_EMAIL>" >> $GITHUB_OUTPUT
env:
GH_APP_SLUG: ${{steps.app-token.outputs.app-slug}}
GH_TOKEN: ${{steps.app-token.outputs.token}}
- name: Handle changes
uses: peter-evans/[email protected]
id: changes
with:
token: ${{steps.app-token.outputs.token}}
commit-message: ${{steps.info.outputs.update-title}}
author: ${{steps.user-info.outputs.commit-author}}
committer: ${{steps.user-info.outputs.commit-author}}
add-paths: |
LICENSE
*.c.in
*.h
*.c
branch: auto/update-license
delete-branch: true
title: ${{steps.info.outputs.update-title}}
body: ${{steps.info.outputs.update-body}}
labels: auto
- name: Enable auto-merge
if: steps.changes.outputs.pull-request-operation == 'created'
run: gh pr merge --auto --squash "$PULL_REQUEST_URL"
env:
PULL_REQUEST_URL: ${{steps.changes.outputs.pull-request-url}}
GITHUB_TOKEN: ${{steps.app-token.outputs.token}}