173 Commits
v3.2 ... master

Author SHA1 Message Date
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
d7f059e30c Merge pull request #123 from creyD/dev
Different minor changes
2025-05-08 11:25:27 +02:00
b73c2bf29c fix: updated link 2025-05-08 11:14:35 +02:00
f24ab29247 fix: version bump for examples 2025-05-08 11:04:01 +02:00
9f54668ece fix: minor documentation cleanups 2025-05-08 10:32:44 +02:00
eeb940db6d fix: fixed codacy error 2025-05-08 10:24:50 +02:00
12efc36860 fix: codacy warning 2025-05-08 10:23:14 +02:00
John Jetmore
e53f331f48 Add only_changed_pr (#135)
* allow `only_changed` and `dry` to work together

Before this change, if you tried to use `dry` and `only_changed together, it acted as if `only_changed` was ignored.  There was no code specific to `only_changed` down the `dry` code path.

This commit’s solution is to run prettier on the entire code base (as was already being done) and then, before doing any comparisons, reset changes to files that were not modified in the last commit.

* add `only_changed_pr` option

This behaves similarly to only_changed, except instead of only considering files which were modified in the last commit, this option only considers files which were modified in any commit included in the current PR.
2025-05-08 10:18:46 +02:00
d5e6c388c3 added codacy badge 2024-11-24 17:19:57 +01:00
99914860a6 Merge pull request #133 from greenfiling/fix-empty-working_directory 2024-11-24 16:35:15 +01:00
John Jetmore
a3561a8976 set INPUT_WORKING_DIRECTORY if not already set 2024-01-29 12:32:01 -05:00
f32e6a975a Fixing bug #128 2024-01-10 12:43:00 +01:00
117a7a5b37 Updated Readme according to #132 2024-01-10 12:26:30 +01:00
5d0450c2bc Addede step summary in GitHub 2023-10-03 20:37:27 +02:00
57dc57f236 Added star history 2023-10-03 17:12:40 +02:00
Derek Brown
0fc0cf4723 feat: Allow overriding actor (#126)
Co-authored-by: Conrad <grosserconrad@gmail.com>
2023-08-21 21:05:34 +02:00
5b5cb513f1 Update action.yml 2023-07-20 20:55:18 +02:00
Federico M. Facca
4bd40fc486 Support not exiting the process in case of changes in dry mode (#122)
Co-authored-by: Conrad <grosserconrad@gmail.com>
2023-07-20 16:39:13 +02:00
Blake Dunson
9aba96f268 Allow amended commits to be empty (#119)
Co-authored-by: Conrad <grosserconrad@gmail.com>
2023-06-30 17:40:51 +02:00
Federico M. Facca
a1c90f8992 export push_options as env variable (#121)
Co-authored-by: Conrad <grosserconrad@gmail.com>
2023-06-30 17:23:25 +02:00
473978add9 Added default for working_directory 2023-05-24 11:05:21 +02:00
d04162ee72 Added default for prettier_version 2023-05-24 11:01:47 +02:00
9561a3f1e1 Merge pull request #118 from creyD/dev 2023-04-19 15:49:52 +02:00
4ccf35e06f Bumped version number in templates 2023-02-19 16:43:21 +01:00
31355f8eef Merge pull request #109 from creyD/dev 2023-02-19 16:38:13 +01:00
6fe86ce41d Added note for new npm 9 issue 2023-02-19 16:33:58 +01:00
a21409da47 Merge pull request #112 from tropictim/fix_path 2023-02-19 16:23:29 +01:00
Tim Talbert
191599deb6 Don't use the npm bin command to resolve the bin path 2023-02-17 17:24:11 -05:00
9436c53771 Added debug for prettier test result in the log 2023-01-23 14:16:43 +01:00
2826053f0c Added option clean_node_folder for #108 2023-01-23 12:56:23 +01:00
dc62bca389 Merge pull request #105 from creyD/dev
Minor Readme Updates
2023-01-10 22:47:52 +01:00
2e9c875edd Merge pull request #104 from AnimeAllstar/patch-1
Bumped actions/checkout to v3 in examples
2023-01-10 22:46:42 +01:00
Asad Dhorajiwala
2bf66dcd9f Bumped actions/checkout to v3 in examples
actions/checkout@v2 uses node12. GitHub gives a deprecation warning for this since node12 is out of support. actions/checkout@v3 uses node16 by default.

https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12
2023-01-10 13:45:18 -08:00
0eebd17ea5 Merge pull request #102 from JuanDa237/patch-1
Not Github Workflow Warnings
2022-12-22 09:17:34 +01:00
Juan David Gaviria Correa
360ac97374 #101 Update README.md
Use v3 as suggested here https://github.com/marketplace/actions/checkout
2022-12-21 20:09:05 -05:00
a18ea90a1c Merge pull request #99 from WesleyYue/patch-1
Add note that Prettier plugins must be wrapped in quotes
2022-12-01 13:51:13 +01:00
Wesley
30fe71e314 Update README.md 2022-11-30 15:34:05 -08:00
6602189cf8 Merge pull request #88 from creyD/dev
Minor Feature & Bugfix Update
2022-01-15 22:20:08 +01:00
0bf5ce065a Updated bug and feature templates 2022-01-15 22:15:20 +01:00
ac20e98371 Using latest version in the examples 2022-01-15 22:13:48 +01:00
607ddfdc57 Merge pull request #87 from bercos/master
Fix #78
2022-01-15 22:08:45 +01:00
Bernie Cosgriff
9dff813935 Fix #78
Fix https://github.com/creyD/prettier_action/issues/78 by updating the regex.

I tested the regex but was not sure how to test the action. The regex should cover all three valid cases outlined here https://prettier.io/docs/en/plugins.html.
2022-01-14 16:27:39 -07:00
058125065f Merge pull request #86 from seven1m/master
fix(Plugin): don't install plugins globally
2022-01-13 10:25:14 +01:00
Tim Morgan
8a16fc9688 Don't install plugins globally
This fixes a problem where @prettier/plugin-ruby was not being used.
2022-01-08 12:37:59 -06:00
661230a857 Merge pull request #85 from creyD/dev
Updated Readme
2021-12-28 18:39:49 +01:00
49aca57540 Merge pull request #84 from creyD/master
Update from master
2021-12-28 18:38:47 +01:00
eafd91e372 Merge pull request #82 from Anselmoo/master
Fixed #81
2021-12-28 18:37:50 +01:00
Anselm Hahn
13fd7a03b4 Fixed #81 2021-12-28 18:32:29 +01:00
b8440d072c Merge pull request #77 from AdamMartinCote/master
Update examples to use 4.1.1 instead of 4.1
2021-12-06 20:55:36 +01:00
Adam
89919dc836 Update example to use 4.1.1 instead of 4.1
Update the examples so first time users don't experience the bug that was fixed by 26c4892179
2021-12-06 06:52:46 -05:00
b305fc89f5 Merge pull request #76 from creyD/dev
Bugfix for #74
2021-12-06 12:26:52 +01:00
26c4892179 Fixed a bug with missing " 2021-12-06 12:22:36 +01:00
86625cc217 Merged the input commit description if statement 2021-12-06 12:18:46 +01:00
fdbbee3567 Bugfix for the commit description 2021-12-06 12:15:24 +01:00
f9f10e0719 Added spacing for commit description 2021-12-06 12:11:52 +01:00
2b5c9a8de1 Merge pull request #75 from insyri/dev
Fix for #74
2021-12-06 12:02:31 +01:00
insyri
f44961013c Variable assignment fix, issued via CodeFactor 2021-12-04 18:58:13 -05:00
insyri
a9474e2eb8 Corrected if/else for INPUT_COMMIT_DESCRIPTION. 2021-12-04 18:46:31 -05:00
dbdc55734e Merge pull request #73 from creyD/dev
v4.1 Deployment
2021-11-30 18:42:58 +01:00
9accc7b9f5 Added further context for the working_directory 2021-11-30 18:03:30 +01:00
41bf601bb6 Merge pull request #71 from sksat/handle-space-in-fname
handle space in file name
2021-11-30 17:58:28 +01:00
fabe625ef2 Bumped versions 2021-11-30 17:52:15 +01:00
b072432b6b Added slight explanation to the readme 2021-11-30 17:22:11 +01:00
aecd8574c0 Merge pull request #65 from JLHasson/patch-1
Use 'main' instead of 'master' for examples
2021-11-30 17:20:12 +01:00
8efb5a885e Added working_directory parameter 2021-11-30 17:18:31 +01:00
sksat
b90e27731a fix: handle space in changed file name 2021-11-24 00:30:10 +09:00
b1dc9cd3b3 Merge pull request #67 from AndyA/master
Don't delete package-lock.json
2021-10-31 15:06:10 +01:00
61783f508e Merge pull request #69 from insyri/master
Commit Description Option
2021-10-22 17:55:05 +02:00
insyri
902197aeb2 typo fix in README 2021-10-22 09:04:15 -04:00
insyri
39357d386a added $INPUT_COMMIT_DESCRIPTION to entrypoint.sh
im unfamiliar with shell so this is what i did with some research, the inline if statement is just a personal design/formatting choice.
2021-10-22 09:03:21 -04:00
insyri
6296a68dfd added commit-description as option to action.yml 2021-10-22 08:52:00 -04:00
insyri
23135339e3 added commit-description as option in README 2021-10-22 08:49:41 -04:00
Andy Armstrong
a6d8de1638 Don't delete package-lock.json 2021-10-19 13:42:28 +01:00
Lance Hasson
762be84685 use 'main' instead of 'master' for examples 2021-09-21 09:17:32 -07:00
0b655e298c Merge pull request #48 from creyD/dev
Major Update 4.0
2021-09-07 17:54:54 +02:00
9ff7c1dce3 Added new version 2021-09-07 17:49:12 +02:00
c392c4f7c2 Merge pull request #57 from hpedrorodrigues/main
Small fixes for branch dev
2021-09-07 17:39:06 +02:00
67f2a40bcd Added dry run example 2021-09-07 17:36:14 +02:00
Pedro Rodrigues
6c9f8f188e Displaying prettier error when a glob doesn't match any files 2021-06-21 23:05:35 -03:00
Pedro Rodrigues
8002e3525b Making variable INPUT_PUSH_OPTIONS not required 2021-06-21 23:04:49 -03:00
Pedro Rodrigues
c97500dd80 Checking if generated files exist before trying to delete them 2021-06-21 23:03:58 -03:00
Pedro Rodrigues
aeab4259d8 Adding missing environment variable INPUT_GITHUB_TOKEN 2021-06-21 23:00:56 -03:00
a9bef1b515 Merge pull request #56 from hpedrorodrigues/override-token
Add support to override the default github token
2021-06-17 00:22:12 +02:00
654f901ff9 Merge branch 'dev' into override-token 2021-06-17 00:21:33 +02:00
Pedro Rodrigues
4f318753d5 Add support to override the default github token 2021-06-16 19:08:28 -03:00
ba482bbb2a Merge pull request #49 from fsz-codeshop/issue-37-dry-run-reporting-unpretty
Fixes Issues from PR #46 (37 [BUG] Dry run reporting unpretty files when all files match styles)
2021-05-21 09:48:38 +02:00
426f319c74 Merge branch 'dev' into issue-37-dry-run-reporting-unpretty 2021-05-21 09:48:29 +02:00
bb9aa745eb Merge pull request #53 from stevelacy/master
Add input git push options
2021-05-21 09:46:51 +02:00
Steve Lacy
707db76837 Add input git push options 2021-05-20 09:39:31 -10:00
7040c46162 Merge pull request #51 from fschoenfeldt/patch-1
Update README.md
2021-05-11 10:38:56 +02:00
Frederik Schönfeldt
672408b1db Update README.md
Use latest action version in example :-)
2021-05-10 18:01:39 +02:00
Fabricio Sander
634a3d2075 fix: changes the logic to handle dry-run with --write option and corrects the logic as it will never have changes on dry-run 2021-04-13 16:34:40 -03:00
d9d644ab69 Merge pull request #44 from suda/master
Allow unofficial plugins
2021-04-10 16:14:00 +02:00
0b7e2710f2 Merge branch 'dev' into master 2021-04-10 16:13:21 +02:00
fd9337d75f Merge pull request #46 from fsz-codeshop/issue-37-dry-run-reporting-unpretty
Fixes Issue #37 [BUG] Dry run reporting unpretty files when all files match styles
2021-04-10 16:10:33 +02:00
Fabricio Sander
c2e2730594 fix: fixes codefactor recommendation 2021-03-25 21:56:57 -03:00
Fabricio Sander
2069f26b6e other: improves the log output by not having and out of range message 2021-03-25 21:36:51 -03:00
Fabricio Sander
5b4a6a0183 docs: note about using --check on options to help in dry running 2021-03-25 21:34:44 -03:00
Fabricio Sander
3d912f60d1 fix: added variable declaration 2021-03-25 21:28:17 -03:00
Fabricio Sander
67234beef0 other: testing approach with multiple commands on fail 2021-03-25 21:21:06 -03:00
Fabricio Sander
2602a7aad8 other: testing approach using pipefail 2021-03-25 21:10:04 -03:00
Fabricio Sander
341259c9e6 other: testing another approach to handle both cases 2021-03-25 20:59:41 -03:00
Fabricio Sander
70f47fbe7e fix: fixes handling of bad case where there are unpretty files and command output is not 0 2021-03-25 20:50:30 -03:00
Fabricio Sander
217be60a6a fix: removes code block added by mistake from dev branch 2021-03-25 20:22:03 -03:00
Fabricio Sander
0e4ccc84cf style: fixes log message 2021-03-25 20:13:05 -03:00
Fabricio Sander
b40e4ba1c8 fix(issue-37): adds logic to handle prettier cmd output to shell dry-run exit 2021-03-25 20:11:57 -03:00
87e1553a82 Merge pull request #40 from jsoref/glob
Handle bash globs
2021-03-01 22:57:32 +01:00
bc1e95cc30 Adjusted the prettier_plugins variable to documentation 2021-03-01 15:20:54 +01:00
53d0f90f4e Update README.md 2021-03-01 15:18:08 +01:00
6438b32926 Merge pull request #45 from infotexture/fix/plugin-syntax
Fix plugin name syntax in README & description
2021-03-01 14:58:03 +01:00
Roger Sheen
6c3c102255 Fix plugin name syntax in README & description
The entrypoint script checks for correctly named Prettier plugins on [lines 44–45](https://github.com/creyD/prettier_action/blob/master/entrypoint.sh#L44-L45), but the description in the config file and README are not consistent.

This updates those references to clarify how plugins should be specified.
2021-03-01 00:25:35 +01:00
Wojtek Siudzinski
e81db121ba Allow unofficial plugins 2021-02-28 11:16:39 +01:00
Josh Soref
d48a703bcd Handle bash globs
The previous system relied on a different shell's magic for handling `*` / `**`

nullglob
- If set, Bash allows filename patterns which match no files to expand to a null string, rather than themselves.

globstar
- If set, the pattern ‘**’ used in a filename expansion context will match all files and zero or more directories and subdirectories. If the pattern is followed by a ‘/’, only directories and subdirectories match.
2021-02-19 14:56:06 -05:00
a0331d2149 Merge pull request #39 from creyD/dev_composite
Moved the action to composite
2021-02-19 20:47:50 +01:00
b81496839a Adjusted exception message and finalized changes 2021-02-19 19:18:23 +01:00
1f62e028b6 Added exceptions to improve stability 2021-02-19 19:16:25 +01:00
5e56c64388 Another try at bugfixing the ignore mechanism 2021-02-19 19:13:29 +01:00
7d4939bf14 Another try at bugfixing the ignore mechanism 2021-02-19 19:09:45 +01:00
19d31cb263 Another try at bugfixing the ignore mechanism 2021-02-19 19:07:12 +01:00
c9d8181bcf Moved ignore part to before git checks changed 2021-02-19 19:04:18 +01:00
f4e4fcde26 Added .gitignore to exclusion - for real II 2021-02-19 18:56:55 +01:00
1a89f28d0f Added .gitignore to exclusion - for real 2021-02-19 18:54:40 +01:00
172c413f01 Added .gitignore exclusion 2021-02-19 18:51:11 +01:00
9acb5d89b9 Still debugging ignoring 2021-02-19 18:47:01 +01:00
77af303189 Bugfixing ignore mechanism 2021-02-19 18:44:35 +01:00
5564e3ef42 Updating ignore mechanism 2 2021-02-19 18:41:32 +01:00
c5dd36440f Updating the ignore mechanism 2021-02-19 18:40:27 +01:00
3b82dd7e95 Fixed missing command 2021-02-19 18:36:38 +01:00
01e9c566d8 Trying to exclude the useless package files 2021-02-19 18:31:20 +01:00
35d0d93afd Removed global parameter 2021-02-19 18:19:17 +01:00
857bc257e2 Added missing bracket 2021-02-19 18:15:37 +01:00
4d25f0bd7c Moving the path to the run part of the yml 2021-02-19 18:13:22 +01:00
5c365ab3fa Another bugfix attempt trying to generate the global flag only if needed 2021-02-19 18:10:42 +01:00
b5409d48a9 Removed global option for testing 2021-02-19 18:02:12 +01:00
5f9fa33c3d Fixed variable problem 2021-02-19 17:58:30 +01:00
3aa6d7608d Added testing variable 2021-02-19 17:54:00 +01:00
8a68c5b4d3 Experimenting with a simpler form of composite actions 2021-02-19 17:45:52 +01:00
45863b1eb1 Merge pull request #38 from jsoref/composite
Composite
2021-02-19 17:35:23 +01:00
Josh Soref
7326fa4da4 Switch to composite 2021-02-19 00:49:40 -05:00
Josh Soref
e338a630e6 Tag entrypoint as a bash script
This script uses bashisms
2021-02-19 00:49:16 -05:00
cb975d8aad Merge pull request #36 from creyD/dev
New prettier-plugin feature
2021-01-10 21:38:08 +01:00
acf2e1f70b Added new plugin feature to documentation 2021-01-10 21:37:50 +01:00
ad03b42b19 Merge pull request #34 from sebastianks/feature-add-plugins
Feature add plugins
2021-01-10 21:07:23 +01:00
a20371f2d2 Slightly adjusted the printed messages 2021-01-10 21:04:03 +01:00
Sebastian Kolind Sørensen
2b4b2c18e7 Merge pull request #5 from sebastianks/master
Add regex check of plugin names
2021-01-10 17:55:52 +01:00
Sebastian Kolind Sørensen
8d84d9c9f2 Merge branch 'feature-add-plugins' into master 2021-01-10 17:55:45 +01:00
Sebastian Kolind Sørensen
c0b1f6f05a Merge pull request #4 from sebastianks/check-plugin-name
Change to sh regex
2021-01-10 17:50:44 +01:00
Sebastian K. Sorensen
bb1392436f Change to sh regex 2021-01-10 17:49:20 +01:00
Sebastian Kolind Sørensen
d8e72fc127 Merge pull request #3 from sebastianks/check-plugin-name
Fix regex issue
2021-01-10 17:41:59 +01:00
Sebastian K. Sorensen
75b0a4fda5 Fix regex issue 2021-01-10 17:40:38 +01:00
Sebastian Kolind Sørensen
bb1dafe218 Merge pull request #2 from sebastianks/check-plugin-name
Fix issue with if statement
2021-01-10 16:43:23 +01:00
Sebastian K. Sorensen
33b1eff486 Fix issue with if statement 2021-01-10 16:41:47 +01:00
Sebastian Kolind Sørensen
72b033eda5 Merge pull request #1 from sebastianks/check-plugin-name
Attempt of checking plugin name with regex
2021-01-10 16:38:50 +01:00
Sebastian K. Sorensen
656daa9f97 Attempt of checking plugin name with regex 2021-01-10 16:07:31 +01:00
Sebastian K. Sorensen
1015fa1aaf Use quotes when using [ 2021-01-10 15:57:48 +01:00
Sebastian K. Sorensen
0faaf9bad1 Use POSIX brackets instead 2021-01-10 15:57:13 +01:00
Sebastian K. Sorensen
a35b5cc1cb Change default to empty string instead 2021-01-10 15:50:05 +01:00
Sebastian K. Sorensen
b7cf1dc4c2 Change action name to regular one 2021-01-10 15:32:37 +01:00
Sebastian K. Sorensen
f852cea42f Change check of variable 2021-01-10 14:52:20 +01:00
Sebastian K. Sorensen
7ea4328121 Adds a unique name to action 2021-01-10 14:35:53 +01:00
Sebastian K. Sorensen
193559158f Attempt to add prettier_plugins 2021-01-10 14:22:14 +01:00
34cc6fde0a Merge pull request #33 from spawnia/patch-1
Remove branch parameter from docs
2021-01-07 07:55:13 +01:00
Benedikt Franke
03caf85843 Remove branch parameter from docs 2021-01-07 00:56:18 +01:00
6 changed files with 315 additions and 86 deletions

View File

@@ -3,12 +3,12 @@ name: Bug report
about: Report a problem!
title: "[BUG]"
labels: bug
assignees: ''
assignees: ""
---
**What exactly happened?**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
@@ -21,8 +21,8 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.
**Where did you encounter the problem?**
- OS: [e.g. iOS]
- Repo: [e.g. URL to your repository]
- Version [e.g. 22]
- Version [e.g. 22]
<!-- If you think you can help us with that, please note it here! -->

View File

@@ -3,12 +3,11 @@ name: Feature request
about: Request a feature!
title: "[FEATURE]"
labels: enhancement
assignees: ''
assignees: ""
---
**What would you like to change about the program?**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
A clear and concise description of what the problem is.
**Why do you think this is a cool idea?**
A clear and concise description of why your feature would improve the program.

View File

@@ -1,4 +0,0 @@
FROM node:lts-alpine3.9
RUN apk update && apk add --no-cache bash git openssh
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

153
README.md
View File

@@ -1,13 +1,12 @@
# GitHub Prettier Action
[![CodeFactor](https://www.codefactor.io/repository/github/creyd/prettier_action/badge/master)](https://www.codefactor.io/repository/github/creyd/prettier_action/overview/master)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/ba5fa97677ee47e48efdc2e6f7493c49)](https://app.codacy.com/gh/creyD/prettier_action/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![License MIT](https://img.shields.io/github/license/creyD/prettier_action)](https://github.com/creyD/prettier_action/blob/master/LICENSE)
[![Latest Release](https://img.shields.io/github/v/release/creyD/prettier_action)](https://github.com/creyD/prettier_action/releases)
[![Contributors](https://img.shields.io/github/contributors-anon/creyD/prettier_action)](https://github.com/creyD/prettier_action/graphs/contributors)
[![Issues](https://img.shields.io/github/issues/creyD/prettier_action)](https://github.com/creyD/prettier_action/issues)
A GitHub action for styling files with [prettier](https://prettier.io).
## Usage
@@ -16,21 +15,32 @@ A GitHub action for styling files with [prettier](https://prettier.io).
| 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. |
| prettier_version | :x: | `false` | Specific prettier version (by default use latest) |
| 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! |
| branch (deprecated with 3.0)| :white_check_mark: | - | Always set this to `${{ github.head_ref }}` in order to work both with pull requests and push events |
| 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.
### Example Config
#### Example 1 (run on push in master)
> Hint: if you still use the old naming convention or generally a different branch name, please replace the `main` in the following configurations.
#### Example 1 (run on push in branch main)
```yaml
name: Continuous Integration
@@ -39,57 +49,111 @@ on:
pull_request:
push:
branches:
- master
- main
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
- name: Checkout
uses: actions/checkout@v4
- name: Prettify code
uses: creyD/prettier_action@v3.1
with:
# This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Prettify code
uses: creyD/prettier_action@v4.6
with:
# This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md}
```
#### Example 2 (using the only_changed or same_commit option on PR)
```yaml
name: Continuous Integration
on:
pull_request:
branches: [master]
branches: [main]
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
# This is important to fetch the changes to the previous commit
fetch-depth: 0
- name: Checkout
uses: actions/checkout@v4
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
# This is important to fetch the changes to the previous commit
fetch-depth: 0
- name: Prettify code
uses: creyD/prettier_action@v3.1
with:
# This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md}
only_changed: True
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Prettify code
uses: creyD/prettier_action@v4.6
with:
# This part is also where you can pass other options, for example:
prettier_options: --write **/*.{js,md}
only_changed: True
```
#### Example 3 (using a custom access token on PR)
```yaml
name: Continuous Integration
on:
pull_request:
branches: [main]
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
# Make sure the value of GITHUB_TOKEN will not be persisted in repo's config
persist-credentials: false
- name: Prettify code
uses: creyD/prettier_action@v4.6
with:
prettier_options: --write **/*.{js,md}
only_changed: True
# Set your custom token
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
```
#### Example 4 (dry run)
```yaml
name: Continuous Integration
on:
pull_request:
branches: [main]
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
# Make sure the value of GITHUB_TOKEN will not be persisted in repo's config
persist-credentials: false
- name: Prettify code
uses: creyD/prettier_action@v4.6
with:
dry: True
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
```
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).
@@ -97,3 +161,22 @@ More documentation for writing a workflow can be found [here](https://help.githu
## Issues
Please report all bugs and feature request using the [GitHub issues function](https://github.com/creyD/prettier_action/issues/new). Thanks!
### Problem with NPM v9 (19.02.2023)
This issue was discussed in https://github.com/creyD/prettier_action/issues/113. The action until release 4 uses the npm bin command, which apparently doesn't work on npm v9. A fix is introduced with v4.3 of this action. If you need an older version of the action working it works until v3.3 and between v3.3 and v4.2 you could use the workaround described in https://github.com/creyD/prettier_action/issues/113 by adding the below to your workflow file:
```
- name: Install npm v8
run: npm i -g npm@8
```
## Star History
<a href="https://www.star-history.com/#creyD/prettier_action&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=creyD/prettier_action&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=creyD/prettier_action&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=creyD/prettier_action&type=Date" />
</picture>
</a>

View File

@@ -7,7 +7,11 @@ inputs:
commit_message:
description: Commit message, will be ignored if used with same_commit
required: false
default: 'Prettified Code!'
default: "Prettified Code!"
commit_description:
description: Extended commit message, will be ignored if used with same_commit
required: false
default: ""
same_commit:
description: Update the current commit instead of creating a new one
required: false
@@ -15,31 +19,90 @@ inputs:
commit_options:
description: Commit options
required: false
file_pattern:
description: File pattern used for `git add`, can't be used with only_changed!
push_options:
description: Git push options
required: false
default: '*'
file_pattern:
description: File pattern used for `git add`, can't be used with only_changed or only_changed_pr!
required: false
default: "*"
prettier_options:
description: Options for the `prettier` command
required: false
default: '--write **/*.js'
default: "--write **/*.js"
dry:
description: Running the script in dry mode just shows whether there are files that should be prettified or not
required: false
default: false
no_commit:
description: Can be used to avoid committing the changes (can be combined with dry mode, useful when another workflow steps commits after this commit anyways)
required: false
default: false
prettier_version:
description: Specific version of prettier (by default just use the latest version)
required: false
default: false
default: "latest"
working_directory:
description: Specify a directory to cd into before installing prettier and running it
required: false
default: ${{ github.action_path }}
only_changed:
description: Only prettify files changed in the last commit, can't be used with file_pattern!
required: false
default: false
only_changed_pr:
description: Only prettify files changed in the current PR. If specified with only_changed, only_changed will take precedent. Can't be used with file_pattern!
required: false
default: false
prettier_plugins:
description: Install Prettier plugins, i.e. `@prettier/plugin-php @prettier/plugin-other`
required: false
default: ""
github_token:
description: GitHub Token or PAT token used to authenticate against a repository
required: false
default: ${{ github.token }}
clean_node_folder:
description: Remove the node_modules folder before committing changes
required: false
default: true
git_identity:
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
runs:
using: 'docker'
image: 'Dockerfile'
using: "composite"
steps:
- name: Prettify code!
shell: bash
run: >-
PATH=$GITHUB_ACTION_PATH/node_modules/.bin:$PATH
${{ github.action_path }}/entrypoint.sh
env:
INPUT_COMMIT_MESSAGE: ${{ inputs.commit_message }}
INPUT_COMMIT_DESCRIPTION: ${{ inputs.commit_description }}
INPUT_SAME_COMMIT: ${{ inputs.same_commit }}
INPUT_COMMIT_OPTIONS: ${{ inputs.commit_options }}
INPUT_PUSH_OPTIONS: ${{ inputs.push_options }}
INPUT_FILE_PATTERN: ${{ inputs.file_pattern }}
INPUT_PRETTIER_OPTIONS: ${{ inputs.prettier_options }}
INPUT_DRY: ${{ inputs.dry }}
INPUT_NO_COMMIT: ${{ inputs.no_commit }}
INPUT_PRETTIER_VERSION: ${{ inputs.prettier_version }}
INPUT_ONLY_CHANGED: ${{ inputs.only_changed }}
INPUT_ONLY_CHANGED_PR: ${{ inputs.only_changed_pr }}
INPUT_PRETTIER_PLUGINS: ${{ inputs.prettier_plugins }}
INPUT_WORKING_DIRECTORY: ${{ inputs.working_directory }}
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 }}
branding:
icon: 'award'
color: 'green'
icon: "award"
color: "green"

View File

@@ -1,7 +1,8 @@
#!/bin/sh
#!/bin/bash
# e is for exiting the script automatically if a command fails, u is for exiting if a variable is not set
# x would be for showing the commands before they are executed
set -eu
shopt -s globstar
# FUNCTIONS
# Function for setting up git env in the docker container (copied from https://github.com/stefanzweifel/git-auto-commit-action/blob/master/entrypoint.sh)
@@ -9,15 +10,24 @@ _git_setup ( ) {
cat <<- EOF > $HOME/.netrc
machine github.com
login $GITHUB_ACTOR
password $GITHUB_TOKEN
password $INPUT_GITHUB_TOKEN
machine api.github.com
login $GITHUB_ACTOR
password $GITHUB_TOKEN
password $INPUT_GITHUB_TOKEN
EOF
chmod 600 $HOME/.netrc
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Action"
# If GIT_IDENTITY="actor"
if [ "$INPUT_GIT_IDENTITY" = "author" ]; then
git config --global user.name "$GITHUB_ACTOR"
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"
else
echo "GIT_IDENTITY must be either 'author' or 'actions'";
exit 1;
fi;
}
# Checks if any files are changed
@@ -25,53 +35,131 @@ _git_changed() {
[[ -n "$(git status -s)" ]]
}
(
# PROGRAM
echo "Installing prettier..."
case $INPUT_PRETTIER_VERSION in
false)
npm install --silent --global prettier
;;
*)
npm install --silent --global prettier@$INPUT_PRETTIER_VERSION
;;
esac
# Changing to the directory
if [ -z "$INPUT_WORKING_DIRECTORY" ] ; then
INPUT_WORKING_DIRECTORY=$GITHUB_ACTION_PATH
fi
cd "$INPUT_WORKING_DIRECTORY"
echo "Prettifing files..."
echo "Installing prettier..."
npm install --silent prettier@$INPUT_PRETTIER_VERSION
# Install plugins
if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then
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 || echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"
npx prettier $INPUT_PRETTIER_OPTIONS \
|| { PRETTIER_RESULT=$?; echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"; exit 1; } >> $GITHUB_STEP_SUMMARY
echo "Prettier result: $PRETTIER_RESULT"
# 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..."
if [ -d 'node_modules' ]; then
rm -r node_modules/
else
echo "No node_modules/ folder."
fi
fi
if [ -f 'package-lock.json' ]; then
git checkout -- package-lock.json || echo "No package-lock.json file tracked by git."
else
echo "No package-lock.json file."
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
BASE_BRANCH=origin/$GITHUB_BASE_REF
if $INPUT_ONLY_CHANGED; then
BASE_BRANCH=HEAD~1
fi
echo "Resetting changes, removing changes to files not changed since $BASE_BRANCH"
# list of all files changed in the previous commit
git diff --name-only HEAD $BASE_BRANCH > /tmp/prev.txt
# list of all files with outstanding changes
git diff --name-only HEAD > /tmp/cur.txt
OLDIFS="$IFS"
IFS=$'\n'
# get all files that are in prev.txt that aren't also in cur.txt
for file in $(comm -1 -3 /tmp/prev.txt /tmp/cur.txt)
do
echo "resetting: $file"
git restore -- "$file"
done
IFS="$OLDIFS"
fi
# To keep runtime good, just continue if something was changed
if _git_changed; then
# case when --write is used with dry-run so if something is unpretty there will always have _git_changed
if $INPUT_DRY; then
echo "Prettier found unpretty files!"
exit 1
echo "Unpretty Files Changes:"
git diff
if $INPUT_NO_COMMIT; then
echo "There are changes that won't be commited, you can use an external job to do so."
else
echo "Finishing dry-run. Exiting before committing."
exit 1
fi
else
# Calling method to configure the git environemnt
_git_setup
if $INPUT_ONLY_CHANGED; then
# --diff-filter=d excludes deleted files
for file in $(git diff --name-only --diff-filter=d HEAD^..HEAD)
do
git add $file
done
else
# Add changes to git
git add "${INPUT_FILE_PATTERN}" || echo "Problem adding your files with pattern ${INPUT_FILE_PATTERN}"
# Add changes to git
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."
exit 0
fi
# Commit and push changes back
if $INPUT_SAME_COMMIT; then
echo "Amending the current commit..."
git pull
git commit --amend --no-edit
git commit --amend --no-edit --allow-empty
git push origin -f
else
git commit -m "$INPUT_COMMIT_MESSAGE" --author="$GITHUB_ACTOR <$GITHUB_ACTOR@users.noreply.github.com>" ${INPUT_COMMIT_OPTIONS:+"$INPUT_COMMIT_OPTIONS"} || echo "No files added to commit"
git push origin
if [ "$INPUT_COMMIT_DESCRIPTION" != "" ]; then
git commit -m "$INPUT_COMMIT_MESSAGE" -m "$INPUT_COMMIT_DESCRIPTION" --author="$GITHUB_ACTOR <$GITHUB_ACTOR@users.noreply.github.com>" ${INPUT_COMMIT_OPTIONS:+"$INPUT_COMMIT_OPTIONS"} || echo "No files added to commit"
else
git commit -m "$INPUT_COMMIT_MESSAGE" --author="$GITHUB_ACTOR <$GITHUB_ACTOR@users.noreply.github.com>" ${INPUT_COMMIT_OPTIONS:+"$INPUT_COMMIT_OPTIONS"} || echo "No files added to commit"
fi
git push origin ${INPUT_PUSH_OPTIONS:-}
fi
echo "Changes pushed successfully."
fi
else
# case when --check is used so there will never have something to commit but there are unpretty files
if [ "$PRETTIER_RESULT" -eq 1 ]; then
echo "Prettier found unpretty files!"
exit 1
else
echo "Finishing dry-run."
fi
echo "No unpretty files!"
echo "Nothing to commit. Exiting."
fi