Proposal: automatically add strict types #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Add Strict Types | |
on: | |
pull_request: | |
branches: | |
- trunk | |
jobs: | |
add-strict-types: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.1' | |
- name: Check for new PHP files | |
id: check | |
run: | | |
git fetch origin +refs/heads/trunk:refs/remotes/origin/trunk --quiet | |
NEW_PHP_FILES=$(git diff --name-only refs/remotes/origin/trunk HEAD -- '*.php' | xargs -r grep -LE 'declare\( strict_types=1 \)' || true) | |
if [ -n "$NEW_PHP_FILES" ]; then | |
echo "::set-output name=strict_types_needed::true" | |
echo "New PHP files without strict types: $NEW_PHP_FILES" | |
else | |
echo "::set-output name=strict_types_needed::false" | |
fi | |
- name: Add strict types to new PHP files | |
if: steps.check.outputs.strict_types_needed == 'true' | |
run: | | |
git fetch origin trunk:trunk | |
for file in $(git diff --name-only origin/trunk...HEAD -- '*.php' | xargs grep -LE 'declare\( strict_types=1 \)'); do | |
sed -i '1s/^/<?php declare( strict_types=1 );\n/' "$file" | |
git add "$file" | |
done | |
git commit -m "Add strict types to new PHP files" | |
git push -u origin HEAD:refs/heads/add-strict-types-${{ github.sha }} | |
- name: Comment on PR | |
if: steps.check.outputs.strict_types_needed == 'true' | |
uses: thollander/actions-comment-pull-request@v1 | |
with: | |
message: "We've found some PHP files that don't have strict types. This commit adds them. Branch: add-strict-types-${{ github.sha }}" | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# - name: Create PR | |
# if: steps.check.outputs.strict_types_needed == 'true' | |
# uses: peter-evans/create-pull-request@v3 | |
# with: | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# commit-message: "Add strict types to new PHP files" | |
# title: "[Automation]: Add strict types" | |
# body: "We've found some PHP files that don't have strict types. This PR adds them." | |
# branch: add-strict-types-${{ github.sha }} | |
# branch-suffix: timestamp | |
# labels: Automation |