summaryrefslogtreecommitdiff
path: root/core/utils/module-docgen.sh
diff options
context:
space:
mode:
authorluisgulo <luisgulo@gmail.com>2025-10-24 18:01:10 +0200
committerluisgulo <luisgulo@gmail.com>2025-10-24 18:01:10 +0200
commit533e79ba959143f0459431a486bfb85c56c72ddc (patch)
tree91974de1bbbdc4c51c76ed591fc5c6e02a3342b6 /core/utils/module-docgen.sh
parent45019c81cfd0fc1d18dce18cdfd5f127c6d61073 (diff)
Releasing code version 1.8.0
Diffstat (limited to 'core/utils/module-docgen.sh')
-rwxr-xr-xcore/utils/module-docgen.sh69
1 files changed, 69 insertions, 0 deletions
diff --git a/core/utils/module-docgen.sh b/core/utils/module-docgen.sh
new file mode 100755
index 0000000..f5461cd
--- /dev/null
+++ b/core/utils/module-docgen.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+# ShFlow Module Documentation Generator
+# License: GPLv3
+# Author: Luis GuLo
+# Version: 1.4.0
+
+set -euo pipefail
+
+# 馃Л Detecci贸n de la ra铆z del proyecto
+PROJECT_ROOT="${SHFLOW_HOME:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
+OUTPUT="$PROJECT_ROOT/docs/modules-list.md"
+MODULE_DIRS=("$PROJECT_ROOT/core/modules" "$PROJECT_ROOT/user_modules" "$PROJECT_ROOT/community_modules")
+
+export SHFLOW_LANG="${SHFLOW_LANG:-es}"
+
+# 馃З 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-docgen.tr.${lang}"
+declare -A tr
+if [[ -f "$trfile" ]]; then while IFS='=' read -r k v; do tr["$k"]="$v"; done < "$trfile"; fi
+
+# 馃摑 Encabezado del documento
+{
+ echo "${tr[title]:-# 馃З M贸dulos en ShFlow}"
+ echo ""
+ echo "**$(render_msg "${tr[generated]}" "date=$(date '+%Y-%m-%d %H:%M:%S')")**"
+ echo ""
+ echo "| ${tr[col_module]:-M贸dulo} | ${tr[col_desc]:-Descripci贸n} | ${tr[col_type]:-Tipo} | ${tr[col_author]:-Autor} | ${tr[col_version]:-Versi贸n} | ${tr[col_deps]:-Dependencias} |"
+ echo "|--------|-------------|------|-------|---------|--------------|"
+} > "$OUTPUT"
+
+# 馃攣 Procesar m贸dulos
+for dir in "${MODULE_DIRS[@]}"; do
+ [ -d "$dir" ] || continue
+ TYPE=$(echo "$dir" | sed "s#$PROJECT_ROOT/##g")
+ while IFS= read -r -d '' file; do
+ name=$(basename "$file" .sh)
+ desc=$(grep -E '^# Description:' "$file" | sed 's/^# Description:[[:space:]]*//')
+ author=$(grep -E '^# Author:' "$file" | sed 's/^# Author:[[:space:]]*//')
+ version=$(grep -E '^# Version:' "$file" | sed 's/^# Version:[[:space:]]*//')
+ deps=$(grep -E '^# Dependencies:' "$file" | sed 's/^# Dependencies:[[:space:]]*//')
+
+ # Asegurar valor minimo
+ name=${name:-""}
+ desc=${desc:-""}
+ author=${author:-""}
+ version=${version:-""}
+ deps=${deps:-""}
+
+ [[ -z "$name" ]] && continue
+
+ echo "| $name | $desc | $TYPE | $author | $version | $deps |" >> "$OUTPUT"
+ done < <(find "$dir" -type f -name "*.sh" -print0)
+done
+
+# 馃搶 Pie de p谩gina
+{
+ echo ""
+ echo "${tr[footer]:-_Para actualizar esta tabla, ejecuta: \`module-docgen\`_}"
+} >> "$OUTPUT"
+
+echo "$(render_msg "${tr[done]}" "path=$OUTPUT")"