Files
Lanceur-Geco/CLAUDE.md
2026-03-24 12:19:08 +01:00

3.6 KiB

Git Update Checker

Description

Outil Windows (.exe) avec interface graphique qui vérifie les mises à jour de plusieurs dépôts Git distants et propose de les télécharger. Conçu pour être placé sur une clé USB dont la lettre de lecteur peut changer. Le programme peut s'auto-mettre à jour car il est lui-même dans un dépôt git.

Structure du projet

Lanceur-geco/
├── git_updater.py    # Script principal Python (GUI tkinter)
├── config.ini        # Configuration multi-repo
├── build.bat         # Script de compilation en .exe via PyInstaller
├── log/              # Dossier de logs (créé automatiquement, 1 fichier par jour)
└── CLAUDE.md

Règles importantes

  • Tous les chemins doivent être relatifs à l'emplacement de l'exe. Jamais de chemin absolu (pas de C:\, G:\, etc.). Utiliser .. et des chemins relatifs pour référencer les dossiers.
  • Accès lecture seule : le programme ne fait que git fetch, git pull et git checkout. Jamais de git push, git commit, git add, ou toute opération d'écriture vers le remote.
  • Multi-repo : le programme peut surveiller plusieurs dépôts Git configurés dans config.ini.

Fonctionnement

Auto-update

  1. Au démarrage, le programme vérifie si son propre dossier est un dépôt git
  2. Si oui, il fait un git fetch et compare avec le remote
  3. Si une MAJ du programme est dispo, il propose de la télécharger (git pull)
  4. Après mise à jour, il demande un redémarrage

Vérification des dépôts

  1. Lit la liste des dépôts depuis config.ini (chemins relatifs à l'exe)
  2. Pour chaque dépôt :
    • git fetch pour récupérer l'état distant
    • Compare commits locaux vs distants
    • Détecte les fichiers supprimés/modifiés localement
  3. Affiche le résultat dans une interface graphique (tkinter)
  4. Propose pour chaque dépôt :
    • git pull si nouveaux commits distants
    • git checkout -- . si fichiers locaux manquants/modifiés

Configuration (config.ini)

Supporte plusieurs sections [repo:NomDuRepo] :

[repo:Batch]
url = http://192.168.1.235:3125/zogzog/Batch
path = ../Batch

[repo:Powershell]
url = http://192.168.1.235:3125/zogzog/Powershell
path = ../Powershell
  • url : URL du dépôt Git distant
  • path : Chemin relatif vers le dossier local du dépôt (relatif à l'exe)

Logging

  • Les logs sont écrits dans log/ à côté de l'exe (1 fichier par jour, format YYYY-MM-DD.log)
  • Les vieux logs sont nettoyés automatiquement (30 jours de rétention)
  • Chaque action git, erreur, et résultat est loggé avec timestamp
  • Bouton "Ouvrir les logs" dans la GUI pour accéder au dossier

Build

build.bat

Requiert Python + pip. Installe PyInstaller automatiquement si absent. Produit dist/GitUpdateChecker.exe. Copier config.ini à côté de l'exe.

Contraintes techniques

  • Chemins relatifs : Tout est relatif à l'exe, jamais de chemin absolu
  • Encodage : Force UTF-8 pour les caractères Unicode
  • Clé USB : Fonctionne sur n'importe quelle lettre de lecteur
  • Git requis : Git doit être installé et dans le PATH de la machine
  • Serveur Gitea : Le remote origin pointe vers une instance Gitea locale (192.168.1.235:3125)
  • Lecture seule : Aucune opération d'écriture vers le remote (pas de push/commit)
  • Interface : GUI tkinter (inclus dans Python, pas de dépendance externe)
  • Logs : Dossier log/ à côté de l'exe, rotation automatique 30 jours

Conventions

  • Langage : Python 3, pas de dépendances externes (seulement stdlib + tkinter)
  • Interface : GUI tkinter en français
  • Langue : Français pour l'interface utilisateur