fix: queue daemon crashes on every task - 3 bugs
Fix 3 bugs from issue #174 that caused silent failure loop: 1. kugetsu-log.sh: Fix json.loads with newlines - Previously, notifications JSON was embedded in a single-quoted Python string literal, but newlines in the JSON broke the Python parser. - Fix: Pass JSON via stdin to Python instead of embedding in string. 2. kugetsu-queue-daemon.sh: Create logs directory during init - The logs/ directory ($LOGS_DIR) was never created during kugetsu init. - Fix: Add mkdir -p for LOGS_DIR, WORKTREES_DIR, QUEUE_DIR, and QUEUE_ITEMS_DIR to ensure_dirs() and ensure_queue_dirs(). 3. kugetsu: Fix parse_issue_ref_from_message URL parsing - The function used buggy grep/sed to parse URLs like #158 - Fix: Use bash regex (=~) for reliable URL parsing with proper capture groups. Additional improvements: - ensure_dirs() now creates all necessary directories instead of just SESSIONS_DIR - ensure_queue_dirs() now also creates QUEUE_DIR and LOGS_DIR - parse_issue_ref_from_message uses consistent bash regex approach for all URL patterns
This commit is contained in:
@@ -43,15 +43,24 @@ kugetsu_add_notification() {
|
||||
notifications=$(cat "$NOTIFICATIONS_FILE")
|
||||
fi
|
||||
|
||||
local new_notification=$(python3 -c "import json; print(json.dumps({
|
||||
'type': '$notification_type',
|
||||
'message': '$message',
|
||||
'issue_ref': '$issue_ref',
|
||||
'timestamp': '$timestamp',
|
||||
'read': False
|
||||
}))")
|
||||
|
||||
notifications=$(python3 -c "import json; n=json.loads('$notifications'); n.append(json.loads('$new_notification')); print(json.dumps(n[-50:] if len(n)>50 else n, indent=2))")
|
||||
notifications=$(echo "$notifications" | python3 -c "
|
||||
import json
|
||||
import sys
|
||||
|
||||
notifications = json.load(sys.stdin)
|
||||
new_notification = {
|
||||
'type': '$notification_type',
|
||||
'message': '''$message'''.replace('\"', '\"'),
|
||||
'issue_ref': '$issue_ref' if '$issue_ref' else None,
|
||||
'timestamp': '$timestamp',
|
||||
'read': False
|
||||
}
|
||||
|
||||
notifications.append(new_notification)
|
||||
notifications = notifications[-50:] if len(notifications) > 50 else notifications
|
||||
|
||||
print(json.dumps(notifications, indent=2))
|
||||
")
|
||||
|
||||
echo "$notifications" > "$NOTIFICATIONS_FILE"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user