Improve pre-commit hook
Runs a robust TypeScript check before running ESLint. Test plan: - Make a change to a .ts/.tsx file that will cause a lint error - Try to commit a change - Verify that the precommit hook fails flag=none Change-Id: I6772041b2ae670ae9b9d654b07cbd97a80ad6896 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310371 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Ed Schiebel <eschiebel@instructure.com> Reviewed-by: Christopher Soto <christopher.soto@instructure.com> QA-Review: Aaron Shafovaloff <ashafovaloff@instructure.com> Product-Review: Aaron Shafovaloff <ashafovaloff@instructure.com>
This commit is contained in:
parent
fe7a1fa858
commit
f9eca2680a
|
@ -1,4 +1,3 @@
|
|||
module.exports = {
|
||||
'*.{js,ts,tsx}': ['eslint --fix', 'git add'],
|
||||
'*.{ts,tsx}': ['tsc-files -p tsconfig.json --noEmit']
|
||||
}
|
||||
|
|
|
@ -4,16 +4,41 @@ if [[ "$SKIP_CANVAS_PRECOMMIT_HOOK" == "1" ]]; then
|
|||
exit 0
|
||||
fi
|
||||
|
||||
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||
SCRIPTPATH="$(
|
||||
cd -- "$(dirname "$0")" >/dev/null 2>&1
|
||||
pwd -P
|
||||
)"
|
||||
CANVAS=$(dirname $SCRIPTPATH)
|
||||
|
||||
if [ `pwd -P` = $CANVAS ]; then
|
||||
if [ $(pwd -P) = $CANVAS ]; then
|
||||
# if .ts or .tsx files have changed, run tsc
|
||||
if git diff --cached --name-only | grep -qE '\.(ts|tsx)$'; then
|
||||
if [ -f node_modules/.bin/tsc ]; then
|
||||
echo 'Checking TypeScript...'
|
||||
node_modules/.bin/tsc -p tsconfig.json --noEmit
|
||||
if [ $? -ne 0 ]; then
|
||||
echo 'TypeScript errors found, aborting commit'
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo 'Trying to run tsc inside Docker. If you want things quicker yarn install locally.'
|
||||
docker-compose exec -T web node_modules/.bin/tsc -p tsconfig.json --noEmit ||
|
||||
echo "You should run yarn locally or check to make sure docker is running."
|
||||
fi
|
||||
fi
|
||||
|
||||
# if .js, .ts, or .tsx files have changed, run eslint
|
||||
if [ -f node_modules/.bin/lint-staged ]; then
|
||||
echo 'Running ESLint...'
|
||||
yarn run --silent lint:staged
|
||||
if [ $? -ne 0 ]; then
|
||||
echo 'ESLint errors found, aborting commit'
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo 'Trying to run lint:staged inside Docker, if you want things quicker yarn install locally.'
|
||||
docker-compose run --rm --no-deps web yarn run lint:staged ||
|
||||
echo 'You should run `yarn` locally or check to make sure docker is running.'
|
||||
echo 'Trying to run lint:staged inside Docker. If you want things quicker yarn install locally.'
|
||||
docker-compose exec -T web yarn run lint:staged ||
|
||||
echo "You should run yarn locally or check to make sure docker is running."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -327,7 +327,6 @@
|
|||
"through2": "^3",
|
||||
"timezone-mock": "^1.3.1",
|
||||
"tinymce": "^5",
|
||||
"tsc-files": "^1.1.3",
|
||||
"typescript": "^4.3.5",
|
||||
"waait": "^1",
|
||||
"webpack": "^5",
|
||||
|
|
|
@ -24701,11 +24701,6 @@ ts-pnp@^1.1.6:
|
|||
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
|
||||
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
|
||||
|
||||
tsc-files@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/tsc-files/-/tsc-files-1.1.3.tgz#ef4cfcb7affc9b90577d707a879dc53bb105be83"
|
||||
integrity sha512-G6uXkTNofGU9EE1fYBaCpR72x/aqXW4PDAuznWj4JYlDwhcaKnUn4CiCHBMc89lDxLmikK+hhaEWLoTPEKKvXg==
|
||||
|
||||
tsconfig-paths@^3.12.0:
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
|
||||
|
|
Loading…
Reference in New Issue