mirror of
https://github.com/creyD/prettier_action.git
synced 2026-04-13 20:00:30 +02:00
Compare commits
233 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 31355f8eef | |||
| 6fe86ce41d | |||
| a21409da47 | |||
|
|
191599deb6 | ||
| 9436c53771 | |||
| 2826053f0c | |||
| dc62bca389 | |||
| 2e9c875edd | |||
|
|
2bf66dcd9f | ||
| 0eebd17ea5 | |||
|
|
360ac97374 | ||
| a18ea90a1c | |||
|
|
30fe71e314 | ||
| 6602189cf8 | |||
| 0bf5ce065a | |||
| ac20e98371 | |||
| 607ddfdc57 | |||
|
|
9dff813935 | ||
| 058125065f | |||
|
|
8a16fc9688 | ||
| 661230a857 | |||
| 49aca57540 | |||
| eafd91e372 | |||
|
|
13fd7a03b4 | ||
| b8440d072c | |||
|
|
89919dc836 | ||
| b305fc89f5 | |||
| 26c4892179 | |||
| 86625cc217 | |||
| fdbbee3567 | |||
| f9f10e0719 | |||
| 2b5c9a8de1 | |||
|
|
f44961013c | ||
|
|
a9474e2eb8 | ||
| dbdc55734e | |||
| 9accc7b9f5 | |||
| 41bf601bb6 | |||
| fabe625ef2 | |||
| b072432b6b | |||
| aecd8574c0 | |||
| 8efb5a885e | |||
|
|
b90e27731a | ||
| b1dc9cd3b3 | |||
| 61783f508e | |||
|
|
902197aeb2 | ||
|
|
39357d386a | ||
|
|
6296a68dfd | ||
|
|
23135339e3 | ||
|
|
a6d8de1638 | ||
|
|
762be84685 | ||
| 0b655e298c | |||
| 9ff7c1dce3 | |||
| c392c4f7c2 | |||
| 67f2a40bcd | |||
|
|
6c9f8f188e | ||
|
|
8002e3525b | ||
|
|
c97500dd80 | ||
|
|
aeab4259d8 | ||
| a9bef1b515 | |||
| 654f901ff9 | |||
|
|
4f318753d5 | ||
| ba482bbb2a | |||
| 426f319c74 | |||
| bb9aa745eb | |||
|
|
707db76837 | ||
| 7040c46162 | |||
|
|
672408b1db | ||
|
|
634a3d2075 | ||
| d9d644ab69 | |||
| 0b7e2710f2 | |||
| fd9337d75f | |||
|
|
c2e2730594 | ||
|
|
2069f26b6e | ||
|
|
5b4a6a0183 | ||
|
|
3d912f60d1 | ||
|
|
67234beef0 | ||
|
|
2602a7aad8 | ||
|
|
341259c9e6 | ||
|
|
70f47fbe7e | ||
|
|
217be60a6a | ||
|
|
0e4ccc84cf | ||
|
|
b40e4ba1c8 | ||
| 87e1553a82 | |||
| bc1e95cc30 | |||
| 53d0f90f4e | |||
| 6438b32926 | |||
|
|
6c3c102255 | ||
|
|
e81db121ba | ||
|
|
d48a703bcd | ||
| a0331d2149 | |||
| b81496839a | |||
| 1f62e028b6 | |||
| 5e56c64388 | |||
| 7d4939bf14 | |||
| 19d31cb263 | |||
| c9d8181bcf | |||
| f4e4fcde26 | |||
| 1a89f28d0f | |||
| 172c413f01 | |||
| 9acb5d89b9 | |||
| 77af303189 | |||
| 5564e3ef42 | |||
| c5dd36440f | |||
| 3b82dd7e95 | |||
| 01e9c566d8 | |||
| 35d0d93afd | |||
| 857bc257e2 | |||
| 4d25f0bd7c | |||
| 5c365ab3fa | |||
| b5409d48a9 | |||
| 5f9fa33c3d | |||
| 3aa6d7608d | |||
| 8a68c5b4d3 | |||
| 45863b1eb1 | |||
|
|
7326fa4da4 | ||
|
|
e338a630e6 | ||
| cb975d8aad | |||
| acf2e1f70b | |||
| ad03b42b19 | |||
| a20371f2d2 | |||
|
|
2b4b2c18e7 | ||
|
|
8d84d9c9f2 | ||
|
|
c0b1f6f05a | ||
|
|
bb1392436f | ||
|
|
d8e72fc127 | ||
|
|
75b0a4fda5 | ||
|
|
bb1dafe218 | ||
|
|
33b1eff486 | ||
|
|
72b033eda5 | ||
|
|
656daa9f97 | ||
|
|
1015fa1aaf | ||
|
|
0faaf9bad1 | ||
|
|
a35b5cc1cb | ||
|
|
b7cf1dc4c2 | ||
|
|
f852cea42f | ||
|
|
7ea4328121 | ||
|
|
193559158f | ||
| 34cc6fde0a | |||
|
|
03caf85843 | ||
| bb361e2979 | |||
|
|
ce4e1eba94 | ||
| b0b067ff52 | |||
| 269c9b08c9 | |||
|
|
6f7d0221d4 | ||
| 394fa2de3b | |||
| de263be475 | |||
|
|
cafb23058e | ||
| cf1aa3d38d | |||
| 173a5890f7 | |||
| fc18abc0ba | |||
|
|
30127fcc3c | ||
| e0055a4878 | |||
|
|
3c5eb02712 | ||
| b3e1246472 | |||
| a3fd60656c | |||
| fde6ec771e | |||
| 96faaba8df | |||
| 25af1e5a4b | |||
| 6024a801da | |||
| bf27e9d676 | |||
| 39ff9b668e | |||
| bb4a636946 | |||
| 3c71a9826d | |||
| 63b1ca9669 | |||
| c343fb81ed | |||
|
|
6ad77586cd | ||
| 00252f6732 | |||
| 2950e4532b | |||
| 824711396f | |||
| 5cea39febe | |||
| ea3e74cc2d | |||
| 71bcaf6210 | |||
| 29a6b692fd | |||
| b09ae6a0d6 | |||
| 073a0f8b6e | |||
| 0ba5bcfc18 | |||
| 5daa695f24 | |||
| bbeb9af617 | |||
| 8d0861a178 | |||
|
|
c45684605c | ||
|
|
638e44576b | ||
| b5eb80d2a9 | |||
| 8295f2c348 | |||
| 897359d7a2 | |||
| 65e822b2f3 | |||
| 565d7a7458 | |||
| 66441c9ff3 | |||
| 28d6dc7fe1 | |||
| 158b31956c | |||
| e0fb4eb439 | |||
| d8862e43c9 | |||
| 857b4b338e | |||
| 0c51fd6dc9 | |||
|
|
9bca767580 | ||
| 0d1a062a13 | |||
| 8790b043b6 | |||
| 527f15c634 | |||
| eebcf202ff | |||
| fc801e7c7a | |||
| 03018818a5 | |||
| 8bd9c88a06 | |||
| 7224bd5fbf | |||
| 26a255a4eb | |||
| d79f66cca4 | |||
| 209ad3c789 | |||
| d74bf2230e | |||
| c8eaee63f1 | |||
| b8682e0294 | |||
| c4e0bcd525 | |||
| 426bb27465 | |||
| 45f4ad477d | |||
| eb409200dc | |||
| de10b82cf3 | |||
| 5fce4532d5 | |||
| 61210d785e | |||
| a3b4af5f5b | |||
| 0b7dd998bb | |||
| 554e56f267 | |||
| f18a80caf3 | |||
| cbf12d08d5 | |||
| 7524f50124 | |||
| e1f9dea8d5 | |||
| 43b949365d | |||
| d2b9447220 | |||
| 01d985bf80 | |||
| 073765dcfc | |||
| ce8fd0f388 | |||
| 90fb642c22 | |||
| 610abaf402 | |||
| a7de566991 | |||
| 07dc95a6c7 | |||
| 25777abf08 | |||
| 0865129567 |
28
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
28
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Report a problem!
|
||||||
|
title: "[BUG]"
|
||||||
|
labels: bug
|
||||||
|
assignees: ""
|
||||||
|
---
|
||||||
|
|
||||||
|
**What exactly happened?**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**What should've happened?**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**How did it look?**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Where did you encounter the problem?**
|
||||||
|
|
||||||
|
- Repo: [e.g. URL to your repository]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
|
<!-- If you think you can help us with that, please note it here! -->
|
||||||
15
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
15
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Request a feature!
|
||||||
|
title: "[FEATURE]"
|
||||||
|
labels: enhancement
|
||||||
|
assignees: ""
|
||||||
|
---
|
||||||
|
|
||||||
|
**What would you like to change about the program?**
|
||||||
|
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.
|
||||||
|
|
||||||
|
<!-- If you think you can help us with that, please note it here! -->
|
||||||
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# MacOS system files
|
||||||
|
.DS_Store
|
||||||
|
# NPM
|
||||||
|
node_modules/
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
FROM node:latest
|
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
||||||
4
LICENSE
4
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2020 Conrad
|
Copyright (c) 2020 Conrad Großer
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -14,7 +14,7 @@ copies or substantial portions of the Software.
|
|||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
|||||||
167
README.md
167
README.md
@@ -1,19 +1,172 @@
|
|||||||
# GitHub Prettier Action
|
# GitHub Prettier Action
|
||||||
|
|
||||||
A GitHub action for styling files with [prettier](prettier.io).
|
[](https://www.codefactor.io/repository/github/creyd/prettier_action/overview/master)
|
||||||
|
[](https://github.com/prettier/prettier)
|
||||||
|
[](https://github.com/creyD/prettier_action/blob/master/LICENSE)
|
||||||
|
[](https://github.com/creyD/prettier_action/releases)
|
||||||
|
[](https://github.com/creyD/prettier_action/graphs/contributors)
|
||||||
|
[](https://github.com/creyD/prettier_action/issues)
|
||||||
|
|
||||||
|
A GitHub action for styling files with [prettier](https://prettier.io).
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
| Parameter | Required | Default | Description |
|
| Parameter | Required | Default | Description |
|
||||||
| - | - | - | - |
|
| - | :-: | :-: | - |
|
||||||
| prettier_options | :white_check_mark: | - | Prettier options |
|
| 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 |
|
||||||
|
| prettier_version | :x: | `false` | Specific prettier version (by default use latest) |
|
||||||
|
| working_directory | :x: | `false` | 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 |
|
| commit_options | :x: | - | Custom git commit options |
|
||||||
| commit_message | :x: | 'Prettified Code!' | Custom git commit message |
|
| push_options | :x: | - | Custom git push options |
|
||||||
| file_pattern | :x: | '*' | Custom git add file pattern |
|
| 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) |
|
||||||
| branch | :white_check_mark: | - | Custom git publish branch, use ${{ github.head_ref }} if used in pull requests |
|
| 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)
|
||||||
|
|
||||||
|
> 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
|
||||||
|
|
||||||
|
> 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
|
||||||
|
|
||||||
|
# This action works with pull requests and pushes
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prettier:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
# Make sure the actual branch is checked out when running on pull requests
|
||||||
|
ref: ${{ github.head_ref }}
|
||||||
|
|
||||||
|
- name: Prettify code
|
||||||
|
uses: creyD/prettier_action@v4.2
|
||||||
|
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: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prettier:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
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@v4.2
|
||||||
|
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@v3
|
||||||
|
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.2
|
||||||
|
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@v3
|
||||||
|
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.2
|
||||||
|
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).
|
||||||
|
|
||||||
## Issues
|
## Issues
|
||||||
|
|
||||||
Please report all bugs and feature request using the [GitHub issues function](https://github.com/creyD/prettier_action/issues/new).
|
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.2 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
|
||||||
|
```
|
||||||
|
|||||||
94
action.yml
94
action.yml
@@ -1,37 +1,87 @@
|
|||||||
name: 'Prettier Action'
|
name: Prettier Action
|
||||||
description: 'Automatically runs prettier on all your pull requests.'
|
description: Automatically runs prettier on all your changes.
|
||||||
|
|
||||||
author: Conrad Großer <grosserconrad@gmail.com>
|
author: Conrad Großer <grosserconrad@gmail.com>
|
||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
commit_message:
|
commit_message:
|
||||||
description: Commit message
|
description: Commit message, will be ignored if used with same_commit
|
||||||
required: false
|
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
|
||||||
|
default: false
|
||||||
commit_options:
|
commit_options:
|
||||||
description: Commit options
|
description: Commit options
|
||||||
required: false
|
required: false
|
||||||
file_pattern:
|
push_options:
|
||||||
description: File pattern used for "git add"
|
description: Git push options
|
||||||
required: false
|
required: false
|
||||||
default: '*'
|
file_pattern:
|
||||||
|
description: File pattern used for `git add`, can't be used with only_changed!
|
||||||
|
required: false
|
||||||
|
default: "*"
|
||||||
prettier_options:
|
prettier_options:
|
||||||
description: Options for the 'prettier' command
|
description: Options for the `prettier` command
|
||||||
required: true
|
required: false
|
||||||
branch:
|
default: "--write **/*.js"
|
||||||
description: Branch which the changes are merged to
|
dry:
|
||||||
required: true
|
description: Running the script in dry mode just shows whether there are files that should be prettified or not
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
prettier_version:
|
||||||
|
description: Specific version of prettier (by default just use the latest version)
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
working_directory:
|
||||||
|
description: Specify a directory to cd into before installing prettier and running it
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
only_changed:
|
||||||
|
description: Only prettify files changed in the last commit, 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
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: 'docker'
|
using: "composite"
|
||||||
image: 'Dockerfile'
|
steps:
|
||||||
args:
|
- name: Prettify code!
|
||||||
- ${{ inputs.commit_message }}
|
shell: bash
|
||||||
- ${{ inputs.commit_options }}
|
run: >-
|
||||||
- ${{ inputs.file_pattern }}
|
PATH=$GITHUB_ACTION_PATH/node_modules/.bin:$PATH
|
||||||
- ${{ inputs.prettier_options }}
|
${{ github.action_path }}/entrypoint.sh
|
||||||
- ${{ inputs.branch }}
|
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_FILE_PATTERN: ${{ inputs.file_pattern }}
|
||||||
|
INPUT_PRETTIER_OPTIONS: ${{ inputs.prettier_options }}
|
||||||
|
INPUT_DRY: ${{ inputs.dry }}
|
||||||
|
INPUT_PRETTIER_VERSION: ${{ inputs.prettier_version }}
|
||||||
|
INPUT_ONLY_CHANGED: ${{ inputs.only_changed }}
|
||||||
|
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 }}
|
||||||
|
|
||||||
branding:
|
branding:
|
||||||
icon: 'award'
|
icon: "award"
|
||||||
color: 'green'
|
color: "green"
|
||||||
|
|||||||
164
entrypoint.sh
164
entrypoint.sh
@@ -1,41 +1,147 @@
|
|||||||
#!/bin/sh -l
|
#!/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
|
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)
|
# Function for setting up git env in the docker container (copied from https://github.com/stefanzweifel/git-auto-commit-action/blob/master/entrypoint.sh)
|
||||||
git_setup ( ) {
|
_git_setup ( ) {
|
||||||
cat <<- EOF > $HOME/.netrc
|
cat <<- EOF > $HOME/.netrc
|
||||||
machine github.com
|
machine github.com
|
||||||
login $GITHUB_ACTOR
|
login $GITHUB_ACTOR
|
||||||
password $GITHUB_TOKEN
|
password $INPUT_GITHUB_TOKEN
|
||||||
machine api.github.com
|
machine api.github.com
|
||||||
login $GITHUB_ACTOR
|
login $GITHUB_ACTOR
|
||||||
password $GITHUB_TOKEN
|
password $INPUT_GITHUB_TOKEN
|
||||||
EOF
|
EOF
|
||||||
chmod 600 $HOME/.netrc
|
chmod 600 $HOME/.netrc
|
||||||
|
|
||||||
git config --global user.email "actions@github.com"
|
git config --global user.email "actions@github.com"
|
||||||
git config --global user.name "GitHub Actions"
|
git config --global user.name "GitHub Action"
|
||||||
}
|
}
|
||||||
echo "Installing dependencies..."
|
|
||||||
npm install
|
|
||||||
npm install --global prettier
|
|
||||||
echo "Prettifing files..."
|
|
||||||
prettier $INPUT_PRETTIER_OPTIONS
|
|
||||||
|
|
||||||
if ! git diff --quiet
|
# Checks if any files are changed
|
||||||
then
|
_git_changed() {
|
||||||
echo "Commiting and pushing changes..."
|
[[ -n "$(git status -s)" ]]
|
||||||
# Calling method to configure the git environemnt
|
}
|
||||||
git_setup
|
|
||||||
# Switch to the actual branch
|
_git_changes() {
|
||||||
git checkout $INPUT_BRANCH
|
git diff
|
||||||
# Add changes to git
|
}
|
||||||
git add "${INPUT_FILE_PATTERN}"
|
|
||||||
# Commit and push changes back
|
(
|
||||||
git commit -m "$INPUT_COMMIT_MESSAGE" --author="$GITHUB_ACTOR <$GITHUB_ACTOR@users.noreply.github.com>" ${INPUT_COMMIT_OPTIONS:+"$INPUT_COMMIT_OPTIONS"}
|
# PROGRAM
|
||||||
git push --set-upstream origin "HEAD:$INPUT_BRANCH"
|
# Changing to the directory
|
||||||
echo "Changes pushed successfully."
|
cd "$GITHUB_ACTION_PATH"
|
||||||
|
|
||||||
|
echo "Installing prettier..."
|
||||||
|
|
||||||
|
case $INPUT_WORKING_DIRECTORY in
|
||||||
|
false)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
cd $INPUT_WORKING_DIRECTORY
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $INPUT_PRETTIER_VERSION in
|
||||||
|
false)
|
||||||
|
npm install --silent prettier
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
npm install --silent prettier@$INPUT_PRETTIER_VERSION
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# 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
|
||||||
|
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; }
|
||||||
|
|
||||||
|
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
|
||||||
else
|
else
|
||||||
|
echo "No package-lock.json file."
|
||||||
|
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 "Unpretty Files Changes:"
|
||||||
|
_git_changes
|
||||||
|
echo "Finishing dry-run. Exiting before committing."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
# Calling method to configure the git environemnt
|
||||||
|
_git_setup
|
||||||
|
|
||||||
|
if $INPUT_ONLY_CHANGED; then
|
||||||
|
# --diff-filter=d excludes deleted files
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=$'\n'
|
||||||
|
for file in $(git diff --name-only --diff-filter=d HEAD^..HEAD)
|
||||||
|
do
|
||||||
|
git add "$file"
|
||||||
|
done
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
else
|
||||||
|
# Add changes to git
|
||||||
|
git add "${INPUT_FILE_PATTERN}" || echo "Problem adding your files with pattern ${INPUT_FILE_PATTERN}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Commit and push changes back
|
||||||
|
if $INPUT_SAME_COMMIT; then
|
||||||
|
echo "Amending the current commit..."
|
||||||
|
git pull
|
||||||
|
git commit --amend --no-edit
|
||||||
|
git push origin -f
|
||||||
|
else
|
||||||
|
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."
|
echo "Nothing to commit. Exiting."
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user