registry.sh¶
Gerenciamento do arquivo registry.json de plugins.
Funções¶
registry_add_plugin()¶
Adiciona um plugin ao registry.
Parâmetros:
$1- Caminho do arquivo registry.json$2- Nome do plugin$3- URL do repositório$4- Versão (opcional, padrão: "1.0.0")$5- Flag dev (opcional: "true" ou "false", padrão: "false")$6- Quantidade de comandos (opcional)$7- Categorias separadas por vírgula (opcional)
Retorno:
0- Plugin adicionado1- Plugin já existe
registry_file="/opt/susa/plugins/registry.json"
# Adição simples
registry_add_plugin "$registry_file" "myplugin" "https://github.com/user/plugin.git" "1.2.0"
# Com metadados completos
registry_add_plugin "$registry_file" "myplugin" "https://github.com/user/plugin.git" "1.2.0" "false" "5" "backup, deploy"
# Plugin dev
registry_add_plugin "$registry_file" "myplugin" "/path/to/dev" "1.0.0" "true" "3" "test"
registry_remove_plugin()¶
Remove um plugin do registry.
registry_list_plugins()¶
Lista todos os plugins do registry em formato delimitado por |.
Retorno: Linhas no formato: nome|source|version|installedAt
registry_list_plugins "$registry_file" | while IFS='|' read -r name source version installed; do
echo "Plugin: $name"
echo " Source: $source"
echo " Version: $version"
echo " Installed: $installed"
done
registry_get_plugin_info()¶
Obtém informação específica de um plugin.
Parâmetros:
$1- Caminho do arquivo registry.json$2- Nome do plugin$3- Campo (source, version, installedAt)
source=$(registry_get_plugin_info "$registry_file" "myplugin" "source")
version=$(registry_get_plugin_info "$registry_file" "myplugin" "version")
echo "Plugin myplugin: $version ($source)"
Exemplo Completo¶
#!/bin/bash
source "$LIB_DIR/internal/registry.sh"
registry_file="$CLI_DIR/plugins/registry.json"
# Adiciona plugin
registry_add_plugin "$registry_file" "awesome" "https://github.com/user/awesome.git" "2.0.0"
# Lista todos
echo "Plugins instalados:"
registry_list_plugins "$registry_file" | while IFS='|' read -r name source version installed; do
echo "- $name v$version (instalado em: $installed)"
done
# Obtém info específica
version=$(registry_get_plugin_info "$registry_file" "awesome" "version")
echo "Versão do awesome: $version"
# Remove plugin
registry_remove_plugin "$registry_file" "awesome"
Boas Práticas¶
- Sempre verifique se registry existe antes de usar
- Use em conjunto com plugin.sh
- Mantenha registry sincronizado com diretório plugins/