8295bd6882
this shall be a progressive process
61 lines
1.1 KiB
Bash
Executable File
61 lines
1.1 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
|
|
#
|
|
# Prelude - make bash behave sanely
|
|
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
|
|
#
|
|
set -euo pipefail
|
|
|
|
# Make pushd & popd silent
|
|
pushd () {
|
|
command pushd "$@" > /dev/null
|
|
}
|
|
|
|
popd () {
|
|
command popd "$@" > /dev/null
|
|
}
|
|
|
|
export EXIT_CODE=0
|
|
|
|
|
|
function lint_changed() {
|
|
# Allow lint to be ran from outside of the root directory
|
|
local git_root
|
|
git_root=$(git rev-parse --show-cdup)
|
|
git_root=${git_root:-./}
|
|
|
|
local subdirs
|
|
subdirs=$(find "$git_root" -maxdepth 2 -mindepth 2 -name 'Makefile' -printf '%h\n')
|
|
|
|
|
|
for directory in $subdirs
|
|
do
|
|
pushd "$directory"
|
|
|
|
local npm_bin="node_modules/.bin"
|
|
local eslint="$npm_bin/eslint"
|
|
|
|
function lint() {
|
|
local to_lint
|
|
to_lint=$(git diff --staged --diff-filter=ACMTUXB --name-only -- '*.j'{s,sx})
|
|
echo $to_lint
|
|
echo $eslint
|
|
|
|
if [ "$to_lint" ]; then
|
|
$eslint "$to_lint" -c ".eslintrc" || EXIT_CODE=$?
|
|
fi
|
|
}
|
|
|
|
lint
|
|
popd
|
|
done
|
|
}
|
|
|
|
lint_changed
|
|
if [[ "$EXIT_CODE" -gt "0" ]]; then
|
|
exit $EXIT_CODE
|
|
fi
|
|
make test
|
|
|
|
echo "⚡️ changed files pass eslint! ⚡️"
|