From b28ad78bd81068722882a60e43adb6705c841ef3 Mon Sep 17 00:00:00 2001 From: shokollm <270575765+shokollm@users.noreply.github.com> Date: Wed, 8 Apr 2026 06:20:52 +0000 Subject: [PATCH] fix(queue): add --format=json and --limit flags to queue list --- skills/kugetsu/scripts/kugetsu | 66 ++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 14 deletions(-) diff --git a/skills/kugetsu/scripts/kugetsu b/skills/kugetsu/scripts/kugetsu index 601ee45..0004474 100755 --- a/skills/kugetsu/scripts/kugetsu +++ b/skills/kugetsu/scripts/kugetsu @@ -56,14 +56,21 @@ Usage: kugetsu queue [subcommand] Subcommands: - list Show pending tasks (default) + list [--limit=N] [--format=json] Show pending tasks (default: 10 items, text format) stats Show queue statistics clear Clear all queue items enqueue Enqueue a task help Show this help +Options for list: + --limit=N Number of items to return (default: 10) + --format=json Output in JSON format with stats + Examples: kugetsu queue list + kugetsu queue list --limit=50 + kugetsu queue list --format=json + kugetsu queue list --limit=20 --format=json kugetsu queue stats kugetsu queue clear kugetsu queue enqueue github.com/shoko/kugetsu#14 "fix bug" @@ -355,19 +362,25 @@ PYEOF get_pending_tasks() { local limit="${1:-10}" + local format="${2:-text}" if [ ! -d "$QUEUE_ITEMS_DIR" ]; then - echo "[]" + if [ "$format" = "json" ]; then + echo '{"items": [], "total": 0, "pending": 0}' + else + echo "No pending tasks in queue." + fi return fi - python3 -c " + python3 << PYEOF import json import os import sys queue_dir = os.environ.get('QUEUE_ITEMS_DIR', '') limit = int(sys.argv[1]) if len(sys.argv) > 1 else 10 +format_type = sys.argv[2] if len(sys.argv) > 2 else 'text' items = [] if os.path.isdir(queue_dir): @@ -379,13 +392,27 @@ if os.path.isdir(queue_dir): data = json.load(f) if data.get('state') == 'pending': items.append(data) - if len(items) >= limit: - break except: pass -print(json.dumps(items)) -" "$limit" +items.sort(key=lambda x: x.get('pending_since', '')) + +if format_type == 'json': + output = { + "items": items[:limit], + "total": len(items), + "pending": len(items) + } + print(json.dumps(output)) +else: + if not items: + print("No pending tasks in queue.") + else: + print("Pending tasks:") + for t in items[:limit]: + msg = t.get('message', '')[:50] + print(f" {t.get('id')}: {t.get('issue_ref')} - {msg}...") +PYEOF } get_queue_stats() { @@ -920,13 +947,24 @@ cmd_queue() { usage_queue ;; list) - local pending_tasks=$(get_pending_tasks 10) - if [ "$pending_tasks" = "[]" ]; then - echo "No pending tasks in queue." - else - echo "Pending tasks:" - echo "$pending_tasks" | python3 -c "import sys, json; [print(f\" {t.get('id')}: {t.get('issue_ref')} - {t.get('message', '')[:50]}...\") for t in json.load(sys.stdin)]" - fi + local limit="10" + local format="text" + + while [ $# -gt 0 ]; do + case "$1" in + --limit=*) + limit="${1#*=}" + ;; + --format=json) + format="json" + ;; + *) + ;; + esac + shift + done + + get_pending_tasks "$limit" "$format" ;; stats) local stats=$(get_queue_stats)