20 Commits
v2.0 ... v2.1

Author SHA1 Message Date
8790b043b6 Added documentation for dry option 2020-03-16 16:03:20 +01:00
527f15c634 Added hard break for dry mode 2020-03-16 15:55:22 +01:00
eebcf202ff Removed prettier catch 2020-03-16 15:48:20 +01:00
fc801e7c7a Fixed a bug with new dry option 2020-03-16 15:36:25 +01:00
03018818a5 Added dry mode 2020-03-16 15:30:17 +01:00
8bd9c88a06 Improved README and Code 2020-02-19 12:16:39 +01:00
7224bd5fbf Reworked YML config 2020-02-18 07:34:38 +01:00
26a255a4eb Added on push example 2020-02-18 07:28:35 +01:00
d79f66cca4 Update README.md 2020-02-17 23:18:45 +01:00
209ad3c789 Fixed Incorrect Intend 2020-02-17 23:08:15 +01:00
d74bf2230e Readded netrc file 2020-02-17 23:05:16 +01:00
c8eaee63f1 Fixed Naming Mistake 2020-02-17 23:02:27 +01:00
b8682e0294 Improved Stability of Pushing
- Updated code from the template I used
2020-02-17 22:42:00 +01:00
c4e0bcd525 Update entrypoint.sh 2020-02-17 10:47:10 +01:00
426bb27465 Update entrypoint.sh 2020-02-17 10:38:41 +01:00
45f4ad477d [TESTING] Added git fetch for optimal operation 2020-02-17 09:38:17 +01:00
eb409200dc Update README.md 2020-01-29 09:39:04 +01:00
de10b82cf3 Fixed error "Git not found" 2020-01-27 13:33:30 +01:00
5fce4532d5 Added CodeFactor Badge 2020-01-24 22:40:20 +01:00
61210d785e Pinned Docker Version 2020-01-24 22:39:32 +01:00
5 changed files with 111 additions and 54 deletions

View File

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

View File

@@ -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

View File

@@ -1,5 +1,7 @@
# GitHub Prettier Action # 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)
A GitHub action for styling files with [prettier](https://prettier.io). A GitHub action for styling files with [prettier](https://prettier.io).
## Usage ## Usage
@@ -8,15 +10,18 @@ A GitHub action for styling files with [prettier](https://prettier.io).
| Parameter | Required | Default | Description | | Parameter | Required | Default | Description |
| - | :-: | :-: | - | | - | :-: | :-: | - |
| prettier_options | :x: | --write **/*.js | Prettier options (by default it applies to the whole repository) | | dry | :x: | False | Runs the action in dry mode. Files wont get changed and the action fails if there are unprettified files. |
| commit_options | :x: | No options. | Custom git commit options | | prettier_options | :x: | `--write **/*.js` | Prettier options (by default it applies to the whole repository) |
| commit_options | :x: | - | Custom git commit options |
| commit_message | :x: | Prettified Code! | Custom git commit message | | commit_message | :x: | Prettified Code! | Custom git commit message |
| file_pattern | :x: | * | Custom git add file pattern | | file_pattern | :x: | * | Custom git add file pattern |
| branch | :white_check_mark: | - | Custom git publish branch, use ${{ github.head_ref }} if used in pull requests | | branch | :white_check_mark: | - | There are two types of action triggers in GitHub: on pull request and on push. The branch needs to be defined for both, but in case of the pull request trigger it should have `${{ github.head_ref }}` and on push it should have the branch the trigger is designed for. |
### Example Config ### Example Config
This is a small example of what your `action.yml` could look like: #### Example - On Pull Request
This is a small example of what your `action.yml` could look like (on pull request mode):
```yaml ```yaml
name: Prettier for JS Code name: Prettier for JS Code
@@ -33,16 +38,43 @@ jobs:
with: with:
fetch-depth: 1 fetch-depth: 1
- name: Prettify the JS Code - name: Prettify the JS Code
uses: creyD/prettier_action@v1.0 uses: creyD/prettier_action@v2.0
with: with:
prettier_options: '--no-semi --write src/**/*.js' prettier_options: '--no-semi --write *.js'
branch: ${{ github.head_ref }} branch: ${{ github.head_ref }}
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
``` ```
This simple example executes `prettier --no-semi --write src/**/*.js` after someone created a Pull Request on your repository. More documentation can be found [here](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions). #### Example - On Push
```yaml
name: Prettier for JS Code
on:
push:
branches: [master]
jobs:
cleanup_tasks:
runs-on: ubuntu-latest
steps:
- name: Cloning the repository
uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Prettify the JS Code
uses: creyD/prettier_action@v2.0
with:
prettier_options: '--no-semi --write *.js'
branch: master
env:
GITHUB_TOKEN: ${{ secrets.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!

View File

@@ -1,5 +1,5 @@
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>
@@ -7,32 +7,30 @@ inputs:
commit_message: commit_message:
description: Commit message description: Commit message
required: false required: false
default: "Prettified Code!" default: 'Prettified Code!'
commit_options: commit_options:
description: Commit options description: Commit options
required: false required: false
file_pattern: file_pattern:
description: File pattern used for "git add" description: File pattern used for `git add`
required: false required: false
default: "*" default: '*'
prettier_options: prettier_options:
description: Options for the 'prettier' command description: Options for the `prettier` command
required: false required: false
default: "--write **/*.js" default: '--write **/*.js'
branch: branch:
description: Branch which the changes are merged to description: Target branch for the changes
required: true required: true
dry:
description: Running the script in dry mode just shows whether there are files that should be prettified or not
required: false
default: False
runs: runs:
using: "docker" using: 'docker'
image: "Dockerfile" image: 'Dockerfile'
args:
- ${{ inputs.commit_message }}
- ${{ inputs.commit_options }}
- ${{ inputs.file_pattern }}
- ${{ inputs.prettier_options }}
- ${{ inputs.branch }}
branding: branding:
icon: "award" icon: 'award'
color: "green" color: 'green'

View File

@@ -1,41 +1,67 @@
#!/bin/sh #!/bin/sh
# e is for exiting the script automatically if a command fails, u is for exiting if a variable is not set, x is for showing the commands before they are executed # e is for exiting the script automatically if a command fails, u is for exiting if a variable is not set
set -eux # x would be for showing the commands before they are executed
set -eu
# 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 $GITHUB_TOKEN
machine api.github.com machine api.github.com
login $GITHUB_ACTOR login $GITHUB_ACTOR
password $GITHUB_TOKEN password $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"
} }
# Checks if any files are changed
_git_changed() {
[[ -n "$(git status -s)" ]]
}
# Pushes to the according upstream (origin or input branch)
_git_push() {
if [ -z "$INPUT_BRANCH" ]
then
git push origin
else
git push --set-upstream origin "HEAD:$INPUT_BRANCH"
fi
}
# PROGRAM
echo "Installing prettier..." echo "Installing prettier..."
npm install --silent --global prettier npm install --silent --global prettier
echo "Prettifing files..."
prettier $INPUT_PRETTIER_OPTIONS || echo "Problem while prettifying your files!"
if ! git diff --quiet echo "Prettifing files..."
echo "Files:"
prettier $INPUT_PRETTIER_OPTIONS || echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"
# To keep runtime good, just continue if something was changed
if _git_changed;
then then
echo "Commiting and pushing changes..." if $INPUT_DRY; then
# Calling method to configure the git environemnt echo "Prettier found unpretty files."
git_setup exit 1
# Switch to the actual branch else
git checkout $INPUT_BRANCH # Calling method to configure the git environemnt
# Add changes to git _git_setup
git add "${INPUT_FILE_PATTERN}" echo "Commiting and pushing changes..."
# Commit and push changes back # Switch to the actual branch
git commit -m "$INPUT_COMMIT_MESSAGE" --author="$GITHUB_ACTOR <$GITHUB_ACTOR@users.noreply.github.com>" ${INPUT_COMMIT_OPTIONS:+"$INPUT_COMMIT_OPTIONS"} git checkout $INPUT_BRANCH || echo "Problem checking out the specified branch: $INPUT_BRANCH"
git push --set-upstream origin "HEAD:$INPUT_BRANCH" # Add changes to git
echo "Changes pushed successfully." git add "${INPUT_FILE_PATTERN}" || echo "Problem adding your files with pattern ${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"}
_git_push
echo "Changes pushed successfully."
fi
else else
echo "Nothing to commit. Exiting." echo "Nothing to commit. Exiting."
fi fi