Skip to content

aboigues/gamma-cli

Repository files navigation

Gamma CLI

Une interface en ligne de commande (CLI) en Python pour interagir avec l'API Gamma.

Description

Gamma CLI vous permet de créer et gérer des présentations Gamma directement depuis votre terminal. Cette CLI utilise l'API Gamma v1.0 pour générer des présentations, gérer des thèmes et des dossiers.

Fonctionnalités

  • ✅ Génération de gamma à partir de texte
  • ✅ Création de gamma à partir de templates
  • ✅ Récupération d'informations sur un gamma
  • ✅ Liste de vos gammas
  • ✅ Liste des thèmes disponibles
  • ✅ Liste des dossiers disponibles
  • ✅ Gestion sécurisée de la clé API
  • ✅ Output en JSON pour intégration avec d'autres outils
  • ✅ Interface colorée et formatée avec Rich

Installation

Prérequis

Installation depuis les sources

# Cloner le repository
git clone <repository-url>
cd gamma-cli

# Installer les dépendances
pip install -r requirements.txt

# Installer la CLI
pip install -e .

Installation via pip (quand publié)

pip install gamma-cli

Configuration

Avant d'utiliser la CLI, vous devez configurer votre clé API :

gamma config set-key YOUR_API_KEY

Votre clé API sera stockée de manière sécurisée dans ~/.config/gamma-cli/config.json avec des permissions restrictives.

Pour vérifier votre configuration :

gamma config show

Pour vérifier que tout fonctionne correctement (installation, configuration, connexion API) :

gamma verify

Cette commande vérifie :

  • La version de Python
  • L'installation des dépendances
  • La configuration de la clé API
  • La connexion à l'API Gamma

Utilisation

Commandes disponibles

Générer un gamma

Créez une nouvelle présentation Gamma à partir de texte :

gamma generate "Create a presentation about AI and machine learning"

Avec options :

gamma generate "Marketing strategy for Q4 2024" \
  --title "Q4 Marketing Plan" \
  --theme theme_abc123 \
  --folder folder_xyz789

Récupérer un gamma

Obtenez les informations d'un gamma existant :

gamma get GAMMA_ID

Créer depuis un template

Utilisez un template existant pour créer un nouveau gamma :

gamma from-template TEMPLATE_ID "Update with 2024 financial data"

Avec dossier :

gamma from-template TEMPLATE_ID "Q1 2024 results" --folder folder_xyz789

Lister les thèmes

Affichez tous les thèmes disponibles :

gamma themes

Format JSON :

gamma themes --json

Lister les dossiers

Affichez tous vos dossiers :

gamma folders

Format JSON :

gamma folders --json

Lister vos gammas

Affichez tous vos gammas :

gamma ls

Format JSON :

gamma ls --json

Vérifier l'installation

Vérifiez que Gamma CLI est correctement installé et configuré :

gamma verify

Cette commande vérifie :

  • Version de Python
  • Dépendances installées
  • Configuration de la clé API
  • Connexion à l'API Gamma

Format JSON :

gamma verify --json

Options globales

  • --json : Affiche le résultat en format JSON pour toutes les commandes
  • --help : Affiche l'aide pour n'importe quelle commande

Examples complets

# Vérifier l'installation et la configuration
gamma verify

# Configuration initiale
gamma config set-key sk_gamma_abc123xyz789

# Vérifier à nouveau que la connexion fonctionne
gamma verify

# Générer une présentation simple
gamma generate "Create a pitch deck for a SaaS startup"

# Lister les thèmes disponibles et choisir un thème
gamma themes
gamma generate "Product roadmap 2024" --theme theme_modern_001

# Lister vos gammas existants
gamma ls

# Créer plusieurs gammas avec JSON output pour traitement
gamma generate "Sales report Q1" --json > output.json

# Vérifier le statut d'un gamma
gamma get gamma_abc123

# Utiliser un template pour créer une présentation
gamma from-template template_xyz "Update with new company metrics"

Structure du projet

gamma-cli/
├── gamma_cli/
│   ├── __init__.py       # Package initialization
│   ├── cli.py            # CLI interface avec Click
│   ├── client.py         # Client API Gamma
│   ├── config.py         # Gestion de la configuration
│   ├── models.py         # Modèles de données Pydantic
│   └── utils.py          # Fonctions utilitaires
├── requirements.txt      # Dépendances Python
├── setup.py             # Configuration du package
├── README.md            # Ce fichier
├── .env.example         # Exemple de fichier d'environnement
└── .gitignore          # Fichiers à ignorer par Git

Développement

Installation pour le développement

# Cloner le repository
git clone <repository-url>
cd gamma-cli

# Créer un environnement virtuel
python -m venv venv
source venv/bin/activate  # Sur Windows: venv\Scripts\activate

# Installer en mode développement avec les dépendances de test
pip install -e .
pip install -r requirements-dev.txt

Variables d'environnement

Vous pouvez aussi configurer la clé API via variable d'environnement :

export GAMMA_API_KEY="your-api-key-here"

Ou créer un fichier .env :

GAMMA_API_KEY=your-api-key-here

Tests

Le projet utilise pytest avec trois types de tests :

Tests unitaires (sans API key nécessaire)

# Exécuter tous les tests unitaires
pytest -v -m "not integration"

# Avec coverage
pytest -v -m "not integration" --cov=gamma_cli --cov-report=html

Tests de sécurité

# Vérifier que les clés API ne sont jamais exposées
pytest -v -m security

Tests d'intégration (nécessite GAMMA_API_KEY)

# Définir la clé API
export GAMMA_API_KEY="your-api-key"

# Exécuter les tests d'intégration
pytest -v -m integration

Exécuter tous les tests

pytest -v

Bonnes pratiques de sécurité

🔒 Important : Ne jamais commiter de clés API ou de secrets !

  • Les clés API doivent être dans des variables d'environnement
  • Les fichiers .env et config.json sont dans .gitignore
  • Utilisez .env.example pour documenter les variables nécessaires
  • Les tests utilisent des fixtures pour isoler les credentials

📖 Consultez SECURITY.md pour les bonnes pratiques détaillées.

GitHub Actions

Le projet utilise GitHub Actions pour l'intégration continue :

  • ✅ Tests unitaires sur Python 3.8, 3.9, 3.10, 3.11
  • ✅ Tests de sécurité pour détecter les fuites de credentials
  • ✅ Tests d'intégration (uniquement si GAMMA_API_KEY est configuré dans les secrets)
  • ✅ Vérifications de qualité du code (flake8, black, isort)

Pour configurer les tests d'intégration sur GitHub :

  1. Allez dans SettingsSecrets and variablesActions
  2. Ajoutez un secret nommé GAMMA_API_KEY
  3. Les tests d'intégration s'exécuteront automatiquement

Architecture de l'API

Cette CLI utilise l'API Gamma v1.0 avec les endpoints suivants :

  • POST /generations : Générer un nouveau gamma
  • GET /generations/{id} : Récupérer un gamma par ID
  • POST /create-from-template : Créer depuis un template (anciennement /template)
  • GET /themes : Lister les thèmes disponibles
  • GET /folders : Lister les dossiers disponibles

L'authentification se fait via l'header X-API-KEY.

Note importante : L'API Gamma ne fournit actuellement pas d'endpoint pour lister vos gammas (GET /generations n'existe pas). La commande gamma ls essaie plusieurs endpoints possibles mais retournera toujours une liste vide car cette fonctionnalité n'est pas disponible dans l'API. Pour voir vos gammas, utilisez le dashboard web sur gamma.app.

Gestion des erreurs

La CLI gère automatiquement les erreurs courantes :

  • Clé API manquante ou invalide
  • Timeouts de requête
  • Erreurs HTTP (400, 401, 403, 404, 500, etc.)
  • Problèmes de connexion réseau

Les messages d'erreur sont formatés de manière claire avec des icônes colorées.

Limitations connues

  • L'API Gamma v1.0 est limitée par des quotas (consultez votre plan sur gamma.app)
  • Certaines fonctionnalités peuvent être en beta et sujettes à changement
  • Le support OAuth n'est pas encore disponible (uniquement clés API)

Contribution

Les contributions sont les bienvenues ! N'hésitez pas à :

  1. Fork le projet
  2. Créer une branche pour votre feature (git checkout -b feature/AmazingFeature)
  3. Commit vos changements (git commit -m 'Add some AmazingFeature')
  4. Push vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrir une Pull Request

Ressources

Licence

MIT License - voir le fichier LICENSE pour plus de détails.

Support

Pour obtenir de l'aide :

  1. Consultez la documentation : gamma --help
  2. Vérifiez les issues GitHub
  3. Contactez le support Gamma pour les questions relatives à l'API

Changelog

Version 1.0.0 (2025-01-18)

  • ✨ Version initiale
  • ✅ Génération de gamma à partir de texte
  • ✅ Gestion des templates
  • ✅ Liste des thèmes et dossiers
  • ✅ Configuration sécurisée de la clé API
  • ✅ Output JSON
  • ✅ Interface Rich avec tables et couleurs

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors