Metadata-Version: 2.4
Name: glsync
Version: 0.0.4
Summary: Add your description here
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: tabulate>=0.9.0
Requires-Dist: typer>=0.24.1

# Glsync

Gestionnaire d'arborescence de projets GitLab permettant de cloner des projets et d'analyser l'état des branches et des modifications.

## Installation

Installez les dépendances :
```bash
pip install -r requirements.txt
```

## Configuration

Le fichier de configuration se trouve dans **`$HOME/.config/glsync/config.json`**.

Créez ce fichier (et le répertoire `~/.config/glsync/` si besoin) avec la structure suivante :

```json
{
    "tokens": {
        "https://gitlab.com": "votre_token_gitlab_ici",
        "https://privateinstance.com": "autre_token_ici"
    },
    "default": {
        "gitlab_url": "https://gitlab.com/user/namespace",
        "base_dir": "$HOME/Repositories"
    }
}
```

- **tokens** : chaque clé est l’URL d’une instance GitLab, la valeur est le token d’accès. Permet de gérer plusieurs instances.
- **default** (optionnel) : `base_dir` est le répertoire de base pour les dépôts (`$HOME` est développé) ; `gitlab_url` peut servir de référence.

Pour obtenir un token GitLab :
- Allez dans GitLab > Settings > Access Tokens
- Créez un token avec les permissions `read_api` (pour lister les projets) et `read_repository`

## Utilisation

### Cloner des projets

Le programme récupère automatiquement la liste des projets depuis l'API GitLab d'un groupe/namespace :

```bash
glsync clone https://gitlab.com/organisation/example
```

Le programme :
1. Appelle l'API GitLab pour récupérer tous les projets du groupe/namespace
2. Clone chaque projet via SSH dans le répertoire `./repos` par défaut
3. **Préserve l'arborescence GitLab** : la structure des groupes est reproduite localement (ex: `repos/organisation/example/projet`)
4. Inclut automatiquement les sous-groupes (`include_subgroups=true`)

**Important** : 
- Le token GitLab dans `config.json` doit avoir les permissions `read_api` pour lister les projets
- Les projets sont clonés via SSH (format `git@gitlab.com:user/repo.git`)
- Assurez-vous d'avoir configuré vos clés SSH avec GitLab

### Analyser les dépôts

Pour analyser tous les dépôts dans le répertoire de base :
```bash
python gitlab_manager.py analyze
```

Pour analyser un dépôt spécifique :
```bash
python gitlab_manager.py analyze --repo ./repos/mon-projet
```

## Fonctionnalités

- ✅ Clonage de projets GitLab via SSH (pas d'OAuth ni d'HTTP)
- ✅ Liste des branches locales et distantes
- ✅ Détection des branches manquantes (uniquement distantes)
- ✅ Détection des branches uniquement locales
- ✅ Analyse de la synchronisation des branches (en avance, en retard, divergées)
- ✅ Détection des fichiers non commités

**Note** : Pour utiliser SSH, assurez-vous d'avoir configuré vos clés SSH avec GitLab.

## Options

- `--creds FILE` : Fichier de configuration (défaut: `~/.config/glsync/config.json`)
- `--base-dir DIR` : Répertoire de base pour les dépôts (défaut: depuis config ou `./repos`)
