Proposal: automatically add strict types #8
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: Add strict types to new PHP files | |
id: add_strict_types | |
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 \)') | |
if [ -n "$NEW_PHP_FILES" ]; then | |
echo "$NEW_PHP_FILES" | xargs -I {} sed -i '1s|^|<?php declare( strict_types=1 );\n|' {} | |
git add $NEW_PHP_FILES | |
git commit -m "Add strict types to new PHP files" | |
git push -u origin HEAD:refs/heads/add-strict-types-${{ github.sha }} | |
echo "::set-output name=strict_types_needed::true" | |
else | |
echo "No PHP files need strict types." | |
echo "::set-output name=strict_types_needed::false" | |
fi | |
- name: Comment on PR | |
if: steps.add_strict_types.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.add_strict_types.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 |