Files
2026-05-14 09:54:24 -03:00

67 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
TARGET_DIR="${1:-}"
EXPORT_URL="${2:-}"
if [[ -z "$TARGET_DIR" || -z "$EXPORT_URL" ]]; then
echo "Uso: $0 <pasta_destino> <url_webservice>"
exit 1
fi
if ! command -v curl >/dev/null 2>&1; then
echo "Erro: curl nao encontrado."
exit 1
fi
if ! command -v unzip >/dev/null 2>&1; then
echo "Erro: unzip nao encontrado."
exit 1
fi
TMP_DIR="$(mktemp -d)"
ZIP_FILE="$TMP_DIR/vitruvio_completo.zip"
EXTRACT_DIR="$TMP_DIR/extract"
PASTAS_EXPORTACAO=(Paineis Libs WebServices Processos Relatorios)
cleanup() {
rm -rf "$TMP_DIR"
}
trap cleanup EXIT
mkdir -p "$EXTRACT_DIR"
mkdir -p "$TARGET_DIR"
echo "Baixando ZIP do webservice..."
curl -fL "$EXPORT_URL" -o "$ZIP_FILE"
echo "Validando ZIP..."
unzip -tq "$ZIP_FILE" >/dev/null
echo "Extraindo ZIP..."
unzip -qo "$ZIP_FILE" -d "$EXTRACT_DIR"
for pasta in "${PASTAS_EXPORTACAO[@]}"; do
if [[ ! -d "$EXTRACT_DIR/$pasta" ]]; then
echo "Erro: pasta obrigatoria nao encontrada no ZIP: $pasta"
exit 1
fi
done
echo "Sincronizando conteudo em $TARGET_DIR..."
for pasta in "${PASTAS_EXPORTACAO[@]}"; do
mkdir -p "$TARGET_DIR/$pasta"
if command -v rsync >/dev/null 2>&1; then
rsync -a --delete "$EXTRACT_DIR/$pasta/" "$TARGET_DIR/$pasta/"
else
find "$TARGET_DIR/$pasta" -mindepth 1 -maxdepth 1 -exec rm -rf {} +
cp -a "$EXTRACT_DIR/$pasta/." "$TARGET_DIR/$pasta/"
fi
done
echo "Sincronizacao concluida com sucesso."