import: contenido inicial de la skill gitea

This commit is contained in:
2026-04-26 14:24:00 -06:00
parent 28e657a353
commit 768b48003d
15 changed files with 2012 additions and 1 deletions

79
scripts/pr-view.sh Normal file
View File

@@ -0,0 +1,79 @@
#!/usr/bin/env bash
# gitea skill — ver detalle de un PR.
#
# Uso:
# pr-view.sh <owner>/<repo> <number>
# pr-view.sh <repo> <number> # usa GITEA_DEFAULT_OWNER
set -euo pipefail
SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
QUERY="$SKILL_DIR/scripts/query.sh"
if [[ $# -lt 2 ]]; then
cat >&2 <<EOF
Uso: pr-view.sh <owner>/<repo> <number>
pr-view.sh <repo> <number>
Ejemplos:
pr-view.sh NucleOS/nucleo-infra 14
pr-view.sh nucleo-infra 14
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}/pulls/${number}")"
# Si no es JSON-object o tiene error
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
pr = json.load(sys.stdin)
if pr.get('message') and not pr.get('number'):
print('ERROR:', pr.get('message'), file=sys.stderr); sys.exit(1)
n = pr.get('number')
title = pr.get('title','')
state = 'merged' if pr.get('merged') else pr.get('state','?')
head = (pr.get('head') or {}).get('ref','?')
base = (pr.get('base') or {}).get('ref','?')
user = (pr.get('user') or {}).get('login','?')
created = (pr.get('created_at') or '')[:19].replace('T',' ')
updated = (pr.get('updated_at') or '')[:19].replace('T',' ')
merged_at = (pr.get('merged_at') or '')[:19].replace('T',' ')
mergeable = pr.get('mergeable')
url = pr.get('html_url')
print(f'#{n} {title}')
print(f' state: {state} (mergeable={mergeable})')
print(f' branch: {head} → {base}')
print(f' author: {user}')
print(f' created: {created}')
print(f' updated: {updated}')
if merged_at: print(f' merged: {merged_at}')
print(f' url: {url}')
print()
body = (pr.get('body') or '').strip()
if body:
print('--- body ---')
# Truncar si es muy largo
if len(body) > 4000:
body = body[:4000] + '\n[...truncado, total {} chars]'.format(len(pr.get('body','')))
print(body)
"