12 Commits

Author SHA1 Message Date
Claude
6c29ec09bf Add optional only_show_changed flag to show changed files only
This is a non-breaking new feature that addresses issue #129.

New input parameter:
- only_show_changed (default: false)
  When true, shows only files that were changed by Prettier instead of
  all processed files. Useful for large projects where output is
  overwhelming.

Backward compatibility:
- When flag is NOT set or is false: behavior stays exactly as before
  (shows "Files:" header and all prettier output)
- When flag is set to true: shows only "Changed files:" with git status
  output for modified files

In projects with ~2,000 files, it's hard to see which were changed.
This optional flag makes it easy to identify modified files without
affecting existing users who rely on the current output format.

Closes #129
Refs prettier/prettier#2611
2025-11-17 15:18:45 +00:00
8c18391fdc Merge pull request #146 from creyD/dev
Minor Update
2025-06-09 23:54:26 +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 45 additions and 17 deletions

View File

@@ -31,6 +31,7 @@ A GitHub action for styling files with [prettier](https://prettier.io).
| 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)
| 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.
@@ -59,7 +60,7 @@ jobs:
uses: actions/checkout@v4
- name: Prettify code
uses: creyD/prettier_action@v4.4
uses: creyD/prettier_action@v4.6
with:
# This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md}
@@ -88,7 +89,7 @@ jobs:
fetch-depth: 0
- name: Prettify code
uses: creyD/prettier_action@v4.4
uses: creyD/prettier_action@v4.6
with:
# This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md}
@@ -118,7 +119,7 @@ jobs:
persist-credentials: false
- name: Prettify code
uses: creyD/prettier_action@v4.4
uses: creyD/prettier_action@v4.6
with:
prettier_options: --write **/*.{js,md}
only_changed: True
@@ -149,7 +150,7 @@ jobs:
persist-credentials: false
- name: Prettify code
uses: creyD/prettier_action@v4.4
uses: creyD/prettier_action@v4.6
with:
dry: True
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}

View File

@@ -70,6 +70,14 @@ inputs:
description: Which identity is used for git name/email when committing changes. Needs to be one of "actions" or "author".
required: false
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
only_show_changed:
description: Only show files that were changed by Prettier instead of all processed files. Useful for large projects where output is overwhelming.
required: false
default: false
runs:
using: "composite"
@@ -97,6 +105,8 @@ runs:
INPUT_GITHUB_TOKEN: ${{ inputs.github_token }}
INPUT_CLEAN_NODE_FOLDER: ${{ inputs.clean_node_folder }}
INPUT_GIT_IDENTITY: ${{ inputs.git_identity }}
INPUT_ALLOW_OTHER_PLUGINS: ${{ inputs.allow_other_plugins }}
INPUT_ONLY_SHOW_CHANGED: ${{ inputs.only_show_changed }}
branding:
icon: "award"

View File

@@ -20,7 +20,7 @@ EOF
# If GIT_IDENTITY="actor"
if [ "$INPUT_GIT_IDENTITY" = "author" ]; then
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
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Action"
@@ -49,26 +49,43 @@ npm install --silent prettier@$INPUT_PRETTIER_VERSION
# Install plugins
if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then
for plugin in $INPUT_PRETTIER_PLUGINS; do
echo "Checking plugin: $plugin"
# check regex against @prettier/xyz
if ! echo "$plugin" | grep -Eq '(@prettier\/plugin-|(@[a-z\-]+\/)?prettier-plugin-){1}([a-z\-]+)'; then
echo "$plugin does not seem to be a valid @prettier/plugin-x plugin. Exiting."
exit 1
fi
done
if [ "$INPUT_ALLOW_OTHER_PLUGINS" != "true" ]; then
for plugin in $INPUT_PRETTIER_PLUGINS; do
echo "Checking plugin: $plugin"
# check regex against @prettier/xyz
if ! echo "$plugin" | grep -Eq '(@prettier\/plugin-|(@[a-z\-]+\/)?prettier-plugin-){1}([a-z\-]+)'; then
echo "$plugin does not seem to be a valid @prettier/plugin-x plugin. Exiting."
exit 1
fi
done
fi
npm install --silent $INPUT_PRETTIER_PLUGINS
fi
)
PRETTIER_RESULT=0
echo "Prettifying files..."
echo "Files:"
prettier $INPUT_PRETTIER_OPTIONS \
|| { PRETTIER_RESULT=$?; echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"; exit 1; } >> $GITHUB_STEP_SUMMARY
if [ "$INPUT_ONLY_SHOW_CHANGED" = "true" ]; then
# New behavior: don't show all files, only show changed files later
npx prettier $INPUT_PRETTIER_OPTIONS \
|| { PRETTIER_RESULT=$?; echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"; exit 1; }
else
# Original behavior: show all files processed by prettier
echo "Files:"
npx prettier $INPUT_PRETTIER_OPTIONS \
|| { PRETTIER_RESULT=$?; echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"; exit 1; } >> $GITHUB_STEP_SUMMARY
fi
echo "Prettier result: $PRETTIER_RESULT"
# Show only the files that were changed by prettier (when flag is enabled)
if [ "$INPUT_ONLY_SHOW_CHANGED" = "true" ] && _git_changed; then
echo ""
echo "Changed files:"
git status --short | tee -a $GITHUB_STEP_SUMMARY
echo ""
fi
# Removing the node_modules folder, so it doesn't get committed if it is not added in gitignore
if $INPUT_CLEAN_NODE_FOLDER; then
echo "Deleting node_modules/ folder..."
@@ -87,7 +104,7 @@ fi
# 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
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
if $INPUT_ONLY_CHANGED; then
BASE_BRANCH=HEAD~1