Verificando sessão...
StudyOpsÍndice do fundamento

CLI para ferramentas / Sessão 4

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:

  • parseArgs transforma texto externo em opcoes validas ou falha cedo.
  • run recebe 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

Verificando sessão...

O conteúdo continua público. O registro técnico fica disponível após autenticação.