63 lines
1.4 KiB
Bash
Executable File
63 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
PYTHON_DIR="$ROOT_DIR/infra-run/scripts/python"
|
|
|
|
ok_count=0
|
|
warn_count=0
|
|
fail_count=0
|
|
|
|
ok() {
|
|
printf 'OK: %s\n' "$*"
|
|
ok_count=$((ok_count + 1))
|
|
}
|
|
|
|
warning() {
|
|
printf 'WARNING: %s\n' "$*"
|
|
warn_count=$((warn_count + 1))
|
|
}
|
|
|
|
critical() {
|
|
printf 'CRITICAL: %s\n' "$*"
|
|
fail_count=$((fail_count + 1))
|
|
}
|
|
|
|
if ! command -v python3 >/dev/null 2>&1; then
|
|
critical "python3 not installed"
|
|
printf '\nPython summary: %d OK, %d WARNING, %d CRITICAL\n' "$ok_count" "$warn_count" "$fail_count"
|
|
exit 2
|
|
fi
|
|
|
|
if [[ ! -d "$PYTHON_DIR" ]]; then
|
|
warning "No infra-run/scripts/python directory found"
|
|
printf '\nPython summary: %d OK, %d WARNING, %d CRITICAL\n' "$ok_count" "$warn_count" "$fail_count"
|
|
exit 0
|
|
fi
|
|
|
|
mapfile -t python_files < <(find "$PYTHON_DIR" -type f -name '*.py' -print | sort)
|
|
|
|
if ((${#python_files[@]} == 0)); then
|
|
warning "No Python files found under infra-run/scripts/python"
|
|
else
|
|
ok "Found ${#python_files[@]} Python files"
|
|
fi
|
|
|
|
for file in "${python_files[@]}"; do
|
|
if python3 -m py_compile "$file"; then
|
|
ok "py_compile ${file#"$ROOT_DIR"/}"
|
|
else
|
|
critical "Python syntax failed: ${file#"$ROOT_DIR"/}"
|
|
fi
|
|
done
|
|
|
|
printf '\nPython summary: %d OK, %d WARNING, %d CRITICAL\n' "$ok_count" "$warn_count" "$fail_count"
|
|
|
|
if ((fail_count > 0)); then
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|