"""
A placer dans le dossier "src".
Scanne les programmes (dans "scripts/") et les fichiers ".tex"
pour détecter les programmes qui n'apparaissent pas dans le livre
"""
import os
import re

def check_references(scripts_dir, tex_files):
    # Liste pour stocker les fichiers non référencés
    non_referenced_files = []

    # Parcourir tous les fichiers dans le sous-dossier "scripts"
    for script_file in os.listdir(scripts_dir):
        script_path = os.path.join(scripts_dir, script_file)

        # Normaliser le nom du fichier script en minuscules
        script_file_lower = script_file.lower()

        # Vérifier si le fichier est référencé dans au moins un fichier ".tex"
        referenced = False
        for tex_file in tex_files:
            with open(tex_file, 'r', encoding='utf-8') as f:
                for line in f:
                    # Ignorer les lignes commentées
                    if line.strip().startswith('%'):
                        continue
                    # Normaliser le contenu de la ligne en minuscules
                    line_lower = line.lower()
                    if re.search(re.escape(script_file_lower), line_lower):
                        referenced = True
                        break
                if referenced:
                    break

        # Si le fichier n'est pas référencé, l'ajouter à la liste
        if not referenced:
            non_referenced_files.append(script_file)

    # Afficher les messages pour les fichiers non référencés
    for file in non_referenced_files:
        if file[-3:] != 'zip':
            print(f"Le fichier {file} du sous-dossier scripts ne figure dans aucun fichier tex")

# Chemin vers le sous-dossier "scripts"
scripts_dir = 'scripts'

# Liste des fichiers ".tex" dans le dossier principal
tex_files = [f for f in os.listdir('.') if f.endswith('.tex')]

# Appeler la fonction pour vérifier les références
check_references(scripts_dir, tex_files)
