#!/bin/sh
# srht-ticket -- create a sr.ht ticket
set -eu

if [ -z "${1:-}" ] || [ -z "${2:-}" ]; then
    echo "Usage: srht-ticket <tracker> <subject> [body]" >&2
    exit 1
fi

TRACKER="$1"
SUBJECT="$2"
BODY="${3:-$SUBJECT}"

if command -v hut >/dev/null 2>&1; then
    echo "$BODY" | hut todo ticket create -t "$TRACKER" --stdin
else
    TOKEN=$(cat ~/.config/srht/token)
    SUBJECT_ESC=$(echo "$SUBJECT" | sed 's/"/\\"/g')
    BODY_ESC=$(echo "$BODY" | sed 's/"/\\"/g')

    # First get tracker ID
    TRACKER_ID=$(curl -s --oauth2-bearer "$TOKEN" -H 'Content-Type: application/json' \
      -d "{\"query\": \"{ me { tracker(name: \\\"$TRACKER\\\") { id } } }\"}" \
      https://todo.sr.ht/query | jq -r '.data.me.tracker.id')

    curl -s --oauth2-bearer "$TOKEN" -H 'Content-Type: application/json' \
      -d "{\"query\": \"mutation { submitTicket(trackerId: $TRACKER_ID, input: {subject: \\\"$SUBJECT_ESC\\\", body: \\\"$BODY_ESC\\\"}) { id ref subject } }\"}" \
      https://todo.sr.ht/query | jq -r '.data.submitTicket | "#\(.ref): \(.subject)"'
fi
