4 Commits

Author SHA1 Message Date
Claude
a5f1df5578 Add use_repo_config parameter to automatically detect prettier configuration
This addresses GitHub issue #41 by adding an optional `use_repo_config` parameter
that allows the action to automatically detect and use the repository's prettier
configuration files and .prettierignore.

Changes:
- Added `use_repo_config` input parameter (default: false for backward compatibility)
- Implemented config file detection in entrypoint.sh for all prettier config formats
- Automatically changes file pattern to current directory when using repo config
- Provides helpful messages about found config files and warnings when none exist
- Updated README with new parameter documentation and Example 5

Benefits:
- Users no longer need to manually specify --config or --ignore-path
- Eliminates confusion about whether config files are being used
- Maintains backward compatibility (opt-in via parameter)
- Supports all prettier configuration file formats

Related: #41
2025-11-17 15:40:12 +00:00
Claude
68d6b720fe Merge latest dev changes 2025-11-17 15:37:02 +00:00
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
3 changed files with 119 additions and 25 deletions

View File

@@ -13,25 +13,27 @@ 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. |
| 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) | | push_options | :x: | - | Custom `git push` options |
| commit_message | :x: | `"Prettified Code!"` | Custom git commit message, will be ignored if used with `same_commit` | | 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_description | :x: | - | Custom git extended 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` |
| file_pattern | :x: | `*` | Custom git add file pattern, can't be used with only_changed! | | commit_description | :x: | - | Custom git extended commit message, will be ignored if used with `same_commit` |
| 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. | | file_pattern | :x: | `*` | Custom `git add` file pattern, can't be used with only_changed! |
| clean_node_folder | :x: | `true` | Delete the node_modules folder before committing | | 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. |
| 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)| | clean_node_folder | :x: | `true` | Delete the node_modules folder before committing |
| 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) | 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) |
| 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) | 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) |
| allow_other_plugins | :x: | `false` | Allow other plugins to be installed (prevents the @prettier-XYZ regex check) | | 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) |
| use_repo_config | :x: | `false` | Automatically use the repository's prettier configuration files (.prettierrc, prettier.config.js, etc.) and .prettierignore. When enabled, prettier will search for and use config files in your repository, eliminating the need to specify `--config` or `--ignore-path` manually. |
> 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.
@@ -57,7 +59,7 @@ 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.6 uses: creyD/prettier_action@v4.6
@@ -81,7 +83,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 }}
@@ -111,7 +113,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 }}
@@ -142,7 +144,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 }}
@@ -156,6 +158,49 @@ jobs:
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }} github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
``` ```
#### Example 5 (using repository prettier configuration)
This example demonstrates the `use_repo_config` option, which automatically detects and uses your repository's prettier configuration files (`.prettierrc`, `prettier.config.js`, etc.) and `.prettierignore` file.
```yaml
name: Continuous Integration
on:
push:
branches:
- main
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Prettify code
uses: creyD/prettier_action@v4.6
with:
# Automatically use repository's prettier config and .prettierignore
use_repo_config: true
```
With `use_repo_config: true`, the action will:
- Search for prettier configuration files in your repository (.prettierrc, prettier.config.js, package.json, etc.)
- Automatically use your .prettierignore file if present
- Apply prettier to all supported files in your repository
- Warn you if no configuration file is found (prettier will use defaults)
You can still customize the file pattern if needed:
```yaml
- name: Prettify code
uses: creyD/prettier_action@v4.6
with:
use_repo_config: true
prettier_options: --write "src/**/*.{js,ts,jsx,tsx}"
```
More documentation for writing a workflow can be found [here](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions). More documentation for writing a workflow can be found [here](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions).
## Issues ## Issues

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
@@ -74,6 +77,10 @@ inputs:
description: Allow other plugins to be installed. By default, we are checking if the plugins are actually prettier plugins. description: Allow other plugins to be installed. By default, we are checking if the plugins are actually prettier plugins.
required: false required: false
default: false default: false
use_repo_config:
description: Use the repository's prettier configuration files (.prettierrc, prettier.config.js, etc.) and .prettierignore automatically. When enabled, prettier will search for config files in the repository.
required: false
default: false
runs: runs:
using: "composite" using: "composite"
@@ -87,6 +94,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 }}
@@ -102,6 +110,7 @@ runs:
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 }} INPUT_ALLOW_OTHER_PLUGINS: ${{ inputs.allow_other_plugins }}
INPUT_USE_REPO_CONFIG: ${{ inputs.use_repo_config }}
branding: branding:
icon: "award" icon: "award"

View File

@@ -63,6 +63,46 @@ if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then
fi fi
) )
# Handle repository configuration files
if [ "$INPUT_USE_REPO_CONFIG" = "true" ]; then
echo "Using repository prettier configuration..."
# Check for prettier config files
CONFIG_FOUND=false
for config_file in .prettierrc .prettierrc.json .prettierrc.yml .prettierrc.yaml .prettierrc.js .prettierrc.cjs .prettierrc.mjs prettier.config.js prettier.config.cjs prettier.config.mjs .prettierrc.toml; do
if [ -f "$config_file" ]; then
echo " Found prettier config: $config_file"
CONFIG_FOUND=true
break
fi
done
# Check package.json for prettier config
if [ -f "package.json" ] && grep -q '"prettier"' package.json; then
echo " Found prettier config in package.json"
CONFIG_FOUND=true
fi
if [ "$CONFIG_FOUND" = "false" ]; then
echo " Warning: No prettier config file found. Prettier will use its default configuration."
fi
# Check for .prettierignore
if [ -f ".prettierignore" ]; then
echo " Found .prettierignore file"
else
echo " Note: No .prettierignore file found. All files will be processed."
fi
# When using repo config, if prettier_options is still the default, use a more sensible pattern
if [ "$INPUT_PRETTIER_OPTIONS" = "--write **/*.js" ]; then
echo " Using default file pattern: . (current directory)"
INPUT_PRETTIER_OPTIONS="--write ."
else
echo " Using custom prettier_options: $INPUT_PRETTIER_OPTIONS"
fi
fi
PRETTIER_RESULT=0 PRETTIER_RESULT=0
echo "Prettifying files..." echo "Prettifying files..."
echo "Files:" echo "Files:"
@@ -125,11 +165,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."