#!/usr/bin/env bash
# lint.sh - 코드 스타일 검사 및 자동 수정
# 사용법: bash lint.sh [--fix]
#   기본: black --check + isort --check
#   --fix: 자동 수정 적용

set -uo pipefail

WORKSPACE=/home/jay/workspace
FIX_MODE=0

for arg in "$@"; do
    if [ "$arg" = "--fix" ]; then
        FIX_MODE=1
    fi
done

LINT_EXIT=0

echo "[lint] black 포매팅 검사..."
if [ "$FIX_MODE" -eq 1 ]; then
    python3 -m black "$WORKSPACE" --exclude="/(\.git|__pycache__|\.venv)/" 2>&1
    BLACK_EXIT=$?
else
    python3 -m black "$WORKSPACE" --check --exclude="/(\.git|__pycache__|\.venv)/" 2>&1
    BLACK_EXIT=$?
fi

if [ $BLACK_EXIT -ne 0 ]; then
    echo "[lint] black 검사 실패 (exit $BLACK_EXIT)"
    LINT_EXIT=1
else
    echo "[lint] black 검사 통과"
fi

echo "[lint] isort import 순서 검사..."
if [ "$FIX_MODE" -eq 1 ]; then
    python3 -m isort "$WORKSPACE" --skip __pycache__ --skip .venv 2>&1
    ISORT_EXIT=$?
else
    python3 -m isort "$WORKSPACE" --check --skip __pycache__ --skip .venv 2>&1
    ISORT_EXIT=$?
fi

if [ $ISORT_EXIT -ne 0 ]; then
    echo "[lint] isort 검사 실패 (exit $ISORT_EXIT)"
    LINT_EXIT=1
else
    echo "[lint] isort 검사 통과"
fi

if [ "$LINT_EXIT" -eq 0 ]; then
    echo "[lint] 모든 검사 통과"
else
    echo "[lint] 일부 검사 실패 (--fix 옵션으로 자동 수정 가능)"
fi

exit $LINT_EXIT
