summaryrefslogtreecommitdiff
path: root/Omni/Agent/sync-tasks.sh
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Agent/sync-tasks.sh')
-rwxr-xr-xOmni/Agent/sync-tasks.sh46
1 files changed, 46 insertions, 0 deletions
diff --git a/Omni/Agent/sync-tasks.sh b/Omni/Agent/sync-tasks.sh
new file mode 100755
index 0000000..f4669b7
--- /dev/null
+++ b/Omni/Agent/sync-tasks.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+set -e
+
+# Omni/Ide/sync-tasks.sh
+# Synchronizes the task database with the live branch safely.
+# Usage: sync-tasks.sh [--commit]
+
+COMMIT=0
+if [[ "$1" == "--commit" ]]; then
+ COMMIT=1
+fi
+
+REPO_ROOT="$(git rev-parse --show-toplevel)"
+cd "$REPO_ROOT"
+
+echo "Syncing tasks..."
+
+# 1. Import latest tasks from 'live' branch
+# We use git show to get the file content from the reference branch without checking it out
+mkdir -p .tasks
+git show live:.tasks/tasks.jsonl > .tasks/live-tasks.jsonl
+
+# 2. Merge logic: Import live tasks into our local DB
+# The 'task import' command uses timestamps to resolve conflicts (last write wins)
+if [ -s .tasks/live-tasks.jsonl ]; then
+ echo "Importing tasks from live branch..."
+ "$REPO_ROOT/_/bin/task" import -i .tasks/live-tasks.jsonl
+fi
+
+# 3. Clean up
+rm .tasks/live-tasks.jsonl
+
+# 4. Export current state to ensure it's clean/deduplicated
+"$REPO_ROOT/_/bin/task" export --flush
+
+# 5. Commit changes to .tasks/tasks.jsonl if requested and there are changes
+if [[ "$COMMIT" -eq 1 ]]; then
+ if [[ -n $(git status --porcelain .tasks/tasks.jsonl) ]]; then
+ echo "Committing task updates..."
+ git add .tasks/tasks.jsonl
+ git commit -m "task: sync database" || true
+ echo "Task updates committed to current branch."
+ else
+ echo "No task changes to commit."
+ fi
+fi