Exemples Standalone
Scripts Catnip exécutables directement via CLI.
Quand utiliser le mode standalone ?
Le mode standalone est approprié pour :
✓ Use cases valides
-
Scripts de traitement de données one-off
-
Transformation CSV/JSON simple
- Calculs rapides sur datasets
-
Génération de rapports basiques
-
Validation de configuration
-
Vérifier des fichiers de config
- Scripts de pre-commit hooks
-
Validation de données avant import
-
Calculatrice/formules
-
Calculs mathématiques complexes
- Formules métier réutilisables
-
Scripts de calcul batch
-
Prototypage rapide
-
Tester des transformations
- Explorer des données
- POC avant intégration embedded
✗ Quand NE PAS utiliser standalone
- Applications complètes → Utilisez Python
- Scripts > 200 lignes → Utilisez Python avec Catnip embedded
- Intégration avec libs complexes → Python + Catnip embedded
- Workflows multi-utilisateurs → Embedded dans application web
- Règles métier modifiables → Embedded avec scripts en DB
Règle empirique : si ton script standalone devient complexe, passe sur Python et garde Catnip pour les parties configurables.
Exemples disponibles
1. 01_calculate.cat
Use case : Calculatrice avec fonctions mathématiques
catnip 01_calculate.cat
Montre :
- Fonctions récursives (factorial, fibonacci, power)
- Opérations sur listes (sum, average)
- Formules composées
Utile pour : Calculs batch, scripts de formules métier.
2. 02_filter_data.cat
Use case : Filtrage et transformation fonctionnelle
catnip 02_filter_data.cat
Montre :
- Fonctions de filtrage génériques
- Fonctions de mapping
- Composition de transformations
- Style fonctionnel avec lambdas
Note : Pour pipelines complexes, voir docs/examples/embedding/03_etl_pipeline.py.
3. 03_transform_csv.cat
Use case : Transformation de données CSV/JSON simple
catnip 03_transform_csv.cat
# Ou avec shebang:
chmod +x 03_transform_csv.cat
./03_transform_csv.cat
Montre :
- Filtrage de données (âge > 25)
- Transformation de structure
- Ajout de champs calculés
Note : Pour manipulation CSV réelle, utilisez Python + pandas embedded.
4. 04_config_validator.cat
Use case : Validation de configuration
catnip 04_config_validator.cat
Montre :
- Règles de validation (ranges, types, valeurs autorisées)
- Messages d'erreur clairs
- Code de sortie (0 = succès, 1 = échec)
Utile pour : Pre-commit hooks, CI/CD, validation avant déploiement.
5. 05_data_report.cat
Use case : Génération de rapport de données
catnip 05_data_report.cat
Montre :
- Calcul de métriques (total, moyenne)
- Identification du best seller
- Formatage de rapport texte
Alternative embedded : Voir docs/examples/embedding/05_report_builder.py pour rapports avec templates.
Installation système (shebang)
Pour rendre vos scripts Catnip exécutables comme commandes système :
1. Ajouter shebang
#!/usr/bin/env catnip
# Votre code ici
2. Rendre exécutable
chmod +x script.cat
3. Installer dans PATH (optionnel)
# Copier dans ~/bin (doit être dans PATH)
cp script.cat ~/bin/my-command
chmod +x ~/bin/my-command
# Ou créer un symlink
ln -s /path/to/script.cat ~/bin/my-command
4. Utiliser
./script.cat # Local
my-command # Si dans PATH
Bonnes pratiques
Structure d'un bon script standalone
#!/usr/bin/env catnip
# Description courte du script
# Usage: catnip script.cat [args]
# 1. Définir fonctions utilitaires
helper = (x) => { x * 2 }
# 2. Charger/définir données
data = list(1, 2, 3, 4, 5)
# 3. Traiter données
result = helper(42)
# 4. Afficher résultats
print('Résultat : ' + str(result))
# 5. Retourner valeur de sortie
result
Gestion des erreurs
# Validation des entrées
if len(data) == 0 {
print('Erreur : Données vides')
1 # Code erreur
} else {
# Traitement normal
process(data)
0 # Code succès
}
Comments et documentation
# Utilisez des commentaires pour expliquer la logique
# Pas besoin de docstrings (pas de fonction principale)
# Évitez les commentaires évidents
x = 10 # ✗ "Set x to 10"
x = 10 # ✓ "Seuil de validation (config)"
Comparaison Standalone vs Embedded
| Critère | Standalone | Embedded |
|---|---|---|
| Taille | < 200 lignes | Illimité |
| Utilisateurs | Développeurs | Admins/Users |
| Modification | Éditer fichier | Scripts en DB |
| Sécurité | Accès système | Sandbox isolé |
| Intégration | CLI/cron | Application Python |
| Best pour | Scripts one-off | Règles métier |
Alternatives à considérer
Quand utiliser Python au lieu de Catnip standalone
Si votre script :
- Fait plus de 200 lignes
- Nécessite imports de libs complexes (requests, sqlalchemy, etc.)
- Manipule des fichiers/réseau de manière intensive
- Est une application complète avec UI
→ Utilisez Python avec Catnip embedded pour les parties configurables.
Exemple de migration standalone → embedded
Avant (standalone) :
# script.cat (150 lignes)
# Règles métier hardcodées
if user['age'] > 25 { ... }
Après (embedded) :
# app.py
from catnip import Catnip
# Charger règles depuis DB
rules = db.get_rules('user_validation')
dsl = Catnip()
dsl.parse(rules)
result = dsl.execute({'user': user_data})
Ressources
- CLI Documentation - Options CLI complètes
- REPL Guide - Mode interactif
- Embedding Guide - Intégrer Catnip dans apps Python
- Language Reference - Syntaxe complète