#!/usr/bin/env bash # Poste un commentaire sur une issue Gitea puis la ferme. # Usage: GITEA_TOKEN=xxx ./scripts/gitea-close-issue-with-comment.sh "Commentaire" # Ou: mettre le token dans .gitea-token à la racine du projet. # Exemple: ./scripts/gitea-close-issue-with-comment.sh 15 "Livré : panneau Paramètres opérationnel." set -e ISSUE="${1:?Usage: $0 \"Commentaire\"}" COMMENT="${2:?Usage: $0 \"Commentaire\"}" BASE_URL="${GITEA_URL:-https://git.ptits-pas.fr/api/v1}" REPO="jmartin/petitspas" if [ -z "$GITEA_TOKEN" ]; then if [ -f .gitea-token ]; then GITEA_TOKEN=$(cat .gitea-token) fi fi if [ -z "$GITEA_TOKEN" ] && [ -f ~/.bashrc ]; then eval "$(grep '^export GITEA_TOKEN=' ~/.bashrc 2>/dev/null)" || true fi if [ -z "$GITEA_TOKEN" ] && [ -f docs/BRIEFING-FRONTEND.md ]; then token_from_briefing=$(sed -n 's/.*Token: *\(giteabu_[a-f0-9]*\).*/\1/p' docs/BRIEFING-FRONTEND.md 2>/dev/null | head -1) if [ -n "$token_from_briefing" ]; then GITEA_TOKEN="$token_from_briefing" fi fi if [ -z "$GITEA_TOKEN" ]; then echo "Définir GITEA_TOKEN ou créer .gitea-token avec votre token Gitea (voir docs/PROCEDURE-API-GITEA.md)." exit 1 fi # 1) Poster le commentaire echo "Ajout du commentaire sur l'issue #$ISSUE..." # Échapper pour JSON (guillemets et backslash) COMMENT_ESC=$(printf '%s' "$COMMENT" | sed 's/\\/\\\\/g; s/"/\\"/g; s/\r//g') PAYLOAD="{\"body\":\"$COMMENT_ESC\"}" RESP=$(curl -s -w "\n%{http_code}" -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d "$PAYLOAD" \ "$BASE_URL/repos/$REPO/issues/$ISSUE/comments") HTTP_CODE=$(echo "$RESP" | tail -1) BODY=$(echo "$RESP" | sed '$d') if [ "$HTTP_CODE" != "201" ]; then echo "Erreur HTTP $HTTP_CODE lors du commentaire: $BODY" exit 1 fi echo "Commentaire ajouté." # 2) Fermer l'issue echo "Fermeture de l'issue #$ISSUE..." RESP2=$(curl -s -w "\n%{http_code}" -X PATCH \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"state":"closed"}' \ "$BASE_URL/repos/$REPO/issues/$ISSUE") HTTP_CODE2=$(echo "$RESP2" | tail -1) BODY2=$(echo "$RESP2" | sed '$d') if [ "$HTTP_CODE2" = "200" ] || [ "$HTTP_CODE2" = "201" ]; then echo "Issue #$ISSUE fermée." else echo "Erreur HTTP $HTTP_CODE2: $BODY2" exit 1 fi