totvs / advpl-vscode

Suporte para Advpl no VsCode
MIT License
161 stars 63 forks source link

Configuração "apenas fontes atualizados" aplicação patch #227

Closed marcelosecate closed 4 years ago

marcelosecate commented 6 years ago

Qual a configuração, para que na aplicação do patch reconhecer apenas fontes novos ou atualizados?

killerall commented 6 years ago

Hoje não existe.

Ukoe001 commented 6 years ago

Está na trilha de desenvolver esta funcionalidade? Poder configurar somente mais novos e/ou ver quais atualizados no log de saída?

killerall commented 6 years ago

Precisa ser feito, mais hoje não esta com prioridade.

tembra commented 6 years ago

@killerall Qual é a tratativa padrão do plugin? Aplicar como Somente atualizados ou Todos os fontes?

Outra dúvida que tenho diz respeito sobre a forma de aplicação do patch. Como o plugin exige apenas o caminho da pasta do Smartclient e a existência do executável appre.exe o mesmo deve utilizar o mesmo método de compilação e aplicação de patches que o DevStudio, correto?

Acontece que já tive problemas com alguns patches liberados pela TOTVS onde aplicando pelo DevStudio o mesmo não funcionava. Depois de algumas horas tentando desvendar o problema resolvi aplicar pelo TDS para testar e, não para minha surpresa, funcionou! Desde então utilizo apenas o TDS para aplicação de patches.

Você tem alguma informação a respeito deste meu relato?

Hoje meu ambiente de desenvolvimento se baseia no Sublime Text 3 com uma build que utiliza o TDS Linha de Comando (tdscli) para compilação de fontes. Entretanto na aplicação de patches e realização de debugs uso o próprio TDS, apesar do primeiro também ser suportado pelo tdscli.

Como estou migrando para o VS Code por trabalhar com desenvolvimento web gostaria de utilizá-lo também para o ADVPL, ainda mais devido ao mesmo não necessitar do TDS instalado para compilação e debug.

killerall commented 6 years ago

@tembra Ele atualiza sempre Todos os fontes.

O DEVStudio foi descontinuado até onde sei, e os appsrv novos não permitem a conexão entre ele e Devstudio. O suporte do Advpl no vscode escrevi do zero, utilizando a api do appsrv disponível para compilar, debugar e aplicar e gerar path.

tembra commented 6 years ago

@killerall IMHO, acredito que a opção default deveria ser "Somente os atualizados" para não gerar maiores problemas.

O DevStudio ainda conecta com o último AppServer disponibilizado para download no site da TOTVS. Mas realmente é muito provável que esta compatibilidade deixe de existir com o lançamento do AppServer Lobo-Guará, afinal ele pode ser considerado um divisor de águas e a TOTVS já vem avisando a algum tempo que tiraria esta comunicação, inclusive com mensagens durante a abertura do DevStudio.

Como você citou ali em cima que não está na lista de prioridades esta funcionalidade, pensei em contribuir para o projeto enviando um PR. Entretanto verifiquei que você utiliza um Bridge o qual não possui o código fonte no projeto. Neste caso o Bridge deve suportar esta opção.

Para obter todos os fontes do RPO você utiliza o argumento --getMap no Bridge. Este argumento é apenas do tipo true/false ou está pronto para receber um valor, como por exemplo, quais funções quero obter os dados do RPO?

A ideia seria executar o --patchInfo seguido do --getMap, onde neste último buscaria apenas pelos fontes retornados no primeiro. Então faria a comparação se existirem fontes mais novos no RPO e deixando o usuário realizar a escolha através do prompt. No final o Bridge teria que ser modificado para suportar um novo argumento como --patchApplyAll de uso conjunto com o --patchApply. Se este argumento for passado, atualiza todos os fontes, caso contrário somente os atualizados.

Talvez desta forma iria requerer uma mudança mínima no Bridge. Mas o ideal é que toda esta tratativa seja feita diretamente no Bridge, pois assim não haveria perda de tempo executando o encadeamento de comandos (Node > Bridge > AppServer > Bridge > Node) várias vezes, uma para cada argumento acima relatado.

Você pretende disponibilizar o código-fonte do Bridge ou de nada adiantaria uma vez que não temos conhecimento da API de comunicação do AppServer ?

killerall commented 6 years ago

@tembra O desenvolvimento da extensão nunca teve a intenção de substitur como um todo o TDS, concordo que para aplicação de path em ambiente de produção seria mais correro mesmo somente os atualizados. Porem como o foco sempre foi o desenvolvedor aqui, e não o administrador do sistema, eu tomei esse rumo. Sobre contribuir nesse ponto em especifico, acho que não é necessario fazer toda essa volta, para implementar isso. Principalmente no bridge. A parte mais trabalhosa é configurar tudo isso na extensão em typescript mesmo, dando opção de cada coisa. (Caso queira-se fazer igual ao TDS, ao aplicar e der divergencia). Se tiver interesse em fazer a parte em ts, posso ver como alterar o bridge. []s

tembra commented 6 years ago

@killerall Entendo, compreendo e concordo com o objetivo. 😄

Entretanto sempre "nas pontas" os desenvolvedores são os administradores também hehehe.

Como você disse, e eu também citei na minha resposta, se podermos mudar o Bridge fica bem mais tranquilo fazer o TS se adaptar a ele.

Dito isto, posso fazer sim a mudança no TS. Basta você modificar o Bridge para tal ação.

Segue abaixo minha sugestão:

Resumindo, o Bridge irá forçar a aplicação do patch da forma escolhida, seja devido a configuração do advpl.patchApplyType no ambiente ou devido ao argumento --patchApplyType= ter sido passado a ele diretamente. Caso contrário ele deverá fazer a análise das divergências e, se encontrar, retorná-las.

Me diga o que acha deste processo.

cmgalves commented 5 years ago

Bom dia, apesar deste assunte ser um pouco antigo, gostaria de colocar a minha dúvida:

Hoje, na aplicação das patches, só aplica os fontes mais atuais?

Grato.

killerall commented 5 years ago

Bom dia, Não, ele continua aplicando todos os fontes.

tembra commented 5 years ago

@killerall se você conseguir mudar o Bridge para retornar a lista de divergências, e também para aceitar o parâmetro --patchApplyType conforme descrito acima, eu faço as modificações no TS.

keinou commented 5 years ago

Alguma previsão para este?

killerall commented 5 years ago

Por enquanto não.

killerall commented 4 years ago

Implementado e liberado na versão 0.14.2