UNPKG

@totvs/tds-ls

Version:
524 lines (380 loc) 19.9 kB
# TDSCLi (LS) O TDS**CLi**-LS (**C**ommand **Li**ne) é uma ferramenta do ecossistema **TOTVS Protheus** que permite ações como a compilação e aplicação de patchs via linha de comando. Ele utiliza o **AdvPLS**, que está disponível no diretório do plugin do **TDS-VSCode** para os três sistemas operacionais homologados, conforme exemplo abaixo. ![Advpl-dir](https://github.com/totvs/tds-ls/blob/master/images/advpls_dirs.png) > Mais informações sobre o plugin [clique aqui](https://marketplace.visualstudio.com/items?itemName=totvs.tds-vscode). ## Utilizando o AdvPLS Para utilização da ferramenta é necessária a criação de um **arquivo de execução**, explicado a seguir, chamado através do parâmetro `--tdsCli`. > `> advpls --tdsCli=<params_file>` o AdvPLS permite executar múltiplas ações em uma única chamada, por exemplo: * Conexão ao AppServer (action=**authentication**); * Compilação de um conjunto de fontes (**compile**); * Defrag do RPO (**defragRPO**) ## Modo de compatibilidade O TDSCli-LS possui um modo de compatibilidade com o TDSCli-Eclipse, para mais informações [clique aqui](#compatibilidade_legado). ## Arquivo de execução Recomendamos o uso de um arquivo de execução com a extensão **.INI**, pois editores como o próprio VSCode farão seu *syntax highlight*, facilitando o desenvolvimento. ### Características do arquivo de execução * As tags "`#`" ou "`;`" representam os comentários do arquivo de execução; * Use a tag `[]` para subdividir as seções a serem executadas, exemplo: ```ini ;Exemplo [Conectando] action = authentication ... [Compacta RPO] action = defragRPO ``` * **Importante**: Duas seções **não devem ser declaradas** no arquivo de execução como subdivisão customizada: * `[geral] -> apenas para uso interno` * `[user] -> onde definimos as variáveis de ambiente` ## Usando caminhos relativos ou absolutos Quando for necessário "apontar" para um arquivo, como um patch por exemplo, você poderá fazer uso de caminhos absolutos: > **Windows:** `C:\dir\file.ptm` **ou Linux:** `/home/user/dir/file.ptm` Ou poderá utilizar caminhos relativos ao diretório do seu arquivo de execução: > **Windows:** `dir\file.ptm` **ou Linux:** `dir/file.ptm` Prefira usar **caminhos absolutos**, garantindo a correta localização dos arquivos. Você pode utilizar a barra **`/`** como separador de diretórios independentemente do seu sistema operacional. > A execução do TDSCli-LS no **Linux** deve respeitar as regras do *AppServer Protheus* para este sistema operacional, que são: * Utilize apenas **caracteres minúsculos** na composição do diretorio/arquivo.ext; * **Não utilize acentuação** na composição diretorio/arquivo.ext. ## Exemplo Agora que conhecemos o arquivo de execução vamos ver um exemplo: ```ini ; logToFile: diretorio/arquivo para arquivar log da execução ; showConsoleOutput: True exibe informações no console logToFile=/home/mansano/tdscli/logs/log1.log showConsoleOutput=true ; Na seção [user] definimos as variáveis de ambiente [user] INCLUDE_DIR=/home/mansano/_c/lib120/src/include/ ; Conexão e autenticação com o AppServer [authentication] action=authentication server=192.168.0.198 port=5025 secure=0 build=7.00.170117A environment=producao user=admin psw= ; Compilando dois fontes [compile] action=compile program=/home/mansano/tdscli/src/prog1.prw,/home/mansano/tdscli/src/prog2.prw recompile=T includes=${INCLUDE_DIR} ``` ### Retorno ``` [LOG] Starting connection to the server 'tdscli.serverName' (192.168.0.198@5025) [LOG] Connection to the server 'tdscli.serverName' finished. [LOG] Starting user 'admin' authentication. [LOG] Authenticating... [LOG] User authenticated successfully. [LOG] User 'admin' authentication finished. [INFO] Starting recompile. [LOG] Starting build for environment producao. [LOG] Start recompile of 2 files. [LOG] Start regular compiling /home/mansano/tdscli/src/prog1.prw (1/2). [LOG] [SUCCESS] Source /home/mansano/tdscli/src/prog1.prw compiled successfully. [LOG] Start regular compiling /home/mansano/tdscli/src/prog2.prw (2/2). [LOG] [SUCCESS] Source /home/mansano/tdscli/src/prog2.prw compiled successfully. [LOG] Committing end build. [LOG] All files compiled successfully. [INFO] Recompile finished. ``` ## Parâmetros gerais Os parâmetros gerais devem sempre ser inseridos no **início do arquivo** de execução. | Parâmetro | Valor | Descrição | |-------------------|-----------------------------------------|-------------------------------------------------------------------------------| | logToFile | diretorio/arquivo.log | Arquivo que receberá as informações da execução do arquivo | | showConsoleOutput | True (T) ou False (F) | True = Exibe informações no console | ### Exemplo ```ini ; logToFile: diretorio/arquivo para arquivar log da execução ; showConsoleOutput: True exibe informações no console logToFile=/home/mansano/tdscli/logs/log1.log showConsoleOutput=true ``` ## Seção `[user]` Na seção `[user]` definimos as variáveis de ambiente, que podem ser usadas em todas as seções do arquivo de execução. > Para utilização da variável de ambiente use a macro `${var_name}` ### Exemplo ```ini [user] INCLUDE_DIR=/home/mansano/_c/lib120/src/include/ ... [compile] action=compile includes=${INCLUDE_DIR} ``` ## Seções de usuário As seções permitem **organizar** seu arquivo de execução, para seu nome é permitido uso de espaços e caracteres especiais. ### Exemplo ```ini [compilação de arquivos] action=compile ``` A execução do **arquivo é sequencial**, percorrendo todas as seções cadastradas. > O parâmetro **`skip=True`** utilizado em uma seção permite ignorar sua execução, isso pode ser util caso necessite reaproveitar o mesmo arquivo de execução para várias finalidades. > Cada seção contém uma **`action`**, explicadas a seguir. ## `action = validate` Obtém a versão de *release* do AppServer, permitindo seu uso na tag **build** da **action authentication**. | Parâmetro | Valor | Descrição | |-----------|----------|---------------------------------| | server | IP | Endereço IP do AppServer | | port | numérico | Porta do AppServer | | secure | 1 ou 0 | Se a conexão é segura ou não, 1=Conexão segura, 0=Conexão convencional | ### Exemplo ```ini [validate] action=validate server=192.168.0.198 port=5025 secure=0 ``` ### Retorno ``` [LOG] Appserver detected with build version: 7.00.170117A and secure: 0 build: 7.00.170117A / secure: 0 ``` ## `action = getID` Obtém o ID para a chave de compilação. ### Exemplo ```ini [getID] action=getID ``` ### Retorno ``` ID: ED75-E184 ``` ## `action = authorization` Aplica a chave de compilação. > O **ID** do TDSCli-LS é diferente do TDSCLi-Eclipse, tornando as **chaves de compilação** incompatíveis. | Parâmetro | Valor | Descrição | |---------------|-----------------------------------------|--------------------------------------------| | authorization | Caminho relativo ou absoluto do arquivo | Define o arquivo com a chave de compilação | ```ini [authorization] action=authorization authorization=/home/mansano/tdscli/ED75-E184.aut ``` > Em caso de erro na carga do arquivo, confirme o ID da estação de trabalho, utilizando a action **getID**. ## `action = authentication` Executa a conexão com o AppServer. | Parâmetro | Valor | Descrição | |-------------|-------------------|-----------------------------------------------| | server | IP | Endereço do AppServer | | port | numérico | Porta em que o AppServer escuta | | secure | 1 ou 0 | Se a conexão é segura ou não, 1=Conexão segura, 0=Conexão convencional | | build | *build* ou *AUTO* | Release do AppServer ou AUTO para detecção automática | | user | "nome de usuário" | Usuário para autenticação | | psw | "senha" | Senha para autenticação | | environment | "ambiente" | Ambiente na qual será efetuada a autenticação | ### Exemplo ```ini [authentication] action=authentication server=192.168.0.198 port=5025 secure=0 build=AUTO environment=producao user=admin psw= ``` ### Retorno ``` [LOG] Appserver detected with build version: 7.00.170117A and secure: 0 [LOG] Starting connection to the server 'tdscli.serverName' (192.168.0.198@5025) [LOG] Connection to the server 'tdscli.serverName' finished. [LOG] Starting user 'admin' authentication. [LOG] Authenticating... [LOG] User authenticated successfully. [LOG] User 'admin' authentication finished. ``` ## `action = compile` Executa a compilação/recompilação de programas no RPO. > Esta action depende da **action authentication**. > Se for executar uma compilação que necessite do uso da **chave de compilação** crie a seção com a **action `authorization`** antes desta. | Parâmetro | Valor | Descrição | |-------------|-------------------------------------------------------------|-----------------------------------------------------------------------------------| | program | Nomes dos arquivos e/ou diretórios separados por `,` ou `;` | Programas a serem processados | | programList | Caminho relativo ou absoluto do arquivo | Arquivo contendo os nomes dos arquivos (**fontes ou recursos**) a serem processados (**um arquivo por linha**) | | recompile | True (T) ou False (F) | True se deve efetuar recompilação | | includes | Diretórios com includes separados por `,` ou `;` | Arquivos de includes, **O caminho para os diretórios de include deve sempre ser absoluto, ex: c:\dir\includes pois será utilizado pelo AppServer no momento da compilação** | > Informar a opção `program` ou `programList` **mas não ambas**. ### Exemplo ```ini [compile] action=compile program=/home/mansano/tdscli/src/prog1.prw,/home/mansano/tdscli/src/prog2.prw recompile=T includes=/home/mansano/_c/lib120/src/include/ ``` ### Retorno ``` [INFO] Starting recompile. [LOG] Starting build for environment producao. [LOG] Start recompile of 2 files. [LOG] Start regular compiling /home/mansano/tdscli/src/prog1.prw (1/2). [LOG] [SUCCESS] Source /home/mansano/tdscli/src/prog1.prw compiled successfully. [LOG] Start regular compiling /home/mansano/tdscli/src/prog2.prw (2/2). [LOG] [SUCCESS] Source /home/mansano/tdscli/src/prog2.prw compiled successfully. [LOG] Committing end build. [LOG] All files compiled successfully. [INFO] Recompile finished. ``` ## `action = patchGen` Executa a geração de patch. > Esta action depende da **action authentication**. | Parâmetro | Valor | Descrição | |------------------|-------------------------------------------------------------|-----------------------------------------------------------------------------------| | saveLocal | Caminho relativo ou absoluto do arquivo | Diretório onde será gerado o patch localmente | | saveRemote | Caminho relativo | Diretório onde será gerado o patch remotamente (AppServer) | | fileResource | Nomes dos arquivos e/ou diretórios separados por `,` ou `;` | Fontes e Recursos a serem processados | | fileResourceList | Caminho relativo ou absoluto do arquivo | Arquivo contendo os nomes dos arquivos (**fontes ou recursos**) a serem processados (**um arquivo por linha**) | | patchType | PTM, UPD ou PAK | Extensões permitidas para arquivos de patches | > Informar a opção `saveLocal` ou `saveRemote` **mas não ambas**. > Informar a opção `fileResource` ou `fileResourceList` **mas não ambas**. ### Exemplo ```ini [patchGen] action=patchGen fileResource=prog1,prog2 patchType=PTM saveLocal=/home/mansano/tdscli/patch/ ``` ### Retorno ``` [INFO] Starting generate patch. [LOG] Starting build for environment producao. [LOG] Patch generated successfully. [LOG] Patch sent from appserver to user machine. [LOG] Cleaning up appserver OK. [LOG] Committing end build. [INFO] Generate patch finished. ``` ## `action = patchApply` Efetua a aplicação de patch. > Esta action depende da **action authentication**. | Parâmetro | Valor | Descrição | |-----------------|-----------------------------------------|---------------------------------------------------------------------------------------------| | patchFile | Caminho relativo ou absoluto do arquivo | Arquivo de patch a ser aplicado | | localPatch | True (T) ou False (F) | **True** se o arquivo de patch é local ou **False** se o arquivo estiver em um diretório no AppServer | | validatePatch | True (T) ou False (F) | True para validação do patch | | applyOldProgram | True (T) ou False (F) | True para aplicação de programas com data de compilação mais antigas que as existentes no RPO | ### Exemplo ```ini [patchApply] action=patchApply patchFile=/home/mansano/tdscli/patch/tttp120.ptm localPatch=True applyOldProgram=True ``` ### Retorno ``` [INFO] Starting apply patch. [LOG] Starting build for environment producao. [LOG] Applying patch file: /home/mansano/tdscli/patch/tttp120.ptm [LOG] Patch (tttp120.ptm) successfully applied. [LOG] Committing end build. [INFO] Apply patch finished. ``` ## `action = [patchInfo]` Obtém as informações de um patch. > Esta action depende da **action authentication**. | Parâmetro | Valor | Descrição | |------------|-----------------------------------------|-----------------------------------------------------------| | patchFile | Caminho relativo ou absoluto do arquivo | Arquivo de patch a ser analisado | | localPatch | True (T) ou False (F) | **True** se o arquivo de patch é local ou **False** se o arquivo estiver em um diretório no AppServer | | output | Caminho relativo ou absoluto do arquivo | Arquivo com as informações contidas no patch | ### Exemplo ```ini [patchInfo] action=patchInfo patchFile=/home/mansano/tdscli/patch/tttp120.ptm output=/home/mansano/tdscli/patch/tttp120.out localPatch=True ``` ### Retorno ``` [INFO] Starting patch info. [LOG] Patch file: /home/mansano/tdscli/patch/tttp120.ptm [LOG] Starting build for environment producao. [LOG] Committing end build. [INFO] Patch info finished. ``` ## `action = deleteProg` Remove programas do RPO conectado. > Esta action depende da **action authentication**. > Se for executar uma remoção que necessite do uso da **chave de compilação** crie a seção com a **action `authorization`** antes desta. | Parâmetro | Valor | Descrição | |-------------|-------------------------------------------------------------|------------------------------------------------------------------------------------| | program | Nomes dos arquivos e/ou diretórios separados por `,` ou `;` | Programas a serem processados | | programList | Caminho relativo ou absoluto do arquivo | Arquivo contendo os nomes dos arquivos (**fontes ou recursos**) a serem processados (**um arquivo por linha**) | > Informar a opção `program` ou `programList` **mas não ambas**. ### Exemplo ```ini [deleteProg] action=deleteProg program=prog1.prw ``` ### Retorno ``` [INFO] Starting program deletion. [LOG] Starting build for environment producao. [LOG] All programs successfully deleted from RPO. [LOG] Committing end build. [INFO] Program deletion finished. ``` ## `action = defragRPO` Executa a desfragmentação do RPO. > Esta action depende da **action authentication**. ### Exemplo ```ini [defragRPO] action=defragRPO ``` ### Retorno ``` [INFO] Starting RPO defragmentation. [LOG] Starting build for environment producao. [WARN] This process may take a while. [LOG] RPO successfully defragged. [LOG] Committing end build. [INFO] RPO defragmentation finished. ``` ## <a name="compatibilidade_legado"></a>Compatibilidade (legado) Para utilizar o modo de compatibilidade com **TDSCLi-Eclipse** usaremos arquivos de script (batch/bash), específicos para cada sistema operacional, e apenas uma **action pode ser chamada por execução**: > Windows: `> tdscli.bat <action> <parâmetros_da_ação>` > Linux: `> ./tdscli.sh <action> <parâmetros_da_ação>` > Mac OS: `> ./tdscli.sh <action> <parâmetros_da_ação>` ### Usando parâmetros em linha de comando `> tdscli.bat <action> <parametro_da_acao_1> <parametro_da_acao_2> <parametro_da_acao_3>...` ### Usando parâmetros em arquivo `> tdscli.bat <action> @parametros_da_acao.txt` > Os parâmetros obrigatórios **dependem da action**, porém em todas as actions os parâmetros de conexão da **action authentication** devem ser informados. ### Exemplo usando **parâmetros em linha de comando** `> tdscli.bat compile serverType=AdvPL server=localhost port=1234 build=7.00.170117A environment=env user=user psw=pass includes=D:/servers/protheus/includes program=D:/fontes/advpl/prg_0001.prw;D:/fontes/advpl/prg_0002.prw;D:/fontes/advpl/prg_0003.prw authorization=D:/chave_compilacao/chave.aut recompile=t` ### Exemplo usando **parâmetros em arquivo** `> tdscli.bat compile @compile.txt` ```ini ;compile.txt ;Exemplo de arquivo de execução para o TDSCLi (legado) ;parametros da acao authentication serverType=AdvPL server=localhost port=1234 build=7.00.170117A user=user psw=pass environment=env ;parametros da acao compile includes=D:/servers/protheus/includes program=D:/fontes/advpl/prg_0001.prw;D:/fontes/advpl/prg_0002.prw;D:/fontes/advpl/prg_0003.prw authorization=D:/chave_compilacao/chave.aut recompile=t ```