#!/bin/bash
# issue-comment.sh - Add a comment to an issue on GitHub or Gitea
# Usage: issue-comment.sh -i <issue_number> -c <comment>

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/detect-platform.sh"

# Parse arguments
ISSUE_NUMBER=""
COMMENT=""

while [[ $# -gt 0 ]]; do
    case $1 in
        -i|--issue)
            ISSUE_NUMBER="$2"
            shift 2
            ;;
        -c|--comment)
            COMMENT="$2"
            shift 2
            ;;
        -h|--help)
            echo "Usage: issue-comment.sh -i <issue_number> -c <comment>"
            echo ""
            echo "Options:"
            echo "  -i, --issue    Issue number (required)"
            echo "  -c, --comment  Comment text (required)"
            echo "  -h, --help     Show this help"
            exit 0
            ;;
        *)
            echo "Unknown option: $1"
            exit 1
            ;;
    esac
done

if [[ -z "$ISSUE_NUMBER" ]]; then
    echo "Error: Issue number is required (-i)"
    exit 1
fi

if [[ -z "$COMMENT" ]]; then
    echo "Error: Comment is required (-c)"
    exit 1
fi

detect_platform >/dev/null

if [[ "$PLATFORM" == "github" ]]; then
    gh issue comment "$ISSUE_NUMBER" --body "$COMMENT"
    echo "Added comment to GitHub issue #$ISSUE_NUMBER"
elif [[ "$PLATFORM" == "gitea" ]]; then
    # Build the invocation as an argv array (not unquoted $(get_gitea_repo_args)
    # word-splitting) so the comment body — including Markdown backticks, $(...),
    # and quotes — is passed verbatim and never re-split or shell-evaluated.
    REPO_SLUG=$(get_repo_slug)
    GITEA_LOGIN_NAME=$(get_gitea_login) || {
        echo "Error: could not resolve a Gitea login for this repo; cannot comment on issue #$ISSUE_NUMBER." >&2
        exit 1
    }
    tea issue comment "$ISSUE_NUMBER" "$COMMENT" --repo "$REPO_SLUG" --login "$GITEA_LOGIN_NAME"
    echo "Added comment to Gitea issue #$ISSUE_NUMBER"
else
    echo "Error: Unknown platform"
    exit 1
fi
