You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
2.1 KiB
Markdown

# create_repo.sh
Script Bash qui **crée un dépôt sur la forge** (`forge.gwenaelremond.fr`) en appelant son API REST.
## À quoi ça sert
Plutôt que de retaper une longue commande `curl` à chaque fois, le script prend le **nom** et la **description** du dépôt en arguments, et lit le **token d'authentification** dans une variable d'environnement (pour ne jamais l'écrire en dur dans le code).
## Prérequis
- `curl` (installé par défaut sur macOS et Linux)
- Un **token d'accès** à la forge (Settings → Applications → Generate New Token)
## Utilisation
```bash
# 1. Définir le token (une seule fois par session de terminal)
export FORGE_TOKEN="ton_token"
# 2. Lancer le script
./create_repo.sh <nom_du_repo> ["description"]
```
### Exemple
```bash
export FORGE_TOKEN="b103fb7f..."
./create_repo.sh exercice "Adam"
```
Cela crée le dépôt **exercice** avec la description **Adam**.
## Détail du fonctionnement
| Partie du script | Rôle |
|------------------|------|
| `set -euo pipefail` | Arrête le script à la moindre erreur (sécurité) |
| Vérification de `FORGE_TOKEN` | Refuse de tourner si le token n'est pas défini |
| `REPO_NAME` / `REPO_DESC` | Récupère les arguments passés en ligne de commande |
| `curl -X POST .../api/v1/user/repos` | Envoie la requête de création à l'API |
### La requête envoyée
Le script construit cette requête HTTP :
```bash
curl -X POST "https://forge.gwenaelremond.fr/api/v1/user/repos" \
-H "Authorization: token $FORGE_TOKEN" \
-H "Content-Type: application/json" \
-H "accept: application/json" \
-d '{ "name": "exercice", "description": "Adam" }'
```
## Codes de réponse possibles
| Code HTTP | Signification |
|-----------|---------------|
| `201` | Dépôt créé avec succès |
| `409` | Un dépôt portant ce nom existe déjà |
| `401` | Token invalide ou manquant |
## Bonne pratique de sécurité
⚠️ **Ne jamais écrire le token en clair** dans le script ni le commiter dans Git.
Si un token a été exposé, le **révoquer** et en générer un nouveau dans les paramètres de la forge.