Pular para o conteúdo principal

Arquitetura

Visão geral​

A CLI é um binário Go monolítico organizado em pacotes por subsistema, com recipes oficiais embutidas no binário (go:embed). Cada comando da CLI encadeia os subsistemas; o manifest orotools.yaml conecta os usos.

Pipeline do oro new​

O fluxo de scaffold é um pipeline determinístico: carregar a recipe, resolver variáveis, validar requirements, planejar e executar.

Subsistemas​

PacoteResponsabilidade
internal/cliComandos cobra e wizards interativos
internal/uiHelpers de terminal (paleta, tabelas, TUI)
internal/recipeLoader/validator de recipes (YAML, embed)
internal/variablesResolução de variáveis (defaults → wizard → flags)
internal/requirementsChecker de ferramentas + versões
internal/plannerRecipe → plano (dry-run, network awareness)
internal/executorSteps mkdir/copy/template/exec/message idempotentes
internal/manifestorotools.yaml read/write strict
internal/installerInstallers externos (skills/agents)
internal/devmgrDev manager (oro dev)
internal/updaterSelf-update (oro upgrade)

Princípios​

  • Idempotência — steps já satisfeitos são pulados no oro apply; mkdir ignora existentes, cópias são create-only, templates respeitam o mode.
  • Fail-safe — falhas em remote Git, pipeline ou installers não apagam o projeto local; o manifest é preservado para retry.
  • Isolamento — o dev manager não depende dos pacotes de recipe/planner; cada subsistema é testável com runners e FS injetáveis.