af7c98a908
'pre-commit' tool [1] provides an extensible way to configure hooks which can be run automatically before each commit. That way we can make sure that code send to review is passing base static analysis checks like e.g. bandit, flake8 or hacking. For now this is optional to use and not integrated in e.g. tox.ini file but we can integrate it there too as next step. [1] https://pre-commit.com/ Change-Id: Ia3bc21ccacacbcb8a529163533557312cbbf25bd
65 lines
1.5 KiB
Bash
Executable File
65 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
usage () {
|
|
echo "Usage: $0 [OPTION]..."
|
|
echo "Run Neutron's coding check(s)"
|
|
echo ""
|
|
echo " -Y, --pylint [<basecommit>] Run pylint check on the entire neutron module or just files changed in basecommit (e.g. HEAD~1)"
|
|
echo " -h, --help Print this usage message"
|
|
echo
|
|
exit 0
|
|
}
|
|
|
|
process_options () {
|
|
i=1
|
|
while [ $i -le $# ]; do
|
|
eval opt=\$$i
|
|
case $opt in
|
|
-h|--help) usage;;
|
|
-Y|--pylint) pylint=1;;
|
|
*) scriptargs="$scriptargs $opt"
|
|
esac
|
|
i=$((i+1))
|
|
done
|
|
}
|
|
|
|
run_pylint () {
|
|
local target="${scriptargs:-all}"
|
|
|
|
if [ "$target" = "all" ]; then
|
|
files="neutron"
|
|
else
|
|
case "$target" in
|
|
*HEAD~[0-9]*) files=$(git diff --diff-filter=AM --name-only $target -- "*.py");;
|
|
*) echo "$target is an unrecognized basecommit"; exit 1;;
|
|
esac
|
|
fi
|
|
|
|
echo "Running pylint..."
|
|
echo "You can speed this up by running it on 'HEAD~[0-9]' (e.g. HEAD~1, this change only)..."
|
|
echo ""
|
|
echo "Consider using the 'pre-commit' tool instead."
|
|
echo ""
|
|
echo " pip install --user pre-commit"
|
|
echo " pre-commit install --allow-missing-config"
|
|
echo ""
|
|
if [ -n "${files}" ]; then
|
|
pylint --rcfile=.pylintrc --output-format=colorized ${files}
|
|
else
|
|
echo "No python changes in this commit, pylint check not required."
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
scriptargs=
|
|
pylint=1
|
|
|
|
process_options $@
|
|
|
|
if [ $pylint -eq 1 ]; then
|
|
run_pylint
|
|
exit 0
|
|
fi
|