diff --git a/.gitignore b/.gitignore index 4fa0a58..904350c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ !/.vscode/automatizadores/ !/.vscode/automatizadores/bootstrap-workspace.sh !/.vscode/automatizadores/sync_vitruvio_zip.sh +!/.vscode/automatizadores/sync_vitruvio_zip.ps1 !/.vscode/vsix/ !/.vscode/vsix/** !/.vscode/tasks.json diff --git a/.vscode/automatizadores/sync_vitruvio_zip.ps1 b/.vscode/automatizadores/sync_vitruvio_zip.ps1 new file mode 100644 index 0000000..4e6d19a --- /dev/null +++ b/.vscode/automatizadores/sync_vitruvio_zip.ps1 @@ -0,0 +1,63 @@ +$ErrorActionPreference = 'Stop' + +param( + [string]$TargetDir, + [string]$ExportUrl +) + +if ([string]::IsNullOrWhiteSpace($TargetDir) -or [string]::IsNullOrWhiteSpace($ExportUrl)) { + Write-Host "Uso: sync_vitruvio_zip.ps1 " + exit 1 +} + +$tempDir = Join-Path ([System.IO.Path]::GetTempPath()) ("vitruvio-sync-" + [System.Guid]::NewGuid().ToString('N')) +$zipFile = Join-Path $tempDir 'vitruvio_completo.zip' +$extractDir = Join-Path $tempDir 'extract' +$pastasExportacao = @('Paineis', 'Libs', 'WebServices', 'Processos', 'Relatorios') + +function Cleanup { + if (Test-Path -LiteralPath $tempDir) { + Remove-Item -LiteralPath $tempDir -Recurse -Force + } +} + +try { + New-Item -ItemType Directory -Path $extractDir -Force | Out-Null + New-Item -ItemType Directory -Path $TargetDir -Force | Out-Null + + Write-Host 'Baixando ZIP do webservice...' + Invoke-WebRequest -Uri $ExportUrl -OutFile $zipFile + + Write-Host 'Extraindo ZIP...' + Expand-Archive -LiteralPath $zipFile -DestinationPath $extractDir -Force + + foreach ($pasta in $pastasExportacao) { + $sourceDir = Join-Path $extractDir $pasta + + if (-not (Test-Path -LiteralPath $sourceDir -PathType Container)) { + throw "Erro: pasta obrigatoria nao encontrada no ZIP: $pasta" + } + } + + Write-Host "Sincronizando conteudo em $TargetDir..." + + foreach ($pasta in $pastasExportacao) { + $sourceDir = Join-Path $extractDir $pasta + $destinationDir = Join-Path $TargetDir $pasta + + if (Test-Path -LiteralPath $destinationDir) { + Remove-Item -LiteralPath $destinationDir -Recurse -Force + } + + Copy-Item -LiteralPath $sourceDir -Destination $TargetDir -Recurse -Force + } + + Write-Host 'Sincronizacao concluida com sucesso.' +} +catch { + Write-Error $_.Exception.Message + exit 1 +} +finally { + Cleanup +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 0aed89a..f0914bc 100755 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -10,6 +10,19 @@ "${workspaceFolder}/Vitruvio", "https://vitruvio.superverdemar.com.br/rest/api/integration/public/base_vitruvio_ia" ], + "windows": { + "command": "powershell", + "args": [ + "-NoLogo", + "-NoProfile", + "-ExecutionPolicy", + "Bypass", + "-File", + "${workspaceFolder}\\.vscode\\automatizadores\\sync_vitruvio_zip.ps1", + "${workspaceFolder}\\Vitruvio", + "https://vitruvio.superverdemar.com.br/rest/api/integration/public/base_vitruvio_ia" + ] + }, "group": "build", "problemMatcher": [] }, diff --git a/GUIA_SETUP_OUTRA_MAQUINA.md b/GUIA_SETUP_OUTRA_MAQUINA.md index 6359d90..9aea438 100644 --- a/GUIA_SETUP_OUTRA_MAQUINA.md +++ b/GUIA_SETUP_OUTRA_MAQUINA.md @@ -75,6 +75,8 @@ code . 6. Atualize os artefatos do Vitruvio quando precisar. - No VS Code, execute a task Vitruvio: Baixar e Extrair ZIP. + - No Linux, a task usa o script Bash em `.vscode/automatizadores/sync_vitruvio_zip.sh`. + - No Windows, a mesma task usa a versao PowerShell em `.vscode/automatizadores/sync_vitruvio_zip.ps1`. - O conteudo sera extraido em Vitruvio/, incluindo Paineis, Libs, WebServices, Processos e Relatorios. 7. Se quiser usar o criador de casos como extensao local do VS Code, empacote e instale o VSIX.