Estrutura inicial, ambiente IA
This commit is contained in:
+143
@@ -0,0 +1,143 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd)"
|
||||
SOURCE_DIR="$(CDPATH='' cd -- "$SCRIPT_DIR/../.." && pwd)"
|
||||
FORCE=0
|
||||
TARGET_DIR=""
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Uso:
|
||||
bash .vscode/automatizadores/bootstrap-workspace.sh /caminho/do/novo-workspace [--force]
|
||||
|
||||
O script copia a base compartilhavel do workspace DavinTI para um novo diretório:
|
||||
- .claude/agents
|
||||
- .claude/settings.local.json (versao portavel)
|
||||
- .vscode
|
||||
- .github
|
||||
- CLAUDE.md
|
||||
- .mcp.json
|
||||
|
||||
Tambem cria as pastas:
|
||||
- Andamento
|
||||
- Concluidos
|
||||
- Vitruvio/Documentação
|
||||
- Vitruvio/Documentação/Componentes
|
||||
EOF
|
||||
}
|
||||
|
||||
log() {
|
||||
printf '%s\n' "$1"
|
||||
}
|
||||
|
||||
fail() {
|
||||
printf 'Erro: %s\n' "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
copy_entry() {
|
||||
local relative_path="$1"
|
||||
local source_path="$SOURCE_DIR/$relative_path"
|
||||
local target_path="$TARGET_DIR/$relative_path"
|
||||
|
||||
[ -e "$source_path" ] || fail "Origem nao encontrada: $relative_path"
|
||||
|
||||
mkdir -p "$(dirname "$target_path")"
|
||||
|
||||
if [ -e "$target_path" ]; then
|
||||
if [ "$FORCE" -ne 1 ]; then
|
||||
fail "Destino ja existe: $relative_path. Use --force para sobrescrever."
|
||||
fi
|
||||
|
||||
rm -rf "$target_path"
|
||||
fi
|
||||
|
||||
cp -a "$source_path" "$target_path"
|
||||
log "Copiado: $relative_path"
|
||||
}
|
||||
|
||||
write_portable_claude_settings() {
|
||||
local target_path="$TARGET_DIR/.claude/settings.local.json"
|
||||
|
||||
mkdir -p "$(dirname "$target_path")"
|
||||
|
||||
if [ -e "$target_path" ] && [ "$FORCE" -ne 1 ]; then
|
||||
fail "Destino ja existe: .claude/settings.local.json. Use --force para sobrescrever."
|
||||
fi
|
||||
|
||||
cat > "$target_path" <<'EOF'
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"mcp__oracle-davinti__run_query"
|
||||
]
|
||||
},
|
||||
"enableAllProjectMcpServers": true,
|
||||
"enabledMcpjsonServers": [
|
||||
"oracle-davinti"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
log "Gerado: .claude/settings.local.json"
|
||||
}
|
||||
|
||||
cleanup_vscode_mcp_dir() {
|
||||
local mcp_dir="$TARGET_DIR/.vscode/mcp-oracle-davinti"
|
||||
|
||||
rm -rf "$mcp_dir/node_modules"
|
||||
rm -f "$mcp_dir/.env"
|
||||
}
|
||||
|
||||
create_base_directories() {
|
||||
mkdir -p "$TARGET_DIR/Andamento"
|
||||
mkdir -p "$TARGET_DIR/Concluidos"
|
||||
mkdir -p "$TARGET_DIR/Vitruvio/Documentação"
|
||||
mkdir -p "$TARGET_DIR/Vitruvio/Documentação/Componentes"
|
||||
|
||||
log "Criadas pastas base do workspace"
|
||||
}
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
--force)
|
||||
FORCE=1
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
if [ -n "$TARGET_DIR" ]; then
|
||||
fail "Argumento inesperado: $1"
|
||||
fi
|
||||
|
||||
TARGET_DIR="$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -n "$TARGET_DIR" ] || {
|
||||
usage
|
||||
exit 1
|
||||
}
|
||||
|
||||
TARGET_DIR="$(mkdir -p "$TARGET_DIR" && CDPATH='' cd -- "$TARGET_DIR" && pwd)"
|
||||
|
||||
[ "$TARGET_DIR" != "$SOURCE_DIR" ] || fail "O destino deve ser diferente da pasta do template."
|
||||
|
||||
copy_entry ".claude/agents"
|
||||
write_portable_claude_settings
|
||||
copy_entry ".vscode"
|
||||
cleanup_vscode_mcp_dir
|
||||
copy_entry ".github"
|
||||
copy_entry "CLAUDE.md"
|
||||
copy_entry ".mcp.json"
|
||||
create_base_directories
|
||||
|
||||
log "Workspace base criado em: $TARGET_DIR"
|
||||
log "Proximo passo: copie .vscode/mcp-oracle-davinti/.env.example para .env e ajuste as credenciais locais."
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
#!/bin/bash
|
||||
|
||||
DOWNLOADS="/mnt/c/Users/victo/Downloads"
|
||||
DEST_CASO="/home/victor/davinti/Andamento"
|
||||
DEST_XML="/home/victor/davinti/downloads_automatizado"
|
||||
|
||||
mkdir -p "$DEST_CASO"
|
||||
mkdir -p "$DEST_XML"
|
||||
|
||||
echo "Monitorando Downloads (CASO + XML)..."
|
||||
|
||||
while true; do
|
||||
|
||||
for FILE in "$DOWNLOADS"/*; do
|
||||
[[ -f "$FILE" ]] || continue
|
||||
|
||||
BASENAME=$(basename "$FILE")
|
||||
|
||||
###############################################################
|
||||
# 1) CASO (#123#.ext) — prioridade absoluta
|
||||
###############################################################
|
||||
if [[ "$BASENAME" =~ \#([0-9]+)\#\.[A-Za-z0-9]+$ ]]; then
|
||||
|
||||
CASO_NUM="${BASH_REMATCH[1]}"
|
||||
|
||||
DATA=$(date +"%d-%m-%Y")
|
||||
PASTA="$DEST_CASO/CASO $CASO_NUM - $DATA"
|
||||
mkdir -p "$PASTA"
|
||||
|
||||
# remover #123#
|
||||
NOME_LIMPO=$(echo "$BASENAME" | sed -E 's/#([0-9]+)#//')
|
||||
NOME_LIMPO=$(echo "$NOME_LIMPO" | sed 's/ */ /g' | sed 's/^ *//;s/ *$//')
|
||||
|
||||
if [[ -z "$NOME_LIMPO" ]]; then
|
||||
EXT="${BASENAME##*.}"
|
||||
NOME_LIMPO="arquivo_caso_$CASO_NUM.$EXT"
|
||||
fi
|
||||
|
||||
DEST="$PASTA/$NOME_LIMPO"
|
||||
|
||||
mv "$FILE" "$DEST"
|
||||
echo "[CASO] Movido: $BASENAME → $DEST"
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
###############################################################
|
||||
# 2) XML SEM FLAG (#123#)
|
||||
###############################################################
|
||||
if [[ "$BASENAME" == *.xml ]]; then
|
||||
|
||||
DEST="$DEST_XML/$BASENAME"
|
||||
|
||||
if [[ -e "$DEST" ]]; then
|
||||
NAME="${BASENAME%.*}"
|
||||
EXT="${BASENAME##*.}"
|
||||
TS=$(date +"%Y%m%d_%H%M%S")
|
||||
NOVO="${NAME}_$TS.$EXT"
|
||||
mv "$FILE" "$DEST_XML/$NOVO"
|
||||
echo "[XML] Renomeado: $NOVO"
|
||||
else
|
||||
mv "$FILE" "$DEST"
|
||||
echo "[XML] Movido: $BASENAME"
|
||||
fi
|
||||
|
||||
continue
|
||||
fi
|
||||
|
||||
# outros arquivos → ignorar
|
||||
done
|
||||
|
||||
sleep 1
|
||||
done
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
#!/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."
|
||||
Reference in New Issue
Block a user