Pular para o conteúdo principal
Versão: 0.3.0

Diagrama de Sequência de Execução de Comandos

Este diagrama mostra o fluxo temporal desde a invocação do CLI através da descoberta, seleção de runtime e execução. Entender este fluxo ajuda com debugging e extensão do Invowk.

Fluxo Principal de Execução

Diagram: architecture/execution-main

Fluxo do Runtime Container (Detalhado)

Quando o runtime container é selecionado, etapas adicionais ocorrem:

Diagram: architecture/execution-container

Fluxo do Runtime Virtual

O runtime virtual usa o interpretador mvdan/sh embutido:

Diagram: architecture/execution-virtual

Descrições das Fases

1. Fase de Inicialização

EtapaComponenteAção
1CLIReceber comando do usuário
2-4Config + CUECarregar e fazer parsing de ~/.config/invowk/config.cue

Decisões-chave tomadas:

  • Preferência de engine de container (docker vs podman)
  • Search paths para invowkfiles/módulos
  • Runtime padrão se não especificado

2. Fase de Descoberta

EtapaComponenteAção
5DiscoveryIniciar descoberta de comandos
6-7CUE ParserFazer parsing de todos os arquivos invowkfile.cue
8-9CUE ParserFazer parsing de todos os diretórios *.invowkmod
10DiscoveryConstruir árvore unificada de comandos

Ordem de precedência (maior para menor):

  1. invowkfile.cue do diretório atual
  2. *.invowkmod do diretório atual
  3. Includes configurados
  4. Diretório de comandos do usuário ~/.invowk/cmds/ (apenas módulos, não recursivo)

3. Fase de Resolução

EtapaComponenteAção
11CLICorresponder nome do comando aos comandos descobertos
12CLISelecionar implementação específica da plataforma
13-14RegistryObter instância apropriada do runtime
15-16RuntimeValidar contexto de execução

Correspondência de plataforma:

  • Verificar platforms: ["linux"], ["macos"], ["windows"]
  • Erro se nenhuma implementação corresponder à plataforma atual

4. Fase de Execução

EtapaComponenteAção
17RuntimeIniciar execução
18-19ExecutorExecutar o script/comando real
20RuntimeRetornar resultado
21CLISaída para usuário

Comportamento específico do runtime:

  • Native: Spawns processo do shell do host
  • Virtual: Interpreta via mvdan/sh
  • Container: Provisiona imagem, executa container

Pontos de Tratamento de Erros

Diagram: architecture/execution-errors

Considerações de Performance

FaseDuração TípicaOtimização
Inicialização< 10msConfig em cache após primeiro carregamento
Descoberta10-100msCache por requisição elimina varreduras duplicadas do sistema de arquivos
Resolução< 1msLookup simples
ExecuçãoVariávelDepende do comando

Otimizações principais:

  • Cache de descoberta por requisição: Um discoveryRequestCache anexado ao contexto da requisição memoriza resultados de DiscoverCommandSet, DiscoverAndValidateCommandSet e GetCommand. A cross-population garante que uma chamada DiscoverAndValidateCommandSet também satisfaz lookups downstream de DiscoverCommandSet, eliminando travessias redundantes do sistema de arquivos dentro de uma única invocação CLI.

Gargalos a observar:

  • Muitos módulos nos search paths → descoberta mais lenta
  • Invowkfiles grandes → parsing mais lento
  • Pulls de imagem de container → pode levar minutos

Diagramas Relacionados