Initial commit
This commit is contained in:
64
skills/working-with-jj/scripts/jj-todo-done
Executable file
64
skills/working-with-jj/scripts/jj-todo-done
Executable 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
|
||||
Reference in New Issue
Block a user