#!/bin/bash

# Script d'export du blog Markdown vers HTML5 avec Pandoc
# Usage: ./export.sh

# set -e désactivé pour traiter tous les fichiers même en cas d'erreur

# Couleurs pour les messages
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# Configuration
POSTS_DIR="posts"
CSS_DIR="css"
OUTPUT_DIR="output"
CSS_FILE="${CSS_DIR}/style.css"
BLOG_TITLE="Mon Blog"
BLOG_DESCRIPTION="Blog généré avec Pandoc et Markdown"

# Vérifier que pandoc est installé
if ! command -v pandoc &> /dev/null; then
    echo -e "${RED}Erreur: Pandoc n'est pas installé${NC}"
    echo "Installez Pandoc avec: sudo apt install pandoc"
    exit 1
fi

echo -e "${BLUE}=== Export du blog avec Pandoc ===${NC}\n"

# Créer le dossier output s'il n'existe pas
mkdir -p "${OUTPUT_DIR}"

# Copier le CSS dans le dossier output
if [ -f "${CSS_FILE}" ]; then
    mkdir -p "${OUTPUT_DIR}/css"
    cp "${CSS_FILE}" "${OUTPUT_DIR}/css/"
    echo -e "${GREEN}✓${NC} CSS copié"
else
    echo -e "${RED}✗${NC} Fichier CSS introuvable: ${CSS_FILE}"
fi

# Compteur de fichiers traités
count=0

# Template HTML pour l'en-tête et le pied de page
HEADER="<!DOCTYPE html>
<html lang=\"fr\">
<head>
    <meta charset=\"UTF-8\">
    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
    <title>\$title\$ - ${BLOG_TITLE}</title>
    <link rel=\"stylesheet\" href=\"css/style.css\">
</head>
<body>
<header>
    <h1>${BLOG_TITLE}</h1>
    <p>${BLOG_DESCRIPTION}</p>
</header>
<main>
<article>"

FOOTER="</article>
</main>
<footer>
    <p>&copy; 2025 ${BLOG_TITLE} | Généré avec <a href=\"https://pandoc.org/\">Pandoc</a></p>
</footer>
</body>
</html>"

# Créer un template temporaire
TEMPLATE_FILE=$(mktemp)
cat > "${TEMPLATE_FILE}" << EOF
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>\$title\$ - ${BLOG_TITLE}</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
    <h1>${BLOG_TITLE}</h1>
    <p>${BLOG_DESCRIPTION}</p>
</header>
<main>
<article>
\$if(title)\$
<div class="post-meta">
    \$if(date)\$<time>\$date\$</time>\$endif\$
    \$if(author)\$ | Par \$author\$\$endif\$
</div>
\$endif\$
\$body\$
</article>
</main>
<footer>
    <p>&copy; 2025 ${BLOG_TITLE} | Généré avec <a href="https://pandoc.org/">Pandoc</a></p>
</footer>
</body>
</html>
EOF

# Convertir chaque fichier Markdown
echo -e "\n${BLUE}Conversion des articles:${NC}"
for md_file in "${POSTS_DIR}"/*.md; do
    if [ -f "${md_file}" ]; then
        # Obtenir le nom du fichier sans extension
        filename=$(basename "${md_file}" .md)
        output_file="${OUTPUT_DIR}/${filename}.html"

        # Convertir avec Pandoc
        if pandoc "${md_file}" \
            -o "${output_file}" \
            --template="${TEMPLATE_FILE}" \
            --standalone \
            --highlight-style=tango \
            --metadata title-meta="${BLOG_TITLE}"; then
            echo -e "${GREEN}✓${NC} ${filename}.md → ${filename}.html"
            ((count++))
        else
            echo -e "${RED}✗${NC} Erreur lors de la conversion de ${filename}.md"
        fi
    fi
done

# Nettoyer le fichier template temporaire
rm -f "${TEMPLATE_FILE}"

# Créer une page index avec la liste des articles
INDEX_FILE="${OUTPUT_DIR}/index.html"
cat > "${INDEX_FILE}" << EOF
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>${BLOG_TITLE}</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
    <h1>${BLOG_TITLE}</h1>
    <p>${BLOG_DESCRIPTION}</p>
</header>
<main>
<article>
    <h1>Articles récents</h1>
    <ul style="list-style: none; padding: 0;">
EOF

# Ajouter les liens vers les articles
for html_file in "${OUTPUT_DIR}"/*.html; do
    if [ -f "${html_file}" ] && [ "${html_file}" != "${INDEX_FILE}" ]; then
        filename=$(basename "${html_file}")
        # Extraire le titre de l'article depuis le fichier HTML
        title=$(grep -m 1 '<title>' "${html_file}" | sed 's/<title>\(.*\) - .*/\1/' || echo "${filename%.html}")
        echo "        <li style=\"margin: 15px 0; padding: 15px; background: #f4f4f4; border-radius: 5px;\"><a href=\"${filename}\" style=\"font-size: 1.2em; font-weight: bold;\">${title}</a></li>" >> "${INDEX_FILE}"
    fi
done

cat >> "${INDEX_FILE}" << EOF
    </ul>
</article>
</main>
<footer>
    <p>&copy; 2025 ${BLOG_TITLE} | Généré avec <a href="https://pandoc.org/">Pandoc</a></p>
</footer>
</body>
</html>
EOF

echo -e "${GREEN}✓${NC} Page d'index créée"

# Résumé
echo -e "\n${BLUE}=== Résumé ===${NC}"
echo -e "${GREEN}${count}${NC} article(s) converti(s) avec succès"
echo -e "Fichiers générés dans: ${GREEN}${OUTPUT_DIR}/${NC}"
echo -e "\n${BLUE}Pour visualiser:${NC}"
echo -e "  cd ${OUTPUT_DIR} && python3 -m http.server 8000"
echo -e "  Puis ouvrez: ${GREEN}http://localhost:8000${NC}\n"
