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
Resolução de Conflitos
Quando o mesmo nome de comando existe em múltiplos locais:
Regras de Resolução
| Prioridade | Fonte | Caminho de Exemplo |
|---|---|---|
| 1 (maior) | invkfile do diretório atual | ./invkfile.cue |
| 2 | Módulos locais | ./mytools.invkmod/ |
| 3 | Diretório do usuário | ~/.invowk/cmds/invkfile.cue |
| 4 (menor) | Search paths | /opt/invowk-modules/ |
Princípio chave: Mais perto do diretório de trabalho = maior prioridade.
Detalhes da Descoberta de Módulos
Campos Obrigatórios do Módulo
// invkmod.cue
module: "com.example.mymodule" // Convenção de nomenclatura RDNS
version: "1.0.0" // Versão semântica
// Opcional
description: "My useful module"
requires: [
{
git: "https://github.com/org/repo.git"
version: "v1.0.0"
}
]
Resolução de Dependências
Visibilidade de Dependências Transitivas
| De | Pode Acessar | Não Pode Acessar |
|---|---|---|
| Módulo A | comandos de A, comandos de B | comandos de C (transitivo) |
| Módulo B | comandos de B, comandos de C | - |
| invkfile Raiz | Próprios comandos, deps diretas | Deps 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
Invkfiles e módulos adicionais são configurados em ~/.config/invowk/config.cue:
includes: [
{path: "/opt/company-invowk-modules/tools.invkmod"},
{path: "/home/shared/invowk/invkfile.cue"},
]
Ordem de Processamento de Entradas
Cache de Descoberta
Problemas Comuns de Descoberta
Problema: Comando Não Encontrado
Problema: Versão Errada do Comando
Comandos de Debug
# Listar todos os comandos descobertos com fontes
invowk cmd --invk-verbose
# Validar estrutura do módulo
invowk module validate ./mymodule.invkmod
Diagramas Relacionados
- Sequência de Execução de Comando - O que acontece após a descoberta
- Fluxograma de Seleção de Runtime - Como runtimes são escolhidos
- Diagrama C4 de Container - Contexto do componente de descoberta