📦 Estrutura da Biblioteca - RafaPear/CLILib GitHub Wiki
A CLILib está organizada de forma modular para facilitar a manutenção, extensão e compreensão do código. Abaixo está uma visão geral dos principais componentes da biblioteca e o seu propósito.
App.kt
)
🧠 Núcleo da aplicação (Responsável por controlar o ciclo de vida da CLI:
runtimeCLI()
– inicia o ciclo interativo da CLI com prompt e leitura contínua de comandos.runSingleCmd(cmd: String)
– executa um único comando.runFromFile(file: String)
– executa comandos a partir de um ficheiro.ppc
.registerDefaultCommands()
– regista todos os comandos pré-definidos através doCmdRegister
.
CmdRegister.kt
)
🧩 Registo de Comandos (Gestor central de comandos disponíveis no sistema:
register(cmd)
– regista um comando.unregister(cmd)
– remove um comando.registerAll(list)
– regista vários comandos.find(alias)
– procura um comando por nome/alias.all()
– retorna todos os comandos registados.
Command.kt
)
🔧 Interface de Comando (Interface que define como cada comando deve ser estruturado:
description
,usage
,aliases
,run(args)
são obrigatórios.minArgs
,maxArgs
,requiresFile
, etc., são opcionais.- Todos os comandos implementam esta interface.
VarRegister.kt
)
🧮 Sistema de Variáveis (Permite criar, alterar e consultar variáveis globais:
register(name, value)
– cria uma variável.get(name)
– obtém o valor de uma variável.modify(name, value)
– altera o valor.unregister(name)
– remove.all()
– retorna todas as variáveis.
ExprParser.kt
)
🧠 Parsing de Expressões (Permite calcular expressões matemáticas simples com operadores + - * /
e parêntesis.
Exemplo:
val parser = ExprParser()
val result = parser.parse("3 + (2 * 5)")
Utils.kt
, Colors.kt
, Global.kt
)
🛠️ Utilitários (cmdParser(...)
– interpreta e executa comandos compostos (com|
).replaceVars()
– substitui variáveis ($a
) pelos seus valores.validateArgs(...)
– valida número de argumentos e ficheiros.drawPrompt()
,clearPrompt()
– manipula o terminal.ProgressBar.kt
– componente visual de progresso no terminal.Colors.kt
– códigos ANSI para cores no terminal.Global.kt
– constantes globais (ex:version
,commentCode
,root
).
Example.kt
)
📁 Exemplo de utilização (Demonstra como iniciar a aplicação e correr scripts:
fun main() {
val app = App()
app.registerDefaultCommands()
app.runFromFile("Scripts/exampleScript.ppc")
}