Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:08:16 +08:00
commit fc569e5620
38 changed files with 4997 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
#!/usr/bin/env bash
# Complete current TODO and optionally start the next one
# Usage: jj-todo-done [NEXT_REV]
#
# If NEXT_REV is provided, starts working on that revision.
# If not provided, lists possible next TODOs (children of current) and exits.
#
# Example:
# jj-todo-done # Complete current, show next options
# jj-todo-done abc123 # Complete current, start working on abc123
set -euo pipefail
SCRIPTS_DIR="$(dirname "$0")"
# Mark current as done (auto-detects current flag)
"$SCRIPTS_DIR/jj-flag-update" @ done
current=$(jj log -r @ --no-graph -T 'change_id.shortest(8)')
# Find children that are TODOs (have any flag)
children=$(jj log -r "children(@) & description(substring:\"[todo]\")" --no-graph -T 'change_id.shortest(8) ++ "\n"' 2>/dev/null || true)
if [[ -n "${1:-}" ]]; then
# User specified next revision
next="$1"
jj edit "$next"
"$SCRIPTS_DIR/jj-flag-update" @ wip
echo ""
echo "📋 Starting TODO:"
echo "─────────────────"
"$SCRIPTS_DIR/jj-show-desc" @
elif [[ -z "$children" ]]; then
echo "✅ Completed: $current"
echo ""
echo "No pending TODO children found. You may be done with this chain!"
echo ""
echo "Check remaining TODOs with:"
echo " jj-find-flagged todo"
elif [[ $(echo "$children" | wc -l) -eq 1 ]]; then
# Single child - start it automatically
next=$(echo "$children" | tr -d '[:space:]')
echo "✅ Completed: $current"
echo ""
jj edit "$next"
"$SCRIPTS_DIR/jj-flag-update" @ wip
echo ""
echo "📋 Starting TODO:"
echo "─────────────────"
"$SCRIPTS_DIR/jj-show-desc" @
else
# Multiple children - list them for user to choose
echo "✅ Completed: $current"
echo ""
echo "Multiple next TODOs available. Choose one:"
echo ""
while IFS= read -r child; do
[[ -z "$child" ]] && continue
title=$(jj log -r "$child" --no-graph -T 'description.first_line()' 2>/dev/null || echo "(no description)")
echo " $child $title"
done <<< "$children"
echo ""
echo "Run: jj-todo-done <change-id>"
fi