GitHub Action
The Dragon Code Styler
The Dragon Code Styler
is an opinionated PHP code style fixer for minimalists.
Codestyler
is built on top of Laravel Pint
and PHP-CS-Fixer, and makes it simple to ensure that your code style
stays clean and consistent.
By default, Codestyler
does not require any configuration and will fix code style issues in your code by following
the opinionated coding style of The Dragon Code
based on the PER
rule
set.
- PHP: ^8.1
- Composer: ^2.0
composer global require dragon-code/codestyler
When you run the commands in the base path of the project, the composer.json
file will be automatically read, from
which the minimum PHP version for your project will be taken.
This is necessary to draw up rules for applying the Codestyler.
For example, if your project supports PHP 8.0 and above, and you use the mkdir($path, 0755)
function in it, then
applying the rules for PHP 8.0 will break your code because it
will replace 0755
with 0o755
(mkdir($path, 0o755)
).
To prevent this from happening, we check the minimum PHP version.
Please note that the composer.json
file is only read if the script execution is started in the folder with it.
# Check code-style
codestyle --test
# Fix code-style
codestyle
# Update `.editorconfig`
codestyle editorconfig
# Update Dependabot rules
codestyle dependabot
# Publishes code-style settings for the phpStorm IDE
codestyle phpstorm
# Show list of available commands
codestyle list
The path to fix
codestyle foo/bar
Test for code style errors without fixing them
codestyle --test
The configuration that should be used. The target directory will read the pint.json
file
from Laravel Pint, minus the style set.
codestyle --config=foo/bar
Allows to set whether risky rules may run:
codestyle --risky --test
codestyle --risky
Only fix files that have uncommitted changes.
codestyle --dirty
The output format that should be used.
codestyle --format
List of available formats:
- checkstyle
- gitlab
- json
- junit
- txt
- xml
To view the list of available commands, you can call the console command:
codestyle list
To view extended information on a command, you can use the help
option. For example,
codestyle --help
codestyle dependabot --help
codestyle editorconfig --help
Create a new .github/workflows/code-style.yml
file and add the content to it:
name: Code Style
on: [ push, pull_request ]
jobs:
fix:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Code style fix
uses: TheDragonCode/codestyler@v3
with:
# This token uses GitHub Actions to execute code.
# Required when `fix` is `true`.
# The default value is `${{ secrets.GITHUB_TOKEN }}`.
github_token: ${{ secrets.CODE_STYLE_TOKEN }}
# Activates the mode of accepting changes with the creation
# of commits.
fix: true
# Activates the actualization of the `.editorconfig` file.
# Works only when the `fix` option is enabled.
# By default, true
editorconfig: true
# Activates Dependabot file processing.
# Works only when the `fix` option is enabled.
# By default, true
dependabot: true
# Normalizing `composer.json`.
# Works only when the `fix` option is enabled.
# By default, true
normalize: true
# Increase the verbosity of messages for debug
# By default, false
verbose: true
Since the changes are pushed to the master branch, GitHub can block this action with a security policy.
To solve this problem, you need to
be create
of your
account token and specify it
in the Actions secrets
section of the repository or organization.
The name of the variable containing the token must be passed to the github_token
key.
name: Code Style
on: [ push, pull_request ]
permissions: write-all
jobs:
style:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Detect job name
id: detect
run: |
[[ ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} ]] && NAME="Fix" || NAME="Check"
echo "name=${NAME}" >> $GITHUB_OUTPUT
- name: ${{ steps.detect.outputs.name }} the code style
uses: TheDragonCode/codestyler@v3
with:
github_token: ${{ secrets.CODE_STYLE_TOKEN }}
fix: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
composer global require dragon-code/codestyler
codestyle <command>
After executing the codestyle editorconfig
console command, a .editorconfig
file will be added to your application.
If the file already exists, it will be replaced.
In order for your IDE to read the code style settings from it, make sure its support is enabled in the settings.
For example, in phpStorm
the setting is in
the File | Settings | Editor | Code Style:
You can also use the codestyle phpstorm
console command to publish the schema xml file to phpStorm.
You can import this file into the IDE.
By default, the linter scans all files in the current launch folder, except for folders such as vendor
, node_modules
and .github
.
- uses: TheDragonCode/codestyler@v3
By default, the linter only checks the code-style. If you want to apply the changes, then you need to activate this option:
- uses: TheDragonCode/codestyler@v3
with:
github_token: ${{ secrets.CODE_STYLE_TOKEN }}
fix: true
By default, GitHub Action does not allow versioning, so our project will create a configuration file for it, which will check for new versions once a day.
When Dependabot detects new versions of containers, it will automatically create a PR to your repository. So you don't need to keep track of updates - Dependabot will do everything for you 💪😎
If the .github/dependabot.yml
file has already been created, we will check it and add the necessary rules. So don't be
afraid, nothing will be deleted 😎
Note
Files will be created only if you have specified
fix: true
.Or you can manually run the Dependabot rule creation script by executing the
codestyle dependabot
command.
This package is licensed under the MIT License.