blob: f5461cd7d1b0a97cd43bce9fa3dacae06fd68f52 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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")"
|