md-to-html/convertir.sh

84 lines
2.6 KiB
Bash
Raw Permalink Normal View History

2026-05-16 16:40:45 +00:00
#!/bin/bash
2026-05-16 16:42:31 +00:00
# =============================================================================
# convertir.sh — Convierte archivos Markdown a HTML y los publica en Apache
# Proyecto: JAK DevOps — workflow cy.yaml
#
# Requisitos:
# - Ejecutar dentro del job container con /output montado sobre el htdocs de Apache
# - El runner debe tener valid_volumes: ['/srv/devops/data/apache/**']
# =============================================================================
2026-05-16 16:40:45 +00:00
set -euo pipefail
2026-05-16 16:42:31 +00:00
OUTPUT_DIR="/output"
BASE_URL="https://portaljack.freeddns.org"
# -----------------------------------------------------------------------------
dependencies() {
echo "[1/3] Instalando dependencias..."
2026-05-16 16:40:45 +00:00
apt-get update -qq
apt-get install -y -qq pandoc
2026-05-16 16:42:31 +00:00
echo " pandoc $(pandoc --version | head -1 | cut -d' ' -f2) instalado"
2026-05-16 16:40:45 +00:00
}
2026-05-16 16:42:31 +00:00
# -----------------------------------------------------------------------------
convert_to_html() {
echo "[2/3] Convirtiendo Markdown → HTML..."
local converted=0
local errors=0
2026-05-16 16:40:45 +00:00
for md in *.md; do
2026-05-16 16:42:31 +00:00
# Guarda ante glob sin matches (bash con set -u no expande *.md si no hay ficheros)
[ -f "$md" ] || { echo " [WARN] No se encontraron archivos .md en el directorio de trabajo"; return 0; }
local filename="${md%.md}"
echo " Procesando: $md"
if pandoc "$md" \
--standalone \
--metadata title="$filename" \
--highlight-style=tango \
--output "${filename}.html"; then
converted=$((converted + 1))
else
echo " [ERROR] Fallo al convertir: $md"
errors=$((errors + 1))
fi
2026-05-16 16:40:45 +00:00
done
2026-05-16 16:42:31 +00:00
echo " Convertidos: ${converted} | Errores: ${errors}"
[ "$errors" -eq 0 ] || return 1
2026-05-16 16:40:45 +00:00
}
2026-05-16 16:42:31 +00:00
# -----------------------------------------------------------------------------
deploy() {
echo "[3/3] Publicando en Apache..."
local count=0
# Itera solo los HTML generados a partir de los .md presentes (no recoge HTMLs previos del repo)
for md in *.md; do
[ -f "$md" ] || continue
local html="${md%.md}.html"
2026-05-16 16:40:45 +00:00
[ -f "$html" ] || continue
2026-05-16 16:42:31 +00:00
cp "$html" "${OUTPUT_DIR}/"
count=$((count + 1))
echo ""
echo "${BASE_URL}/${html}"
2026-05-16 16:40:45 +00:00
done
2026-05-16 16:42:31 +00:00
echo ""
echo "======================================================"
echo " ${count} página(s) publicada(s) en ${BASE_URL}/"
echo "======================================================"
}
# -----------------------------------------------------------------------------
main() {
dependencies
convert_to_html
deploy
2026-05-16 16:40:45 +00:00
}
2026-05-16 16:42:31 +00:00
main