#!/bin/bash # issue-list.sh - List issues on Gitea or GitHub # Usage: issue-list.sh [-s state] [-l label] [-m milestone] [-a assignee] set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/detect-platform.sh" # Default values STATE="open" LABEL="" MILESTONE="" ASSIGNEE="" LIMIT=30 usage() { cat <&2 usage ;; esac done PLATFORM=$(detect_platform) case "$PLATFORM" in github) CMD="gh issue list --state $STATE --limit $LIMIT" [[ -n "$LABEL" ]] && CMD="$CMD --label \"$LABEL\"" [[ -n "$MILESTONE" ]] && CMD="$CMD --milestone \"$MILESTONE\"" [[ -n "$ASSIGNEE" ]] && CMD="$CMD --assignee \"$ASSIGNEE\"" eval "$CMD" ;; gitea) CMD="tea issues list --state $STATE --limit $LIMIT" [[ -n "$LABEL" ]] && CMD="$CMD --labels \"$LABEL\"" # tea uses different syntax for milestone filtering if [[ -n "$MILESTONE" ]]; then MILESTONE_ID=$(tea milestones list 2>/dev/null | grep -E "^\s*[0-9]+" | grep "$MILESTONE" | awk '{print $1}' | head -1) if [[ -n "$MILESTONE_ID" ]]; then CMD="$CMD --milestones $MILESTONE_ID" else echo "Warning: Could not find milestone '$MILESTONE'" >&2 fi fi # Note: tea may not support assignee filter directly eval "$CMD" if [[ -n "$ASSIGNEE" ]]; then echo "Note: Assignee filtering may require manual review for Gitea" >&2 fi ;; *) echo "Error: Could not detect git platform" >&2 exit 1 ;; esac