.agent/verificar-linhas.sh

50 lines
1.2 KiB
Bash

#!/usr/bin/env sh
# comando sh ../.agent/verificar-linhas.sh || exit 1
LIMITE=250
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
if [ -d "$SCRIPT_DIR/../.agent" ]; then
RAIZ=$(cd "$SCRIPT_DIR/.." && pwd)
else
RAIZ="$SCRIPT_DIR"
fi
RESULTADO=$(
find "$RAIZ" \
-type d \( \
-name node_modules -o \
-name .git -o \
-name dist -o \
-name .output -o \
-name .nuxt -o \
-name .cache -o \
-name .evidencias -o \
-name build \
\) -prune \
-o \
-type f \( \
-name "*.ts" -o \
-name "*.tsx" -o \
-name "*.vue" -o \
-name "*.css" \
\) \
-print | while IFS= read -r arquivo; do
linhas=$(wc -l < "$arquivo" | tr -d ' ')
if [ "$linhas" -gt "$LIMITE" ]; then
relativo="${arquivo#$RAIZ/}"
printf "%5s linhas -> %s\n" "$linhas" "$relativo"
fi
done
)
if [ -n "$RESULTADO" ]; then
echo "$RESULTADO"
VIOLACOES=$(printf '%s\n' "$RESULTADO" | wc -l | tr -d ' ')
printf "\n❌ %s arquivo(s) violam o limite de %s linhas.\n" "$VIOLACOES" "$LIMITE"
printf "\n Resolva usando a orientação: .agent/global/workflows/codigo-limpo.md (ou /codigo-limpo)\n"
exit 1
fi
printf "✅ Todos os arquivos dentro do limite de %s linhas.\n" "$LIMITE"