blob: f4669b7d643074bb12b52697065ce31d7ad0a4f4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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
|