Skip to content

Commit

Permalink
GHA: Introduce new workflow to nitpick on trailing spaces and long lines
Browse files Browse the repository at this point in the history
  • Loading branch information
Stefan Knorr committed Jun 15, 2021
1 parent 88b4164 commit 5a4f490
Showing 1 changed file with 94 additions and 0 deletions.
94 changes: 94 additions & 0 deletions .github/workflows/nitpicks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
name: Nitpicks

on: pull_request

jobs:
trailing-space:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
with:
ref: $GITHUB_BASE_REF
- uses: actions/checkout@v2
with:
ref: $GITHUB_HEAD_REF
- name: Checking for trailing characters
run: |
trail=$(git diff -U0 $GITHUB_BASE_REF..$GITHUB_HEAD_REF | sed -n '/^+/ p' | sed -n '/[  \t]$/ p' | sed -r -e 's/ /•/g' -e 's/\t/→/g' -e 's/ /⋄/g')
if [[ -n "$trail" ]]; then
echo "This pull request introduces trailing spaces (•)/tabs (→)/protected spaces (⋄) on the following lines:"
echo -e "\n$trail"
exit 1
else
echo "This looks aight."
exit 0
fi
unwanted-character:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
with:
ref: $GITHUB_BASE_REF
- uses: actions/checkout@v2
with:
ref: $GITHUB_HEAD_REF
- name: Checking for tabs
run: |
tab=$(git diff -U0 $GITHUB_BASE_REF..$GITHUB_HEAD_REF | sed -n '/^+/ p' | sed -n '/\t/ p' | sed -r -e 's/\t/→/g')
if [[ -n "$tab" ]]; then
echo "This pull request introduces tabs (→) on the following lines:"
echo -e "\n$tab"
exit 1
else
echo "This looks aight."
exit 0
fi
- name: Checking for Windows/Mac line ends
run: |
lineends=$(git diff -U0 $GITHUB_BASE_REF..$GITHUB_HEAD_REF | sed -n '/^+/ p' | sed -n '/\r/ p' | sed -r -e 's/\r/↲/g')
if [[ -n "$lineends" ]]; then
echo "This pull request introduces Windows/Mac line ends (↲) on the following lines:"
echo -e "\n$lineends"
exit 1
else
echo "This looks aight."
exit 0
fi
long-line:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
with:
ref: $GITHUB_BASE_REF
- uses: actions/checkout@v2
with:
ref: $GITHUB_HEAD_REF
- name: Checking for long lines
# We exclude screen, as there are legitimate reasons for them to be long.
run: |
potential=$(git diff -U1000 $GITHUB_BASE_REF..$GITHUB_HEAD_REF | tr '\n' '\r' | sed -r -e 's,<screen[^>]*/>,,g' -e 's,</screen[^>]*>,⋘,g' -e 's,<screen[^/>]*>[^⋘]*⋘,,g' | tr '\r' '\n' | sed -n '/^+/ p')
len=$(echo -e "$potential" | wc -l)
long=''
for n in $(seq 1 "$len"); do
line=$(echo -e "$potential" | sed -n "$n p")
if [[ $(echo "$line" | wc -c) -gt 91 ]]; then
long+="\n$line"
fi
done
if [[ -n "$long" ]]; then
echo "This pull request introduces long lines (80+ characters) in at least the following spots:"
echo -e "\n$long"
exit 1
else
echo "This looks aight."
exit 0
fi

0 comments on commit 5a4f490

Please sign in to comment.