From 315d14d3edc6943648d97ae28c472fec03cbf082 Mon Sep 17 00:00:00 2001 From: "ayodele.akingbule" Date: Wed, 9 Dec 2020 13:14:06 +0100 Subject: [PATCH] chore(lint): Add Elvis Linter Config and Github Action --- .github/workflows/elvis_lint.yaml | 13 +++++++++++ .gitignore | 1 + elvis-check.sh | 36 +++++++++++++++++++++++++++++++ elvis.config | 31 ++++++++++++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 .github/workflows/elvis_lint.yaml create mode 100755 elvis-check.sh create mode 100644 elvis.config diff --git a/.github/workflows/elvis_lint.yaml b/.github/workflows/elvis_lint.yaml new file mode 100644 index 000000000..7d852b44f --- /dev/null +++ b/.github/workflows/elvis_lint.yaml @@ -0,0 +1,13 @@ +name: Elvis Linter + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - run: | + echo "$GITHUB_BASE_REF" + echo "$GITHUB_HEAD_REF" + ./elvis-check.sh $GITHUB_BASE_REF $GITHUB_HEAD_REF diff --git a/.gitignore b/.gitignore index aaec950d4..101ceae31 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ erlang.mk *.coverdata etc/emqx.conf.rendered Mnesia.*/ +elvis diff --git a/elvis-check.sh b/elvis-check.sh new file mode 100755 index 000000000..61b8e4c79 --- /dev/null +++ b/elvis-check.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +set -euo pipefail + +echo "GITHUB_BASE_REF $1" +echo "GITHUB_HEAD_REF $2" +echo "$GITHUB_SHA" + +ELVIS_VERSION='1.0.0-emqx-1' + +base=${GITHUB_BASE_REF:-$1} +elvis_version="${3:-$ELVIS_VERSION}" + +echo "$elvis_version" +echo "$base" + +if [ ! -f ./elvis ] || [ "$(./elvis -v | grep -oE '[1-9]+\.[0-9]+\.[0-9]+\-emqx-[0-9]+')" != "$ELVIS_VERSION" ]; then + curl -fLO "https://github.com/emqx/elvis/releases/download/$elvis_version/elvis" + chmod +x ./elvis +fi + +git fetch origin "$base" +git checkout -b refBranch HEAD +git diff --name-only origin/"$base" refBranch + +bad_file_count=0 +for n in $(git diff --name-only origin/"$base" refBranch); do + + if ! ./elvis rock "$n"; then + bad_file_count=$(( bad_file_count + 1)) + fi +done +if [ $bad_file_count -gt 0 ]; then + echo "elvis: $bad_file_count errors" + exit 1 +fi diff --git a/elvis.config b/elvis.config new file mode 100644 index 000000000..526674f49 --- /dev/null +++ b/elvis.config @@ -0,0 +1,31 @@ +[ + { + elvis, + [ + {config, + [ + {dirs => ["apps"], + filter => "*.erl", + ruleset => erl_files, +# rules => [ +# {elvis_style, max_module_length, #{}}, +# {elvis_style, no_common_caveats_call, #{}} +# ] + }, + {dirs => ["."], + filter => "Makefile", + ruleset => makefiles + }, + {dirs => ["."], + filter => "rebar.config", + ruleset => rebar_config + }, + {dirs => ["."], + filter => "elvis.config", + ruleset => elvis_config + } + ] + } + ] + } +].