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.

2.1 KiB

+++ 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

# 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

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

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.