.agent/validar-repositorio.sh

54 lines
2 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# --------------------------------------------------------------
# validar-repositorio.sh – validações rápidas para o projeto AGENT-IA
# --------------------------------------------------------------
# 1) Verifica se ainda existem artefatos .md proibidos
# 2) Checa se a versão no manifesto.json está no formato semver (X.Y.Z)
# 3) Executa verificar-linhas.sh (se disponível)
# --------------------------------------------------------------
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "$0")" && pwd)"
cd "$REPO_ROOT"
msg_ok() { echo -e "\e[32m✅ $1\e[0m"; }
msg_err() { echo -e "\e[31m❌ $1\e[0m"; }
# ---- 1) Busca por arquivos .md proibidos ---------------------
# Esta verificação se aplica apenas a projetos *consumidores* do submodulo .agent,
# onde artefatos .global.md não devem existir diretamente no repositório do produto.
# No repositório AGENT-IA (fonte dos artefatos), todos os .md são legítimos.
msg_ok "Repositório fonte — verificação de .md não aplicável."
# ---- 2) Validação da versão no manifesto.json ---------------
if [[ -f manifesto.json ]]; then
if command -v jq &>/dev/null; then
version=$(jq -r '.versao // empty' manifesto.json)
elif command -v python3 &>/dev/null; then
version=$(python3 -c "import json; print(json.load(open('manifesto.json')).get('versao', ''))" 2>/dev/null || true)
elif command -v node &>/dev/null; then
version=$(node -e "console.log(require('./manifesto.json').versao || '')" 2>/dev/null || true)
else
version=$(grep -oP '"versao"\s*:\s*"\K[^"]+' manifesto.json 2>/dev/null || true)
fi
if [[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
msg_ok "Versão do manifesto válida: $version"
else
msg_err "Versão do manifesto inválida ou ausente em manifesto.json"
exit 1
fi
else
msg_err "manifesto.json não encontrado!"
exit 1
fi
# ---- 3) Verificar limite de linhas (opcional) ----------------
if [[ -x "$REPO_ROOT/verificar-linhas.sh" ]]; then
"$REPO_ROOT/verificar-linhas.sh"
msg_ok "Limite de linhas verificado."
fi
exit 0