#!/usr/bin/env bash # gitea skill — leer comentarios de un PR. # # Uso: # pr-comments.sh / # pr-comments.sh # # Los PRs son issues con un flag "pull_request" en Gitea — los comentarios viven # en /issues/{n}/comments, no en /pulls/{n}/comments. Para review-comments # (sobre líneas de código) ver query.sh /repos/.../pulls/{n}/reviews. set -euo pipefail SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" QUERY="$SKILL_DIR/scripts/query.sh" if [[ $# -lt 2 ]]; then cat >&2 </ pr-comments.sh EOF exit 2 fi repo_arg="$1" number="$2" if [[ "$repo_arg" == */* ]]; then owner="${repo_arg%%/*}" repo="${repo_arg##*/}" else set -a; source "$SKILL_DIR/.env"; set +a owner="${GITEA_DEFAULT_OWNER:?owner no especificado y GITEA_DEFAULT_OWNER vacío}" repo="$repo_arg" fi resp="$("$QUERY" "/repos/${owner}/${repo}/issues/${number}/comments")" if [[ "${resp:0:1}" != "[" ]]; then echo "ERROR: respuesta inesperada:" >&2 echo "$resp" >&2 exit 1 fi echo "$resp" | PYTHONIOENCODING=utf-8 python -c " import json, sys comments = json.load(sys.stdin) print(f'{len(comments)} comentario(s) en PR #$number ($owner/$repo):') print() for c in comments: user = (c.get('user') or {}).get('login','?') created = (c.get('created_at') or '')[:19].replace('T',' ') body = (c.get('body') or '').strip() print(f'─── {user} @ {created} ───') print(body) print() "