diff --git a/lib/detect-todo.js b/lib/detect-todo.js new file mode 100644 index 0000000..5b236e7 --- /dev/null +++ b/lib/detect-todo.js @@ -0,0 +1,26 @@ +#!/usr/bin/env node +/** + * Detect "todo [task]" pattern in text + * Usage: node detect-todo.js "I need to todo [Setup CI/CD]" + * Output: Setup CI/CD (or empty if no match) + */ + +const text = process.argv[2] || ''; + +// Match: "todo [text]" or "todo: text" or "todo text" +const patterns = [ + /\btodo\s*\[\s*([^\]]+)\s*\]/i, // todo [text] + /\btodo:\s*([^\n]+?)(?:\s*$|\s*[.!?])/i, // todo: text or todo: text. + /\btodo\s+([^\n.!?]+?)(?:\s*$|\s*[.!?])/i, // todo text +]; + +for (const pattern of patterns) { + const match = text.match(pattern); + if (match && match[1]) { + console.log(match[1].trim()); + process.exit(0); + } +} + +// No match +process.exit(1); diff --git a/lib/process-todo.sh b/lib/process-todo.sh new file mode 100644 index 0000000..812c3e3 --- /dev/null +++ b/lib/process-todo.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# Process "todo [task]" patterns in a text string +# If found: add to Tududi and output status +# If not found: exit silently with code 0 + +set -euo pipefail + +input_text="${1:-}" +dry_run="${2:-false}" + +if [ -z "$input_text" ]; then + exit 0 +fi + +# Detect todo pattern using Node script +detect_script="$(dirname "$0")/detect-todo.js" +task_name=$(node "$detect_script" "$input_text" 2>/dev/null) || exit 0 + +# If we get here, task_name was found +if [ "$dry_run" == "true" ]; then + echo "🎯 Would add task: $task_name" + exit 0 +fi + +# Add to Tududi +API_URL="${TUDUDI_API_URL:-https://todo.dilain.com/api/v1}" +API_KEY="${TUDUDI_API_KEY:-}" + +if [ -z "$API_KEY" ]; then + echo "⚠️ TUDUDI_API_KEY not set, skipping task capture" + exit 0 +fi + +response=$(curl -s -X POST \ + -H "Authorization: Bearer $API_KEY" \ + -H "Content-Type: application/json" \ + -d "{\"name\":\"$task_name\"}" \ + "$API_URL/task") + +task_uid=$(echo "$response" | jq -r '.uid // empty' 2>/dev/null) || task_uid="" + +if [ -n "$task_uid" ]; then + echo "✅ Added to Tududi: $task_name" + exit 0 +else + echo "⚠️ Failed to add task: $task_name" + exit 1 +fi