diff options
| author | luisgulo <luisgulo@gmail.com> | 2025-10-24 18:01:10 +0200 |
|---|---|---|
| committer | luisgulo <luisgulo@gmail.com> | 2025-10-24 18:01:10 +0200 |
| commit | 533e79ba959143f0459431a486bfb85c56c72ddc (patch) | |
| tree | 91974de1bbbdc4c51c76ed591fc5c6e02a3342b6 /core/utils/module-template.sh | |
| parent | 45019c81cfd0fc1d18dce18cdfd5f127c6d61073 (diff) | |
Releasing code version 1.8.0
Diffstat (limited to 'core/utils/module-template.sh')
| -rwxr-xr-x | core/utils/module-template.sh | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/core/utils/module-template.sh b/core/utils/module-template.sh new file mode 100755 index 0000000..a38624b --- /dev/null +++ b/core/utils/module-template.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# ShFlow Module Template Generator +# License: GPLv3 +# Author: Luis GuLo +# Version: 1.1.0 + +set -euo pipefail + +# 📁 Rutas defensivas +PROJECT_ROOT="${SHFLOW_HOME:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}" +MODULE_NAME="${1:-}" +MODULE_DIR="$PROJECT_ROOT/core/modules" +MODULE_FILE="$MODULE_DIR/$MODULE_NAME.sh" + +# 🧩 Cargar render_msg si no está disponible +COMMON_LIB="$PROJECT_ROOT/core/lib/translate_msg.sh" +if ! declare -f render_msg &>/dev/null; then + [[ -f "$COMMON_LIB" ]] && source "$COMMON_LIB" +fi + +# 🌐 Cargar traducciones +lang="${SHFLOW_LANG:-es}" +trfile="$PROJECT_ROOT/core/utils/module-template.tr.${lang}" +declare -A tr +if [[ -f "$trfile" ]]; then while IFS='=' read -r k v; do tr["$k"]="$v"; done < "$trfile"; fi + +# 🧪 Validar entrada +if [[ -z "$MODULE_NAME" ]]; then + echo "${tr[usage]:-❌ Uso: module-template.sh <nombre_modulo>}" + exit 1 +fi + +if [[ -f "$MODULE_FILE" ]]; then + echo "$(render_msg "${tr[exists]}" "name=$MODULE_NAME" "dir=$MODULE_DIR")" + exit 1 +fi + +mkdir -p "$MODULE_DIR" + +cat > "$MODULE_FILE" <<EOF +#!/bin/bash +# Module: $MODULE_NAME +# Description: <descripción breve del módulo> +# License: GPLv3 +# Author: Luis GuLo +# Version: 1.0 +# Dependencies: <comandos externos si aplica> + +${MODULE_NAME}_task() { + local host="\$1"; shift + declare -A args + for arg in "\$@"; do + key="\${arg%%=*}" + value="\${arg#*=}" + args["\$key"]="\$value" + done + + echo "🚧 Ejecutando módulo '$MODULE_NAME' en \$host" + # Aquí va la lógica principal +} + +check_dependencies_$MODULE_NAME() { + # Verifica herramientas necesarias + for cmd in <comando1> <comando2>; do + if ! command -v "\$cmd" &> /dev/null; then + echo " ❌ [$MODULE_NAME] Falta: \$cmd" + return 1 + fi + done + echo " ✅ [$MODULE_NAME] Dependencias OK" + return 0 +} +EOF + +chmod +x "$MODULE_FILE" +echo "$(render_msg "${tr[created]}" "name=$MODULE_NAME" "path=$MODULE_FILE")" |
