2 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
3 changed files with 48 additions and 33 deletions

View File

@@ -13,26 +13,25 @@ A GitHub action for styling files with [prettier](https://prettier.io).
### Parameters
| 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 |
| 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) |
| 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) |
| commit_options | :x: | - | Custom `git commit` 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) |
| 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` |
| 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. |
| 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) |
| 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) |
| 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 |
| 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) |
| 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) |
| commit_options | :x: | - | Custom git commit options |
| 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) |
| 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` |
| 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. |
| 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)|
| 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.
@@ -58,7 +57,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Prettify code
uses: creyD/prettier_action@v4.6
@@ -82,7 +81,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
@@ -112,7 +111,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
@@ -143,7 +142,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.head_ref }}

View File

@@ -16,9 +16,6 @@ inputs:
description: Update the current commit instead of creating a new one
required: false
default: false
add_options:
description: Git add options
required: false
commit_options:
description: Commit options
required: false
@@ -77,6 +74,10 @@ inputs:
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"
@@ -90,7 +91,6 @@ runs:
INPUT_COMMIT_MESSAGE: ${{ inputs.commit_message }}
INPUT_COMMIT_DESCRIPTION: ${{ inputs.commit_description }}
INPUT_SAME_COMMIT: ${{ inputs.same_commit }}
INPUT_ADD_OPTIONS: ${{ inputs.add_options }}
INPUT_COMMIT_OPTIONS: ${{ inputs.commit_options }}
INPUT_PUSH_OPTIONS: ${{ inputs.push_options }}
INPUT_FILE_PATTERN: ${{ inputs.file_pattern }}
@@ -106,6 +106,7 @@ runs:
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

@@ -65,12 +65,27 @@ fi
PRETTIER_RESULT=0
echo "Prettifying files..."
echo "Files:"
npx 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..."
@@ -125,11 +140,11 @@ if _git_changed; then
exit 1
fi
else
# Calling method to configure the git environment
# Calling method to configure the git environemnt
_git_setup
# Add changes to git
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}"
git add "${INPUT_FILE_PATTERN}" || echo "Problem adding your files with pattern ${INPUT_FILE_PATTERN}"
if $INPUT_NO_COMMIT; then
echo "There are changes that won't be commited, you can use an external job to do so."