#!/bin/bash # gitea-agent-setup.sh — Crée ou récupère un compte Gitea pour un agent IA # Usage: ./scripts/gitea-agent-setup.sh # Ex: ./scripts/gitea-agent-setup.sh my-custom-agent set -e AGENT_NAME="${1:?Usage: $0 }" USERNAME="agent-${AGENT_NAME}" BASE_URL="${GITEA_BASE_URL:-http://192.168.0.82:3000}" TOKENS_FILE="$HOME/.agent-gitea-tokens" # Load admin token if [[ -f "$TOKENS_FILE" ]]; then source "$TOKENS_FILE" fi ADMIN_TOKEN="${GITEA_ADMIN_TOKEN:-}" if [[ -z "$ADMIN_TOKEN" ]]; then echo "ERROR: GITEA_ADMIN_TOKEN non défini. Ajouter dans $TOKENS_FILE" exit 1 fi # Check if user already exists STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ -H "Authorization: token $ADMIN_TOKEN" \ "$BASE_URL/api/v1/users/$USERNAME") if [[ "$STATUS" == "200" ]]; then echo "Compte $USERNAME existe déjà." else echo "Création du compte $USERNAME..." curl -sf -X POST "$BASE_URL/api/v1/admin/users" \ -H "Authorization: token $ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d "{ \"username\": \"$USERNAME\", \"email\": \"$USERNAME@labo.local\", \"password\": \"$(openssl rand -base64 24)\", \"full_name\": \"Agent $AGENT_NAME\", \"login_name\": \"$USERNAME\", \"source_id\": 0, \"send_notify\": false, \"must_change_password\": false }" > /dev/null echo "Compte $USERNAME créé." fi # Generate token via CLI (requires SSH to .82) echo "Génération du token..." TOKEN=$(ssh floppyrj45@192.168.0.82 \ "docker exec -u git gitea gitea admin user generate-access-token \ --username $USERNAME --token-name default --raw 2>/dev/null") if [[ -z "$TOKEN" ]]; then echo "ERROR: Impossible de générer le token." exit 1 fi VAR_NAME="GITEA_TOKEN_$(echo $AGENT_NAME | tr '[:lower:]-' '[:upper:]_')" # Add to tokens file if grep -q "$VAR_NAME" "$TOKENS_FILE" 2>/dev/null; then sed -i "s|^${VAR_NAME}=.*|${VAR_NAME}=${TOKEN}|" "$TOKENS_FILE" else echo "${VAR_NAME}=${TOKEN}" >> "$TOKENS_FILE" fi echo "Token stocké dans $TOKENS_FILE" echo "" echo "Config Git pour $USERNAME :" echo " git config user.name \"$USERNAME\"" echo " git config user.email \"$USERNAME@labo.local\"" echo "" echo "Clone avec auth :" echo " git clone http://$USERNAME:$TOKEN@192.168.0.82:3000/floppyrj45/REPO_NAME"