#!/bin/sh
#
# git-issue-import - Import issues from an external provider
#

set -e

usage() {
	cat <<EOF
usage: git issue import <provider> [options]

Supported providers:
   github:<owner>/<repo>        GitHub repository
   gitlab:<group>/<project>     GitLab project
   gitea:<owner>/<repo>         Gitea repository
   forgejo:<owner>/<repo>       Forgejo repository

Options vary by provider. Use 'git issue import <provider> --help' for provider-specific options.

Common options:
   --state <state>   Filter by state (open, closed, all)
   --dry-run         Show what would be imported without importing
   -h, --help        Show this help
EOF
	exit 1
}

# Check for help flag before parsing
for arg in "$@"
do
	case "$arg" in
		-h|--help)
			usage
			;;
	esac
done

# Extract provider (first non-option argument)
provider=""
for arg in "$@"
do
	case "$arg" in
		-*) ;;  # Skip options
		*)
			if test -z "$provider"
			then
				provider="$arg"
				break
			fi
			;;
	esac
done

if test -z "$provider"
then
	echo "error: provider is required (e.g., github:owner/repo)" >&2
	usage
fi

# Find the directory containing the git-issue scripts
ISSUE_BIN_DIR="$(cd "$(dirname "$0")" && pwd)"

# Delegate to provider-specific script, passing ALL arguments
case "$provider" in
	github:*/*)
		exec "$ISSUE_BIN_DIR/git-issue-import-github" "$@"
		;;
	gitlab:*/*)
		exec "$ISSUE_BIN_DIR/git-issue-import-gitlab" "$@"
		;;
	gitea:*/*)
		exec "$ISSUE_BIN_DIR/git-issue-import-gitea" "$@"
		;;
	forgejo:*/*)
		exec "$ISSUE_BIN_DIR/git-issue-import-gitea" "$@"
		;;
	*)
		echo "error: unsupported or invalid provider '$provider'" >&2
		echo "       supported: github:<owner>/<repo>, gitlab:<owner>/<project>, gitea:<owner>/<repo>, forgejo:<owner>/<repo>" >&2
		exit 1
		;;
esac
