- Created example Markdown document with basic formatting and code block. - Added configuration file for site settings including base URL and author. - Introduced index page with project overview and links to documentation. - Implemented detailed documentation for create_repo.sh, including usage, prerequisites, and response codes. - Added custom 404 error page for better user experience. - Developed HTML structure for create_repo.sh documentation with styling and layout. - Created main index page with project description and links to relevant resources. - Included robots.txt and sitemap.xml for search engine optimization. - Established CSS styles for consistent design across the site. - Set up base HTML template for consistent layout and navigation. - Created templates for index and page rendering to streamline content management.
72 lines
2.1 KiB
Markdown
72 lines
2.1 KiB
Markdown
+++
|
|
title = "create_repo.sh"
|
|
description = "Créer un dépôt sur la forge via l'API REST, en passant le nom et la description en arguments."
|
|
weight = 1
|
|
+++
|
|
|
|
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
|
|
|
|
```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.
|