UNPKG

@totvs/tds-ls

Version:
556 lines (412 loc) 22.2 kB
# TDS-CLI Arquivo de execução (_script_) O TDS-CLI necessita de um arquivo de execução (_script_) contendo as informações das ações que ele deverá executar ao ser invocado. ## Informações gerais **ATENÇÃO**: Este arquivo deve ter o formato ANSI (CP1252). Caso contrário poderá ocorrer erro na sua execução. **RECOMENDAÇÃO**: Prefira 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 - Formato ANSI (CP1252); - As marcações "`#`" ou "`;`" representam os comentários do arquivo de execução; - Use as marcaçções `[]` 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: - `[general] -> apenas para uso interno` - `[user] -> onde definimos as variáveis de ambiente` ### Usando caminhos relativos ou absolutos Quando for necessário indicar 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 utilizar caminhos relativos ao diretório do seu arquivo de execução: > **Windows:** `dir\file.ptm` **ou Linux:** `dir/file.ptm` **RECOMENDAÇÃO**: 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 de arquivo de execução Agora que conhecemos o arquivo de execução vamos ver um exemplo: #### 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 [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. ``` ## Seções de configuração ### Parâmetros gerais Os parâmetros gerais devem sempre ser inseridos no **início do arquivo** do script 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) | Exibe ou não exibe informações no console | #### Exemplo - Parâmetros gerais ```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 `[user]` ```ini [user] INCLUDE_DIR=/home/mansano/_c/lib120/src/include/ ... [compile] action=compile includes=${INCLUDE_DIR} ``` ## Seções de execução As seções permitem **organizar** seu arquivo de execução, para seu nome é permitido uso de espaços e caracteres especiais. ### Exemplo básico ```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.</br> > </br> > Cada seção deve conter apenas uma **`action`**, que serão explicadas a seguir. No exemplo a seguir a ação de compilação não será executada, pois está marcada como `skip`. ### Exemplo `skip` ```ini [compilação de arquivos] skip=true action=compile ``` ## Ações de execução (`action`) ### `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 | Informações do retorno da validação. | Parâmetro | Valor | Descrição | | --------- | ------------ | ---------------------------------------------------------------------- | | build | 7.00.170117A | Build do AppServer validado | | secure | 1 ou 0 | Se a conexão é segura ou não, 1=Conexão segura, 0=Conexão convencional | #### Exemplo `action = validate` ```ini [validate] action=validate server=192.168.0.198 port=5025 ``` #### Retorno `action = validate` ```log [LOG] Appserver detected with build version: 7.00.170117A and secure: 0 build: 7.00.170117A / secure: 0 ``` ### `action = authorization` Aplica o token de compilação (Harpia) ou chave de compilação. > O **token de compilação** é de uso exclusivo da TOTVS para o Appserver Harpia. | Parâmetro | Valor | Descrição | | --------- | ------------------- | ---------------------------- | | authtoken | Token de compilação | Define o token de compilação | ```ini [authorization] action=authorization authtoken=<token de compilação> ``` #### Deprecated - O uso da **chave de compilação** deve ser substituida pela utilização do **token 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 `action = authentication` ```ini [authentication] action=authentication server=192.168.0.198 port=5025 secure=0 build=AUTO environment=producao user=admin psw= ``` #### Retorno `action = authentication` ```log [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**.</br> > </br> > Se for executar uma compilação que necessite do uso do **token de compilação** crie a seção com a **action `authorization`** antes desta ação. | 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 `action = compile` ```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 `action = compile` ```log [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 um patch. > Esta action depende da **action authentication**.</br> > </br> > Se for executar uma geração que necessite do uso do **token de compilação** crie a seção com a **action `authorization`** antes desta ação. | 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 | | patchName | O nome do patch a ser gerado | Caso não informado, será gerado com o nome padrão para o tipo escolhido | > Informar a opção `saveLocal` ou `saveRemote` **mas não ambas**.</br> > </br> > Informar a opção `fileResource` ou `fileResourceList` **mas não ambas**. #### Exemplo `action = patchGen` ```ini [patchGen] action=patchGen fileResource=prog1,prog2 patchType=PTM saveLocal=/home/mansano/TDScli/patch/ ``` #### Retorno `action = patchGen` ```log [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 = patchValidate` Efetua apenas a validação de um patch, sem efetuar sua aplicação. Caso a validação acuse alguma problema, o retorno da execução do batch será diferente de 0 (zero). > 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 | #### Exemplo `action = patchValidate` ```ini [patchValidate] action=patchValidate patchFile=/home/mansano/TDScli/patch/tttp120.ptm localPatch=True ``` #### Retorno `action = patchValidate` ```log [INFO] Starting patch validate. [INFO] Patch file: /home/mansano/TDScli/patch/tttp120.ptm [INFO] Starting build for environment producao. [INFO] Starting build using RPO token ... [WARN] Patch validated with problems. There are resources in patch file older than RPO. [INFO] Aborting end build (rollback changes). [INFO] Starting reconnection to the server 'tdscli.serverName_rpc' [INFO] Authenticating... [INFO] User authenticated successfully. [INFO] Reconnection to the server 'tdscli.serverName_rpc' finished. [INFO] Starting validating a package in Protheus application. [INFO] Package validated in Protheus application without problems. [INFO] Validating a package in Protheus application finished. [INFO] Server 'tdscli.serverName_rpc' successfully disconnected. [INFO] Patch validate finished. [WARN] Outdated sources and/or resources detected. [INFO] File Date Patch Date RPO [INFO] APDA020.PRX 06/10/2023 14:08:26 10/11/2023 11:07:03 [INFO] APTA100APIB.PRW 27/09/2023 18:17:34 30/11/2023 16:16:49 ... [INFO] TRMA060_PT-BR.TRES 25/06/2021 02:24:04 01/09/2023 02:29:25 tdscli batch error [5]!!! ``` ### `action = patchApply` Efetua a aplicação 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 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 | | 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 `action = patchApply` ```ini [patchApply] action=patchApply patchFile=/home/mansano/TDScli/patch/tttp120.ptm localPatch=True applyOldProgram=True ``` #### Retorno `action = patchApply` ```log [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 `action = patchInfo` ```ini [patchInfo] action=patchInfo patchFile=/home/mansano/TDScli/patch/tttp120.ptm output=/home/mansano/TDScli/patch/tttp120.out localPatch=True ``` #### Retorno `action = patchInfo` ```log [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**.</br> > </br> > Se for executar uma remoção que necessite do uso do **token 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 `action = deleteProg` ```ini [deleteProg] action=deleteProg program=prog1.prw ``` #### Retorno `action = deleteProg` ```log [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 `action = defragRPO` ```ini [defragRPO] action=defragRPO ``` #### Retorno `action = defragRPO` ```log [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ções de execução `deprecated` Estas ações devem ser substituidas e podem ser removidas a qualquer momento. ### `action = getID` > Atenção: As chaves de compilação foram substituidas pelos tokens de compilação a partir dos AppServer Harpia. Obtém o ID para a chave de compilação. #### Exemplo `action = getID` ```ini [getID] action=getID ``` #### Retorno `action = getID` ```log ID: ED75-E184 ```