#!/usr/bin/env bash . "$(dirname -- "$0")/_/husky.sh" # get the list of modified files files=$(git diff --cached --name-only) # check if api or web directory is modified api_modified=false web_modified=false for file in $files do if [[ $file == "api/"* && $file == *.py ]]; then # set api_modified flag to true api_modified=true elif [[ $file == "web/"* ]]; then # set web_modified flag to true web_modified=true fi done # run linters based on the modified modules if $api_modified; then echo "Running Ruff linter on api module" # python style checks rely on `ruff` in path if ! command -v ruff &> /dev/null; then echo "Installing linting tools (Ruff, dotenv-linter ...) ..." poetry install -C api --only lint fi # run Ruff linter auto-fixing ruff check --fix ./api # run Ruff linter checks ruff check --preview ./api || status=$? status=${status:-0} if [ $status -ne 0 ]; then echo "Ruff linter on api module error, exit code: $status" echo "Please run 'dev/reformat' to fix the fixable linting errors." exit 1 fi fi if $web_modified; then echo "Running ESLint on web module" cd ./web || exit 1 npx lint-staged cd ../ fi