Child pages
  • Variáveis de ambiente disponíveis para os algoritmos
Skip to end of metadata
Go to start of metadata
Variáveis disponíveis para todos os algoritmos
  • O CSBase disponibiliza para os algoritmos um conjunto de variáveis com informações sobre o ambiente de execução do comando:

CSBASE_BIN_DIR: caminho absoluto para o diretório de binários do algoritmo.

     Exemplo de uso: acesso a outros arquivos no diretório de binários do algoritmo

binDirAccess.lua
-- Lê a variável com o caminho para o diretório de execução do comando
  local binDir = os.getenv("CSBASE_BIN_DIR")

  -- Monta o caminho para o arquivo de interesse
  local otherFile = bindDir.."/config.xml"

  -- Abre o arquivo para leitura
  io.input(otherFile)

  -- Lê todo o conteúdo do arquivo
  local content = io.read("*all")

  -- Fecha o arquivo
  io.input():close()

CSBASE_PROJ_DIR: caminho absoluto para o diretório do projeto do comando.

     Exemplo de uso: determinar se um arquivo de lock existe na área de projetos

checkLockFile.lua
-- Lê a variável com o caminho para o diretório de projetos
  local projDir = os.getenv("CSBASE_PROJ_DIR")

  -- Monta o caminho para o arquivo de interesse
  local file = projDir.."/file.lock"

  -- Testa se o arquivo existe (utilizando a biblioteca shellExtension)
  if ext.fileExists(file) then
    -- O arquivo existindo, loga o problema e aborta a execução com código de erro
    print("[ERRO] Arquivo de lock existe, não é possível continuar!")
    os.exit(-1)
  end

CSBASE_EXECUTION_DIR: caminho absoluto para o diretório de execução do comando.

     Exemplo de uso: log do diretório de execução do comando.

executionDirAccess.lua
-- Lê a variável com o caminho para o diretório de execução do comando
  local execDir = os.getenv("CSBASE_EXECUTION_DIR")

  print("[INFO] Executando do diretório "..execDir)

CSBASE_SANDBOX_DIR: caminho absoluto para o diretório da sandbox de execução do comando.

     Exemplo de uso: criação de um arquivo temporário na sandbox de execução. Note que o arquivo temporário não precisa ser removido, pois a sandbox é apagada automaticamente após o fim da execução do comando

tempFileInSandbox.lua
-- Lê a variável com o caminho para a sandbox de execução do comando
  local sandbox_path = os.getenv("CSBASE_SANDBOX_DIR")

  -- Monta caminho para arquivo temporário
  local temp_file = sandbox_path.."/temp_file.txt"

  -- Abre o arquivo temporário para escrita
  io.output(temp_file)

  -- Escreve no arquivo temporário
  io.write(os.date("%c"))

  -- Fecha o arquivo
  io.output():close()

CSBASE_LOG_FILE: caminho absoluto para o arquivos de log do comando.

Variáveis disponíveis para os algoritmos que declaram arquivos de entrada ou saída

CSBASE_INPUT_FILES: lista de caminhos absolutos para os arquivos de entrada do comando, separados por vírgula

CSBASE_OUTPUT_FILES: lista de caminhos absolutos para os arquivos de saída do comando, separados por vírgula

     Exemplo de uso: execução de comando em uma máquina remota, sem acesso à área de projetos. É necessário copiar os arquivos de entrada para a máquina remota antes da execução e copiar os arquivos de saída de volta para a máquina local depois da execução.

executeInRemoteMachine.lua
-- Lê a variável com a lista de arquivos de entrada
  local inputFiles = os.getenv("CSBASE_INPUT_FILES")

  -- Lê a variável com a lista de arquivos de entrada
  local outputFiles = os.getenv("CSBASE_OUTPUT_FILES")

  -- TODO: Copiar arquivos de entrada para máquina remota

  -- TODO: Executar comando remotamente

  -- TODO: Copiar arquivos de saída de volta para máquina local
Variáveis disponíveis para algoritmos executados em um fluxo

CSBASE_FLOW_NODE_ID: identificador único do algoritmo dentro do fluxo. É um número inteiro maior que zero, mas não é garantido que seja sequencial. Isto é, se o identificador do algoritmo é o número 3, por exemplo, não quer dizer que ele seja o quarto algoritmo do fluxo ou que sequer existam os algoritmos de identificador 1, 2 ou 4.

     Exemplo de uso: gerar arquivos de log com nome sufixado pelo identificador do algoritmo, para facilitar sua identificação.

logFileWithId.lua
-- Lê a variável com o identificador do algoritmo no fluxo
  local algo_id = os.getenv("CSBASE_FLOW_NODE_ID")

  -- Monta caminho para arquivo de log com o idenficador
  local log_file = "/tmp/flow_log_"..algo_id..".txt"

  -- Abre o arquivo de log para escrita
  io.output(log_file)

  -- Escreve no arquivo de log
  io.write(os.date("%c"))

  -- Fecha o arquivo
  io.output():close()
  • No labels