Contexto e Problema
Atualmente, as tarefas do VS Code e os scripts bash associados que gerenciam a sincronização local de arquivos (synchronize-project.sh) e o deploy de projetos via API (deploy-project-v2.sh) operam sobre toda a pasta do projeto (diretório gestor/).
Isso inclui a pasta de uploads dinâmicos contents/ (localizada em [REDACTED]).
À medida que o projeto cresce, a pasta contents/ acumula arquivos de upload (imagens, PDFs, mídias) e pode atingir gigabytes de tamanho. Toda vez que o operador realiza um deploy ou sincronização de arquivos de desenvolvimento (ex: novas lógicas em PHP/JS), o ecossistema empacota e envia desnecessariamente toda a pasta contents/, gerando lentidão e desperdício de banda.
Especificação de Mudanças
Precisamos introduzir a escolha de inclusão da pasta contents/ nas tarefas do VS Code, propagando essa seleção para os scripts através de um parâmetro de linha de comando.
1. Modificações em .vscode/tasks.json
-
Novo Input: Adicionar na seção
"inputs"um seletor de string (pickString):{ "id": "contentsChoice", "description": "? Include contents/ folder? (Sim / Não) ❔", "type": "pickString", "options": [ "Sim", "Não" ], "default": "Sim" } -
Atualização de Parâmetros nas Tarefas: Nas tarefas abaixo, adicione o parâmetro
--contents ${input:contentsChoice}(ou correspondente) na linha de comando:-
?️ Projects - Deploy Current Project-
De:
bash ./ai-workspace/en/scripts/projects/deploy-project-v2.sh -
Para:
bash ./ai-workspace/en/scripts/projects/deploy-project-v2.sh --contents ${input:contentsChoice}
-
-
?️ Projects - Deploy Project -> ID-
De:
bash ./ai-workspace/en/scripts/projects/deploy-project-v2.sh --project ${input:projectID} -
Para:
bash ./ai-workspace/en/scripts/projects/deploy-project-v2.sh --project ${input:projectID} --contents ${input:contentsChoice}
-
-
?️ Projects - Synchronize => Files -> ID-
De:
bash ./ai-workspace/en/scripts/projects/synchronize-project.sh --project ${input:projectID} checksum -
Para:
bash ./ai-workspace/en/scripts/projects/synchronize-project.sh --project ${input:projectID} checksum --contents ${input:contentsChoice}
-
-
E em qualquer outra tarefa que faça a manipulação de sincronização ou deploy de arquivos do diretório do projeto.
-
2. Modificações nos Scripts Bash (ai-workspace/en/scripts/projects/)
2.1 deploy-project-v2.sh
-
Parser de Argumentos:
-
Aceitar o argumento
--contents(que pode receberSimouNão). -
Por padrão, se não fornecido, assumir
Sim(retrocompatibilidade).
-
-
Exclusão no Empacotamento Completo:
-
Se
--contentsforNão:-
Modificar a chamada do
7zno empacotamento completo para incluir a exclusão-xr0!contents/:"7z" a -tzip "$ZIP_FILE" . -xr0!*.git* -xr0!*.tmp -xr0!*.log -xr0!temp/ -xr0!logs/ -xr0!resources/ -xr0!contents/ > /dev/null 2>&1
-
-
-
Exclusão no Empacotamento de Diferenças Git (
gitDeploy):-
Se
--contentsforNãoe ogitDeployestiver ativado:-
Ao popular o arquivo temporário de lista de arquivos (
${PROJECT_TARGET}_git_files.txt), filtrar/ignorar qualquer arquivo cujo caminho inicie comcontents/.
-
-
2.2 synchronize-project.sh
-
Parser de Argumentos:
-
Aceitar o argumento
--contents(recebendoSimouNão). -
Por padrão, assumir
Sim.
-
-
Exclusão no Rsync:
-
Se
--contentsforNão:-
Adicionar
--exclude "contents/"no comandorsynccorrespondente ao modo selecionado (default, checksum, force).
-
-
Validação e Testes
-
Validação de Sintaxe:
-
Garantir que o JSON em
.vscode/tasks.jsonpermaneça válido. -
Executar
bash -nnos scripts bash modificados.
-
-
Validação de Funcionamento (Exclusão):
-
Executar a tarefa de deploy selecionando "Não" para a pasta contents.
-
Verificar nos logs do terminal se o tamanho do pacote ZIP gerado é significativamente menor e se a pasta
contents/foi ignorada no empacotamento. -
Executar a tarefa de sincronização de arquivos selecionando "Não" e checar se arquivos criados recentemente na pasta local
contents/não foram enviados ao ambiente de testes.
-
-
Validação de Funcionamento (Inclusão):
-
Validar que ao selecionar "Sim", a pasta
contents/é empacotada e sincronizada normalmente.
-