فهرست منبع

build: fix elvis check and ensure newline at EOF

Zaiming Shi 4 سال پیش
والد
کامیت
37edb03866
2فایلهای تغییر یافته به همراه43 افزوده شده و 11 حذف شده
  1. 11 3
      .github/workflows/elvis_lint.yaml
  2. 32 8
      scripts/elvis-check.sh

+ 11 - 3
.github/workflows/elvis_lint.yaml

@@ -1,4 +1,4 @@
-name: Elvis Linter
+name: Code style check
 
 on: [pull_request]
 
@@ -7,10 +7,18 @@ jobs:
     runs-on: ubuntu-20.04
     steps:
       - uses: actions/checkout@v2
+        with:
+          fetch-depth: 1000
       - name: Set git token
         if: endsWith(github.repository, 'enterprise')
         run: |
           echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials
           git config --global credential.helper store
-      - run: |
-          ./scripts/elvis-check.sh $GITHUB_BASE_REF
+      - name: Run elvis check
+        run: |
+          set -e
+          if [ -f EMQX_ENTERPRISE ]; then
+            ./scripts/elvis-check.sh $GITHUB_BASE_REF emqx-enterprise
+          else
+            ./scripts/elvis-check.sh $GITHUB_BASE_REF emqx
+          fi

+ 32 - 8
scripts/elvis-check.sh

@@ -5,16 +5,16 @@
 
 set -euo pipefail
 
-ELVIS_VERSION='1.0.0-emqx-2'
+elvis_version='1.0.0-emqx-2'
 
 base="${1:-}"
+repo="${2:-emqx/emqx}"
+REPO="${GITHUB_REPOSITORY:-${repo}}"
 if [ "${base}" = "" ]; then
     echo "Usage $0 <git-compare-base-ref>"
     exit 1
 fi
 
-elvis_version="${2:-$ELVIS_VERSION}"
-
 echo "elvis -v: $elvis_version"
 echo "git diff base: $base"
 
@@ -27,11 +27,7 @@ if [[ "$base" =~ [0-9a-f]{8,40} ]]; then
     # base is a commit sha1
     compare_base="$base"
 else
-    if [[ $CI == true ]];then
-        remote="$(git remote -v | grep -E "github\.com(.|/)$GITHUB_REPOSITORY" | grep fetch | awk '{print $1}')"
-    else
-        remote="$(git remote -v | grep -E 'github\.com(.|/)emqx' | grep fetch | awk '{print $1}')"
-    fi
+    remote="$(git remote -v | grep -E "github\.com(:|/)$REPO((\.git)|(\s))" | grep fetch | awk '{print $1}')"
     git fetch "$remote" "$base"
     compare_base="$remote/$base"
 fi
@@ -58,3 +54,31 @@ if [ $bad_file_count -gt 0 ]; then
     echo "elvis: $bad_file_count errors"
     exit 1
 fi
+
+### now check new-line at EOF for changed files
+
+nl_at_eof() {
+    local file="$1"
+    if ! [ -f "$file" ]; then
+        return
+    fi
+    case "$file" in
+        *.png|*rebar3)
+            return
+            ;;
+    esac
+    local lastbyte
+    lastbyte="$(tail -c 1 "$file" 2>&1)"
+    if [ "$lastbyte" != '' ]; then
+        echo "$file"
+        return 1
+    fi
+}
+
+for file in $(git_diff); do
+    if ! nl_at_eof "$file"; then
+        bad_file_count=$(( bad_file_count  + 1 ))
+    fi
+done
+
+exit $bad_file_count