From 533e79ba959143f0459431a486bfb85c56c72ddc Mon Sep 17 00:00:00 2001 From: luisgulo Date: Fri, 24 Oct 2025 18:01:10 +0200 Subject: Releasing code version 1.8.0 --- core/utils/module-docgen.sh | 69 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 core/utils/module-docgen.sh (limited to 'core/utils/module-docgen.sh') 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")" -- cgit v1.2.3