"""
Version: 1.2.0 (2023-12-20)
Auteur: Kahina et franck - Groupe 2
Commit: bigmoletos@yopmail.com
Script d'initialisation de la structure des dossiers de l'application.
Ce module gère la création et la vérification des dossiers nécessaires
au bon fonctionnement de l'application, notamment:
- Le dossier database pour les fichiers SQLite
- Le dossier instance pour les données spécifiques à l'instance
- Les fichiers .gitkeep pour la gestion Git
Architecture:
------------
1. Structure des dossiers:
- database/ : Stockage des bases de données
- instance/ : Configuration spécifique
- .gitkeep : Maintien des dossiers vides
2. Gestion des permissions:
- Création sécurisée des dossiers
- Vérification des droits d'accès
- Gestion des erreurs
3. Logging:
- Traçage des opérations
- Rapport des erreurs
- Validation de la structure
Utilisation:
-----------
python init_folders.py
Dépendances:
-----------
- pathlib : Manipulation des chemins
- logging : Journalisation
"""
import os
from pathlib import Path
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
[docs]
def init_folders():
"""
Initialise la structure des dossiers de l'application.
Cette fonction:
1. Crée les dossiers nécessaires s'ils n'existent pas
2. Ajoute les fichiers .gitkeep pour Git
3. Vérifie les permissions et l'accès
Structure créée:
--------------
project_root/
├── database/
│ └── .gitkeep
└── instance/
└── .gitkeep
Notes:
-----
- Utilise pathlib pour la portabilité
- Crée les dossiers parents si nécessaire
- Ne supprime pas les dossiers existants
- Ajoute .gitkeep pour maintenir les dossiers vides
Raises:
------
Exception
En cas d'erreur de création ou de permissions
Les erreurs sont loggées avec contexte
"""
# Chemin de base
base_path = Path(__file__).parent.parent
# Dossiers à créer
folders = [base_path / 'database', base_path / 'instance']
for folder in folders:
try:
folder.mkdir(exist_ok=True)
gitkeep = folder / '.gitkeep'
gitkeep.touch(exist_ok=True)
logger.info(f"Dossier créé/vérifié : {folder}")
except Exception as e:
logger.error(
f"Erreur lors de la création du dossier {folder}: {e}")
if __name__ == "__main__":
init_folders()