Briefing de leitura · Sessão 4 de 11
Exemplo guiado em TypeScript
- Fundamento
- CLI para ferramentas
- Registro
- Logbook local
Contexto de missão
Exemplo guiado em TypeScript
Esta leitura alimenta o fundamento CLI para ferramentas. Termine com uma evidência pequena antes de avançar.
- Contexto
- Sessão 4 de 11
O exemplo abaixo é uma adaptação didática para o StudyOps. Ele não copia uma implementação de uma fonte externa; usa o princípio de construir uma ferramenta pequena e exercitável.
type CliOptions = {
inputPath: string;
format: "text" | "json";
};
function parseArgs(argv: string[]): CliOptions {
const [inputPath, formatFlag, formatValue] = argv;
if (!inputPath) {
throw new Error("uso: studyops-ingest <arquivo> [--format text|json]");
}
if (formatFlag && formatFlag !== "--format") {
throw new Error(`opção desconhecida: ${formatFlag}`);
}
const format = formatValue ?? "text";
if (format !== "text" && format !== "json") {
throw new Error(`formato inválido: ${format}`);
}
return { inputPath, format };
}
function run(input: string, options: CliOptions): string {
const lines = input.split(/\r?\n/).filter(Boolean);
const result = { source: options.inputPath, lineCount: lines.length };
return options.format === "json"
? JSON.stringify(result)
: `${result.source}: ${result.lineCount} linhas`;
}
O fluxo fica separado em duas responsabilidades:
parseArgstransforma texto externo em opções válidas ou falha cedo.runrecebe dados já validados e produz uma saída determinística.
Essa separação facilita testar a lógica sem iniciar um processo de terminal.
Depois, um pequeno entrypoint pode capturar a exceção, escrever a mensagem em
stderr e encerrar com código diferente de zero.
Logbook técnico
Registro de campo desta sessão
O conteúdo continua público. O registro técnico fica disponível após autenticação.