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 e uma adaptacao didatica para o StudyOps. Ele nao copia uma implementacao de uma fonte externa; usa o principio de construir uma ferramenta pequena e exercitavel.
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(`opcao desconhecida: ${formatFlag}`);
}
const format = formatValue ?? "text";
if (format !== "text" && format !== "json") {
throw new Error(`formato invalido: ${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 opcoes validas ou falha cedo.runrecebe dados ja validados e produz uma saida deterministica.
Essa separacao facilita testar a logica sem iniciar um processo de terminal.
Depois, um pequeno entrypoint pode capturar a excecao, escrever a mensagem em
stderr e encerrar com codigo 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.