12 Commits
v4.4 ... dev

Author SHA1 Message Date
Oliver Kopp
c1711cdd30 Update actions/checkout in README.md (#147)
Co-authored-by: Conrad <grosserconrad@gmail.com>
2025-09-23 15:35:52 +02:00
Oluf Lorenzen
bf5539213f feat: allow passing options to git-add (#150)
* feat: allow passing options to git-add

* doc: small cleanup

* chore: typo, detailed error message on git-add

---------

Co-authored-by: Conrad <grosserconrad@gmail.com>
2025-09-10 14:48:45 +02:00
6b98d6d1d4 Merge branch 'master' into dev 2025-06-09 23:50:38 +02:00
afbe64738b Update README.md 2025-06-09 23:45:59 +02:00
Derek Ditch
6a7b2d092f Use npx to execute prettier (#145)
* fix: bumped version in readme

* Use npx to execute prettier

Fixes: https://github.com/creyD/prettier_action/issues/113

---------

Co-authored-by: Conrad <grosserconrad@gmail.com>
2025-06-09 23:43:18 +02:00
af8ff244c5 fix: #144 Moved to ID based noreply pattern 2025-05-09 14:39:25 +02:00
acebb0f4d5 fix: bumped version in readme 2025-05-08 13:33:09 +02:00
b185d84b38 fix: bumped version in readme 2025-05-08 13:32:56 +02:00
5e54c68940 Merge pull request #143 from creyD/dev
Fixed a bug with ONLY_CHANGED_PR and added ALLOW_OTHER_PLUGINS
2025-05-08 13:31:00 +02:00
ff6bab6030 fix: fixed a bug with INPUT_ONLY_CHANGED_PR 2025-05-08 13:28:44 +02:00
22eb028766 fix: updated docs for action 2025-05-08 13:26:14 +02:00
e2704493af feat: #98 added option to allow for other plugins 2025-05-08 13:20:52 +02:00
3 changed files with 52 additions and 39 deletions

View File

@@ -14,23 +14,25 @@ A GitHub action for styling files with [prettier](https://prettier.io).
### Parameters ### Parameters
| Parameter | Required | Default | Description | | Parameter | Required | Default | Description |
| - | :-: | :-: | - | | ------------------- | :------: | :-------------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| dry | :x: | `false` | Runs the action in dry mode. Files wont get changed and the action fails if there are unprettified files. Recommended to use with prettier_options --check | | dry | :x: | `false` | Runs the action in dry mode. Files wont get changed and the action fails if there are unprettified files. Recommended to use with prettier_options --check |
| no_commit | :x: | `false` | Can be used to avoid committing the changes (useful when another workflow step commits after this one anyways; can be combined with dry mode) | | no_commit | :x: | `false` | Can be used to avoid committing the changes (useful when another workflow step commits after this one anyways; can be combined with dry mode) |
| prettier_version | :x: | `latest` | Specific prettier version (by default use latest) | | prettier_version | :x: | `latest` | Specific prettier version (by default use latest) |
| working_directory | :x: | `${{ github.action_path }}` | Specify a directory to cd into before installing prettier and running it, use relative file path to the repository root for example `app/` | | working_directory | :x: | `${{ github.action_path }}` | Specify a directory to cd into before installing prettier and running it, use relative file path to the repository root for example `app/` |
| prettier_options | :x: | `"--write **/*.js"` | Prettier options (by default it applies to the whole repository) | | prettier_options | :x: | `"--write **/*.js"` | Prettier options (by default it applies to the whole repository) |
| commit_options | :x: | - | Custom git commit options | | commit_options | :x: | - | Custom `git commit` options |
| push_options | :x: | - | Custom git push options | | add_options | :x: | - | Custom `git add` options, e.g. `--update` to only add already known files. |
| push_options | :x: | - | Custom `git push` options |
| same_commit | :x: | `false` | Update the current commit instead of creating a new one, created by [Joren Broekema](https://github.com/jorenbroekema), this command works only with the checkout action set to fetch depth '0' (see example 2) | | same_commit | :x: | `false` | Update the current commit instead of creating a new one, created by [Joren Broekema](https://github.com/jorenbroekema), this command works only with the checkout action set to fetch depth '0' (see example 2) |
| commit_message | :x: | `"Prettified Code!"` | Custom git commit message, will be ignored if used with `same_commit` | | commit_message | :x: | `"Prettified Code!"` | Custom `git commit` message, will be ignored if used with `same_commit` |
| commit_description | :x: | - | Custom git extended commit message, will be ignored if used with `same_commit` | | commit_description | :x: | - | Custom git extended commit message, will be ignored if used with `same_commit` |
| file_pattern | :x: | `*` | Custom git add file pattern, can't be used with only_changed! | | file_pattern | :x: | `*` | Custom `git add` file pattern, can't be used with only_changed! |
| prettier_plugins | :x: | - | Install Prettier plugins, i.e. `"@prettier/plugin-php" "@prettier/plugin-other"`. Must be wrapped in quotes since @ is a reserved character in YAML. | | prettier_plugins | :x: | - | Install Prettier plugins, i.e. `"@prettier/plugin-php" "@prettier/plugin-other"`. Must be wrapped in quotes since @ is a reserved character in YAML. |
| clean_node_folder | :x: | `true` | Delete the node_modules folder before committing | | clean_node_folder | :x: | `true` | Delete the node_modules folder before committing |
| only_changed | :x: | `false` | Only prettify changed files, can't be used with file_pattern! This command works only with the checkout action set to fetch depth '0' (see example 2)| | only_changed | :x: | `false` | Only prettify changed files, can't be used with file_pattern! This command works only with the checkout action set to fetch depth '0' (see example 2) |
| github_token | :x: | `${{ github.token }}` | The default [GITHUB_TOKEN](https://docs.github.com/en/actions/reference/authentication-in-a-workflow#about-the-github_token-secret) or a [Personal Access Token](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token) | github_token | :x: | `${{ github.token }}` | The default [GITHUB_TOKEN](https://docs.github.com/en/actions/reference/authentication-in-a-workflow#about-the-github_token-secret) or a [Personal Access Token](https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token) |
| git_identity | :x: | `actions` | Set to `author` to use author's user as committer. This allows triggering [further workflow runs](https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs) | git_identity | :x: | `actions` | Set to `author` to use author's user as committer. This allows triggering [further workflow runs](https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs) |
| allow_other_plugins | :x: | `false` | Allow other plugins to be installed (prevents the @prettier-XYZ regex check) |
> Note: using the same_commit option may lead to problems if other actions are relying on the commit being the same before and after the prettier action has ran. Keep this in mind. > Note: using the same_commit option may lead to problems if other actions are relying on the commit being the same before and after the prettier action has ran. Keep this in mind.
@@ -56,10 +58,10 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Prettify code - name: Prettify code
uses: creyD/prettier_action@v4.4 uses: creyD/prettier_action@v4.6
with: with:
# This part is also where you can pass other options, for example: # This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md} prettier_options: --write **/*.{js,md}
@@ -80,7 +82,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
# Make sure the actual branch is checked out when running on pull requests # Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }} ref: ${{ github.head_ref }}
@@ -88,7 +90,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Prettify code - name: Prettify code
uses: creyD/prettier_action@v4.4 uses: creyD/prettier_action@v4.6
with: with:
# This part is also where you can pass other options, for example: # This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md} prettier_options: --write **/*.{js,md}
@@ -110,7 +112,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
fetch-depth: 0 fetch-depth: 0
ref: ${{ github.head_ref }} ref: ${{ github.head_ref }}
@@ -118,7 +120,7 @@ jobs:
persist-credentials: false persist-credentials: false
- name: Prettify code - name: Prettify code
uses: creyD/prettier_action@v4.4 uses: creyD/prettier_action@v4.6
with: with:
prettier_options: --write **/*.{js,md} prettier_options: --write **/*.{js,md}
only_changed: True only_changed: True
@@ -141,7 +143,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
fetch-depth: 0 fetch-depth: 0
ref: ${{ github.head_ref }} ref: ${{ github.head_ref }}
@@ -149,7 +151,7 @@ jobs:
persist-credentials: false persist-credentials: false
- name: Prettify code - name: Prettify code
uses: creyD/prettier_action@v4.4 uses: creyD/prettier_action@v4.6
with: with:
dry: True dry: True
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }} github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}

View File

@@ -16,6 +16,9 @@ inputs:
description: Update the current commit instead of creating a new one description: Update the current commit instead of creating a new one
required: false required: false
default: false default: false
add_options:
description: Git add options
required: false
commit_options: commit_options:
description: Commit options description: Commit options
required: false required: false
@@ -70,6 +73,10 @@ inputs:
description: Which identity is used for git name/email when committing changes. Needs to be one of "actions" or "author". description: Which identity is used for git name/email when committing changes. Needs to be one of "actions" or "author".
required: false required: false
default: "actions" default: "actions"
allow_other_plugins:
description: Allow other plugins to be installed. By default, we are checking if the plugins are actually prettier plugins.
required: false
default: false
runs: runs:
using: "composite" using: "composite"
@@ -83,6 +90,7 @@ runs:
INPUT_COMMIT_MESSAGE: ${{ inputs.commit_message }} INPUT_COMMIT_MESSAGE: ${{ inputs.commit_message }}
INPUT_COMMIT_DESCRIPTION: ${{ inputs.commit_description }} INPUT_COMMIT_DESCRIPTION: ${{ inputs.commit_description }}
INPUT_SAME_COMMIT: ${{ inputs.same_commit }} INPUT_SAME_COMMIT: ${{ inputs.same_commit }}
INPUT_ADD_OPTIONS: ${{ inputs.add_options }}
INPUT_COMMIT_OPTIONS: ${{ inputs.commit_options }} INPUT_COMMIT_OPTIONS: ${{ inputs.commit_options }}
INPUT_PUSH_OPTIONS: ${{ inputs.push_options }} INPUT_PUSH_OPTIONS: ${{ inputs.push_options }}
INPUT_FILE_PATTERN: ${{ inputs.file_pattern }} INPUT_FILE_PATTERN: ${{ inputs.file_pattern }}
@@ -97,6 +105,7 @@ runs:
INPUT_GITHUB_TOKEN: ${{ inputs.github_token }} INPUT_GITHUB_TOKEN: ${{ inputs.github_token }}
INPUT_CLEAN_NODE_FOLDER: ${{ inputs.clean_node_folder }} INPUT_CLEAN_NODE_FOLDER: ${{ inputs.clean_node_folder }}
INPUT_GIT_IDENTITY: ${{ inputs.git_identity }} INPUT_GIT_IDENTITY: ${{ inputs.git_identity }}
INPUT_ALLOW_OTHER_PLUGINS: ${{ inputs.allow_other_plugins }}
branding: branding:
icon: "award" icon: "award"

View File

@@ -20,7 +20,7 @@ EOF
# If GIT_IDENTITY="actor" # If GIT_IDENTITY="actor"
if [ "$INPUT_GIT_IDENTITY" = "author" ]; then if [ "$INPUT_GIT_IDENTITY" = "author" ]; then
git config --global user.name "$GITHUB_ACTOR" git config --global user.name "$GITHUB_ACTOR"
git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com" git config --global user.email "$GITHUB_ACTOR_ID+$GITHUB_ACTOR@users.noreply.github.com"
elif [ "$INPUT_GIT_IDENTITY" = "actions" ]; then elif [ "$INPUT_GIT_IDENTITY" = "actions" ]; then
git config --global user.email "actions@github.com" git config --global user.email "actions@github.com"
git config --global user.name "GitHub Action" git config --global user.name "GitHub Action"
@@ -49,6 +49,7 @@ npm install --silent prettier@$INPUT_PRETTIER_VERSION
# Install plugins # Install plugins
if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then
if [ "$INPUT_ALLOW_OTHER_PLUGINS" != "true" ]; then
for plugin in $INPUT_PRETTIER_PLUGINS; do for plugin in $INPUT_PRETTIER_PLUGINS; do
echo "Checking plugin: $plugin" echo "Checking plugin: $plugin"
# check regex against @prettier/xyz # check regex against @prettier/xyz
@@ -57,6 +58,7 @@ if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then
exit 1 exit 1
fi fi
done done
fi
npm install --silent $INPUT_PRETTIER_PLUGINS npm install --silent $INPUT_PRETTIER_PLUGINS
fi fi
) )
@@ -64,7 +66,7 @@ fi
PRETTIER_RESULT=0 PRETTIER_RESULT=0
echo "Prettifying files..." echo "Prettifying files..."
echo "Files:" echo "Files:"
prettier $INPUT_PRETTIER_OPTIONS \ npx prettier $INPUT_PRETTIER_OPTIONS \
|| { PRETTIER_RESULT=$?; echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"; exit 1; } >> $GITHUB_STEP_SUMMARY || { PRETTIER_RESULT=$?; echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"; exit 1; } >> $GITHUB_STEP_SUMMARY
echo "Prettier result: $PRETTIER_RESULT" echo "Prettier result: $PRETTIER_RESULT"
@@ -87,7 +89,7 @@ fi
# If running under only_changed, reset every modified file that wasn't also modified in the last commit # If running under only_changed, reset every modified file that wasn't also modified in the last commit
# This allows only_changed and dry to work together, and simplified the non-dry logic below # This allows only_changed and dry to work together, and simplified the non-dry logic below
if [ $INPUT_ONLY_CHANGED = true ] || [$INPUT_ONLY_CHANGED_PR = true ] ; then if [ $INPUT_ONLY_CHANGED = true ] || [ $INPUT_ONLY_CHANGED_PR = true ] ; then
BASE_BRANCH=origin/$GITHUB_BASE_REF BASE_BRANCH=origin/$GITHUB_BASE_REF
if $INPUT_ONLY_CHANGED; then if $INPUT_ONLY_CHANGED; then
BASE_BRANCH=HEAD~1 BASE_BRANCH=HEAD~1
@@ -123,11 +125,11 @@ if _git_changed; then
exit 1 exit 1
fi fi
else else
# Calling method to configure the git environemnt # Calling method to configure the git environment
_git_setup _git_setup
# Add changes to git # Add changes to git
git add "${INPUT_FILE_PATTERN}" || echo "Problem adding your files with pattern ${INPUT_FILE_PATTERN}" git add ${INPUT_ADD_OPTIONS:+"$INPUT_ADD_OPTIONS"} "${INPUT_FILE_PATTERN}" || echo -e "Problem adding your files via 'git add':\n flags: ${INPUT_ADD_OPTIONS:+"$INPUT_ADD_OPTIONS"}\n pattern: ${INPUT_FILE_PATTERN}"
if $INPUT_NO_COMMIT; then if $INPUT_NO_COMMIT; then
echo "There are changes that won't be commited, you can use an external job to do so." echo "There are changes that won't be commited, you can use an external job to do so."