orgmode-to-gemini-blog/converters.sh
2025-02-23 19:12:15 +01:00

139 lines
4.7 KiB
Bash
Executable File

#!/bin/bash
# conversion des pages d'articles depuis le dossier source en orgmode
# liste des dossiers à convertir
# blogs_folders=("dragonfeu_blog" "tykayn_blog" "cipherbliss_blog" "qzine_blog" "cil_gometz")
blogs_folders=()
root_folder="/home/poule/encrypted/stockage-syncable/www/development/html/orgmode-to-gemini-blog"
source_file_extension="org"
style_file="templates/styles/style_general.css"
destination_gemini="gemini-capsules/$website_name/"
remove_all_previous_generated_files=false
# Boucle à travers tous les arguments passés en entrée
for arg in "$@"; do
# Si l'argument est connu, ajouter le nom de blog correspondant à la liste
blogs_folders+=("$arg")
done
# Si le tableau blogs_folders est vide, demander à l'utilisateur
if [ ${#blogs_folders[@]} -eq 0 ]; then
echo "----------- Aucun blog spécifié. Recherche des dossiers disponibles..."
# Lister les dossiers sous sources/
echo "Dossiers disponibles sous sources/ :"
ls -d sources/*/ 2>/dev/null | while read -r dir; do
dir=${dir%/} # Enlever le / final
dir=${dir#sources/} # Enlever le préfixe sources/
echo "- $dir"
done
# Demander à l'utilisateur quels dossiers inclure
echo
echo "Entrez les noms des blogs à traiter (séparés par des espaces) :"
read -r user_input
# Convertir l'entrée utilisateur en tableau
read -ra blogs_folders <<<"$user_input"
if [ ${#blogs_folders[@]} -eq 0 ]; then
echo "Aucun blog sélectionné. Arrêt du script."
exit 1
fi
fi
# Afficher la liste des noms de blogs
echo "----------- La liste des noms de blogs est :"
for blog in "${blogs_folders[@]}"; do
echo "- $blog"
done
first_wd=$PWD
is_directory_empty() {
website_name = $1
if [ -z "$(ls -A /sources/$website_name/lang_fr/converted/)" ]; then
echo "coucou"
fi
}
# Définition de la fonction generate_website
generate_website() {
website_name=$1
echo "----------- convert_sources :Génération du site $1..."
cp $style_file html-websites/$website_name/style.css
if [ ! -d "sources/$website_name" ]; then
echo "Le dossier source n'existe pas pour le site $website_name"
read -p "Voulez-vous créer le dossier source pour le nouveau site $website_name? (o/n) [n] " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Oo]$ ]]; then
echo "Arrêt de la génération pour $website_name"
return 1
fi
if [[ $REPLY =~ ^[Oo]$ ]]; then
mkdir -p sources/$website_name/img
mkdir -p sources/$website_name/lang_fr
mkdir -p sources/$website_name/lang_en
mkdir -p sources/$website_name/templates
mkdir -p sources/$website_name/build
mkdir -p sources/$website_name/converted
cp templates/$website_name/$source_file_extension/* sources/$website_name/templates
fi
fi
if [ "$remove_all_previous_generated_files" = true ]; then
rm -rf html-websites/$website_name/*
fi
mkdir -p "html-websites/$website_name"
mkdir -p "html-websites/$website_name/feed"
mkdir -p "html-websites/$website_name/tags"
mkdir -p "html-websites/$website_name/tag"
mkdir -p "html-websites/$website_name/lang_fr"
mkdir -p "html-websites/$website_name/lang_en"
}
# regrouper les types de fichiers générés
bash sass_styles.sh
# Boucle à travers la liste des sites Web
for website_name in "${blogs_folders[@]}"; do
export website_name=$website_name
generate_website $website_name
# création de l'index listant les articles pour le html et la capsule gemini:
# prendre les fichiers markdown du dossier md/ ,
# et créer un index des fichiers situés dedans, rangés par nom de fichier décroissant,
# générer l'index montrant les posts les plus récents à la suite
# conversion des pages statiques
echo "conversion des pages statiques : linking_articles_prev_next.py"
python3 linking_articles_prev_next.py $website_name
# créer les pages de tags à partir des infos de tag trouvées dans les fichiers org
echo "création des pages de tags : gather_tags_in_json.py"
python3 gather_tags_in_json.py $website_name
echo "copie du style $style_file dans le dossier html"
cp $style_file html-websites/$website_name/style.css
echo "copie du script main_script.js dans le dossier html"
cp templates/js/main_script.js html-websites/$website_name/main_script.js
# traiter les réductions d'images dans l'inbox
echo "traiter les réductions d'images dans l'inbox : pictures_resize.py"
python3 pictures_resize.py
# régénérer le flux Atom du blog
mkdir -p "html-websites/$website_name/feed"
python3 atom_generate.py $website_name
echo "génération faite dans html-websites/$website_name"
done