spiff-arena/bin/run_pyl
Kevin Burnett f2c982a96c
Look for bad get_current_user scripts (#1370)
* initial script to find get_current_user calls

* handle pre and post scripts as well

* refactor

* omit absolute root dir path when printing

* avoid printing NS

* consolidate lxml parsing in one place

---------

Co-authored-by: burnettk <burnettk@users.noreply.github.com>
2024-04-10 09:44:13 -07:00

74 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
function error_handler() {
echo >&2 "Exited with BAD EXIT CODE '${2}' in ${0} script at line: ${1}."
exit "$2"
}
trap 'error_handler ${LINENO} $?' ERR
set -o errtrace -o errexit -o nounset -o pipefail
python_projects=(
spiffworkflow-backend
)
react_projects=(
spiffworkflow-frontend
)
subcommand="${1:-}"
function get_python_dirs() {
(git ls-tree -r HEAD --name-only | grep -E '\.py$' | awk -F '/' '{print $1}' | sort | uniq | grep -v '\.' | grep -Ev '^(bin|migrations)$') || echo ''
}
function run_autofixers() {
python_dirs="$(get_python_dirs) bin"
# shellcheck disable=2086
poetry run ruff check --fix $python_dirs || echo ''
}
function run_pre_commmit() {
poetry run pre-commit run --verbose --all-files
}
for react_project in "${react_projects[@]}"; do
# if pre, only do stuff when there are changes
if [[ -n "$(git status --porcelain "$react_project")" ]]; then
pushd "$react_project"
npm run lint:fix
popd
fi
done
for python_project in "${python_projects[@]}"; do
# if pre, only do stuff when there are changes
if [[ "$subcommand" != "pre" ]] || [[ -n "$(git status --porcelain "$python_project")" ]]; then
pushd "$python_project"
run_autofixers || run_autofixers
popd
fi
done
if [[ "$subcommand" != "pre" ]] || [[ -n "$(git status --porcelain "spiffworkflow-backend")" ]]; then
# rune_pre_commit only applies to spiffworkflow-backend at the moment
run_pre_commmit || run_pre_commmit
fi
function clear_log_file() {
unit_testing_log_file="./log/unit_testing.log"
if [[ -f "$unit_testing_log_file" ]]; then
>"$unit_testing_log_file"
fi
}
for python_project in "${python_projects[@]}"; do
if [[ "$subcommand" != "pre" ]] || [[ -n "$(git status --porcelain "$python_project")" ]]; then
pushd "$python_project"
poetry install
poetry run mypy $(get_python_dirs)
clear_log_file
./bin/tests-par
popd
fi
done