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

Fluxograma de Precedência de Descoberta

Este diagrama mostra como comandos são descobertos e como conflitos são resolvidos quando o mesmo nome de comando aparece em múltiplos locais.

Fluxo de Descoberta

Diagram: architecture/discovery-flow

Resolução de Conflitos

Quando o mesmo nome de comando existe em múltiplos locais:

Diagram: architecture/discovery-conflict

Regras de Resolução

PrioridadeFonteCaminho de Exemplo
1 (maior)invowkfile do diretório atual./invowkfile.cue
2Módulos locais./mytools.invowkmod/
3Includes configurados/opt/invowk-modules/tools.invowkmod
4 (menor)Diretório de comandos do usuário~/.invowk/cmds/mytools.invowkmod/

Princípios chave:

  • Mais perto do diretório de trabalho = maior prioridade.
  • Includes configurados têm precedência sobre o diretório de comandos do usuário porque representam configuração explícita e intencional.
  • O diretório de comandos do usuário (~/.invowk/cmds/) descobre apenas diretórios *.invowkmod como filhos imediatos (não recursivo). Invowkfiles avulsos não são descobertos a partir desse local.

Detalhes da Descoberta de Módulos

Diagram: architecture/discovery-module-structure

Campos Obrigatórios do Módulo

// invowkmod.cue
module: "com.example.mymodule" // RDNS naming convention
version: "1.0.0" // Semantic version

// Optional
description: "My useful module"
requires: [
{
git_url: "https://github.com/org/repo.invowkmod.git"
version: "^1.0.0"
}
]

Resolução de Dependências

Diagram: architecture/discovery-deps

Visibilidade de Dependências Transitivas

DePode AcessarNão Pode Acessar
Módulo Acomandos de A, comandos de Bcomandos de C (transitivo)
Módulo Bcomandos de B, comandos de C-
invowkfile RaizPróprios comandos, deps diretasDeps transitivas

Por que esta restrição?

  • Previne acoplamento implícito a dependências transitivas
  • Torna dependências explícitas em cada módulo
  • Permite upgrades de dependências sem quebrar consumidores

Configuração de Includes

Módulos adicionais são configurados em ~/.config/invowk/config.cue:

includes: [
{path: "/opt/company-invowk-modules/tools.invowkmod"},
{path: "/home/shared/invowk/shared.invowkmod"},
]

Ordem de Processamento de Entradas

Diagram: architecture/discovery-includes

Cache de Descoberta

Diagram: architecture/discovery-cache

Problemas Comuns de Descoberta

Problema: Comando Não Encontrado

Diagram: architecture/discovery-not-found

Problema: Versão Errada do Comando

Diagram: architecture/discovery-wrong-version

Comandos de Debug

# Listar todos os comandos descobertos com fontes
invowk cmd --ivk-verbose

# Validar descoberta do workspace (reporta todos os diagnósticos)
invowk validate

# Validar um módulo específico
invowk validate ./mymodule.invowkmod

Diagramas Relacionados