mirror of
https://github.com/creyD/prettier_action.git
synced 2026-04-12 19:30:30 +02:00
Compare commits
151 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c1711cdd30 | ||
|
|
bf5539213f | ||
| 6b98d6d1d4 | |||
| afbe64738b | |||
|
|
6a7b2d092f | ||
| af8ff244c5 | |||
| acebb0f4d5 | |||
| b185d84b38 | |||
| 5e54c68940 | |||
| ff6bab6030 | |||
| 22eb028766 | |||
| e2704493af | |||
| d7f059e30c | |||
| b73c2bf29c | |||
| f24ab29247 | |||
| 9f54668ece | |||
| eeb940db6d | |||
| 12efc36860 | |||
|
|
e53f331f48 | ||
| d5e6c388c3 | |||
| 99914860a6 | |||
|
|
a3561a8976 | ||
| f32e6a975a | |||
| 117a7a5b37 | |||
| 5d0450c2bc | |||
| 57dc57f236 | |||
|
|
0fc0cf4723 | ||
| 5b5cb513f1 | |||
|
|
4bd40fc486 | ||
|
|
9aba96f268 | ||
|
|
a1c90f8992 | ||
| 473978add9 | |||
| d04162ee72 | |||
| 9561a3f1e1 | |||
| 4ccf35e06f | |||
| 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 |
8
.github/ISSUE_TEMPLATE/bug_report.md
vendored
8
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -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! -->
|
||||
|
||||
5
.github/ISSUE_TEMPLATE/feature_request.md
vendored
5
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -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.
|
||||
|
||||
@@ -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"]
|
||||
170
README.md
170
README.md
@@ -1,36 +1,47 @@
|
||||
# GitHub Prettier Action
|
||||
|
||||
[](https://www.codefactor.io/repository/github/creyd/prettier_action/overview/master)
|
||||
[](https://github.com/prettier/prettier)
|
||||
[](https://app.codacy.com/gh/creyD/prettier_action/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
||||
[](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
|
||||
|
||||
### 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. |
|
||||
| prettier_version | :x: | `false` | Specific prettier version (by default use latest) |
|
||||
| prettier_options | :x: | `"--write **/*.js"` | Prettier options (by default it applies to the whole repository) |
|
||||
| commit_options | :x: | - | Custom git commit 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` |
|
||||
| file_pattern | :x: | `*` | Custom git add file pattern, can't be used with only_changed! |
|
||||
| prettier_plugins | :x: | ` ` | Install Prettier plugins, i.e. `@prettier/prettier-php @prettier/some-other-plugin` |
|
||||
| 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)|
|
||||
| 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) |
|
||||
|
||||
> 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 +50,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@v5
|
||||
|
||||
- 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@v5
|
||||
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@v5
|
||||
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@v5
|
||||
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 +162,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>
|
||||
|
||||
89
action.yml
89
action.yml
@@ -7,43 +7,106 @@ 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
|
||||
default: false
|
||||
add_options:
|
||||
description: Git add options
|
||||
required: false
|
||||
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
|
||||
prettier_plugins:
|
||||
description: Install Prettier plugins, i.e. `@prettier/prettier-php @prettier/some-other-plugin`
|
||||
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: ''
|
||||
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_ADD_OPTIONS: ${{ inputs.add_options }}
|
||||
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"
|
||||
|
||||
155
entrypoint.sh
155
entrypoint.sh
@@ -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,66 +35,131 @@ _git_changed() {
|
||||
[[ -n "$(git status -s)" ]]
|
||||
}
|
||||
|
||||
(
|
||||
# PROGRAM
|
||||
# Changing to the directory
|
||||
if [ -z "$INPUT_WORKING_DIRECTORY" ] ; then
|
||||
INPUT_WORKING_DIRECTORY=$GITHUB_ACTION_PATH
|
||||
fi
|
||||
cd "$INPUT_WORKING_DIRECTORY"
|
||||
|
||||
echo "Installing prettier..."
|
||||
case $INPUT_PRETTIER_VERSION in
|
||||
false)
|
||||
npm install --silent --global prettier
|
||||
;;
|
||||
*)
|
||||
npm install --silent --global prettier@$INPUT_PRETTIER_VERSION
|
||||
;;
|
||||
esac
|
||||
|
||||
npm install --silent prettier@$INPUT_PRETTIER_VERSION
|
||||
|
||||
# Install plugins
|
||||
if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then
|
||||
for plugin in $INPUT_PRETTIER_PLUGINS; do
|
||||
echo "Checking plugin: $plugin"
|
||||
# check regex against @prettier/xyz
|
||||
if ! echo "$plugin" | grep -Eq '(@prettier\/)+(plugin-[a-z\-]+)'; then
|
||||
echo "$plugin does not seem to be a valid @prettier/plugin-x plugin. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
npm install --silent --global $INPUT_PRETTIER_PLUGINS
|
||||
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:"
|
||||
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
|
||||
|
||||
echo "Prettifing files..."
|
||||
echo "Files:"
|
||||
prettier $INPUT_PRETTIER_OPTIONS || echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"
|
||||
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
|
||||
# Calling method to configure the git environment
|
||||
_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_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
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user