Module demo_api.scripts.deploy_docs

Script de déploiement de documentation sur GitHub Pages.

Ce script prépare la documentation pour GitHub Pages et configure le dépôt pour servir les fichiers statiques.

Functions

def main()
Expand source code
def main():
    """Fonction principale."""
    project_root = Path(__file__).parent.parent

    print("🚀 Déploiement documentation Demo API")
    print("=" * 50)

    # Vérifier que nous sommes dans le bon répertoire
    if not (project_root / "main.py").exists():
        print("❌ Erreur: Ce script doit être exécuté depuis la racine du projet")
        sys.exit(1)

    success_count = 0
    total_commands = 0

    # 1. Générer la documentation complète
    total_commands += 1
    if run_command(
        f"cd {project_root} && python scripts/generate_docs.py",
        "Génération de la documentation complète",
    ):
        success_count += 1

    # 2. Préparer les fichiers pour GitHub Pages
    total_commands += 1
    if run_command(
        f"cd {project_root} && mkdir -p docs-deploy && cp -r docs/sphinx/build/* docs-deploy/",
        "Préparation des fichiers pour déploiement",
    ):
        success_count += 1

    # 3. Ajouter .nojekyll pour GitHub Pages
    total_commands += 1
    if run_command(
        f"cd {project_root} && touch docs-deploy/.nojekyll",
        "Ajout du fichier .nojekyll pour GitHub Pages",
    ):
        success_count += 1

    # Résumé
    print("\n" + "=" * 50)
    print(f"📊 Résumé: {success_count}/{total_commands} commandes réussies")

    if success_count == total_commands:
        print("🎉 Documentation prête pour GitHub Pages!")
        print("\n📖 Prochaines étapes:")
        print(f"   1. Commitez le dossier docs-deploy/")
        print(f"   2. Poussez vers GitHub")
        print(f"   3. Activez GitHub Pages dans les settings du repo")
        print(f"   4. Ouvrez : https://votrenom.github.io/votre-repo/")

        print(f"\n💡 Alternative : Utilisez l'action GitHub CI/CD")
        print(f"   - Un commit sur main déploiera automatiquement")
        print(f"   - Cf. .github/workflows/docs.yml")
    else:
        print("⚠️  Certaines commandes ont échoué. Vérifiez les erreurs ci-dessus.")

Fonction principale.

def run_command(command: str, description: str) ‑> bool
Expand source code
def run_command(command: str, description: str) -> bool:
    """
    Exécute une commande et affiche le résultat.

    Args:
        command: Commande à exécuter
        description: Description de la commande

    Returns:
        True si la commande a réussi, False sinon
    """
    print(f"\n🔄 {description}...")
    print(f"📝 Commande: {command}")

    try:
        result = subprocess.run(
            command, shell=True, check=True, capture_output=True, text=True
        )
        print(f"✅ {description} - Succès")
        if result.stdout:
            print(f"📤 Sortie: {result.stdout}")
        return True
    except subprocess.CalledProcessError as e:
        print(f"❌ {description} - Erreur")
        print(f"📤 Sortie: {e.stdout}")
        print(f"📤 Erreur: {e.stderr}")
        return False

Exécute une commande et affiche le résultat.

Args

command
Commande à exécuter
description
Description de la commande

Returns

True si la commande a réussi, False sinon