Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Different minor changes #123

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
20 changes: 13 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# 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)
Expand All @@ -16,8 +16,9 @@ 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. 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/` |
| 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 |
Expand All @@ -29,6 +30,7 @@ A GitHub action for styling files with [prettier](https://prettier.io).
| 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)

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

Expand All @@ -54,7 +56,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
Expand All @@ -81,7 +83,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
# Make sure the actual branch is checked out when running on pull requests
ref: ${{ github.head_ref }}
Expand Down Expand Up @@ -111,7 +113,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
Expand Down Expand Up @@ -142,7 +144,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
Expand Down Expand Up @@ -170,3 +172,7 @@ This issue was discussed in https://github.com/creyD/prettier_action/issues/113.
- name: Install npm v8
run: npm i -g npm@8
```

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=creyD/prettier_action&type=Date)](https://star-history.com/#creyD/prettier_action&Date)
15 changes: 13 additions & 2 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,18 @@ inputs:
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: 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
Expand All @@ -58,6 +62,10 @@ inputs:
description: Remove the node_modules folder before committing changes
required: false
default: true
git_identity:
description: Which identity is used for git name/email
required: false
default: "actions"

runs:
using: "composite"
Expand All @@ -72,15 +80,18 @@ runs:
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_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 }}

branding:
icon: "award"
Expand Down
60 changes: 31 additions & 29 deletions entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,42 +17,35 @@ _git_setup ( ) {
EOF
chmod 600 $HOME/.netrc

git config --global user.email "[email protected]"
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@@users.noreply.github.com"
elif [ "$INPUT_GIT_IDENTITY" = "actions" ]; then
git config --global user.email "[email protected]"
git config --global user.name "GitHub Action"
else
echo "GIT_IDENTITY must be either 'actor' or 'actions'";
exit 1;
fi;
}

# Checks if any files are changed
_git_changed() {
[[ -n "$(git status -s)" ]]
}

_git_changes() {
git diff
}

(
# PROGRAM
# Changing to the directory
cd "$GITHUB_ACTION_PATH"
if [ -z "$INPUT_WORKING_DIRECTORY" ] ; then
INPUT_WORKING_DIRECTORY=$GITHUB_ACTION_PATH
fi
cd "$INPUT_WORKING_DIRECTORY"

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
npm install --silent prettier@$INPUT_PRETTIER_VERSION

# Install plugins
if [ -n "$INPUT_PRETTIER_PLUGINS" ]; then
Expand All @@ -72,7 +65,7 @@ PRETTIER_RESULT=0
echo "Prettifying files..."
echo "Files:"
prettier $INPUT_PRETTIER_OPTIONS \
|| { PRETTIER_RESULT=$?; echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"; exit 1; }
|| { PRETTIER_RESULT=$?; echo "Problem running prettier with $INPUT_PRETTIER_OPTIONS"; exit 1; } >> $GITHUB_STEP_SUMMARY

echo "Prettier result: $PRETTIER_RESULT"

Expand All @@ -87,7 +80,7 @@ if $INPUT_CLEAN_NODE_FOLDER; then
fi

if [ -f 'package-lock.json' ]; then
git checkout -- package-lock.json
git checkout -- package-lock.json || echo "No package-lock.json file tracked by git."
else
echo "No package-lock.json file."
fi
Expand All @@ -97,9 +90,13 @@ 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
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
Expand All @@ -118,11 +115,16 @@ if _git_changed; then
git add "${INPUT_FILE_PATTERN}" || echo "Problem adding your files with pattern ${INPUT_FILE_PATTERN}"
fi

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
if [ "$INPUT_COMMIT_DESCRIPTION" != "" ]; then
Expand Down