snapshot of https://github.com/ActivityWatch/aw-server-rust.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
Build / ubuntu-latest (push) Failing after 5s
Build / Android (push) Failing after 2s
Build / Code coverage (push) Failing after 2s
Lint / format (push) Failing after 3s
Lint / clippy (push) Failing after 3s
Build / macOS-latest (push) Has been cancelled
Build / windows-latest (push) Has been cancelled
Some checks failed
Build / ubuntu-latest (push) Failing after 5s
Build / Android (push) Failing after 2s
Build / Code coverage (push) Failing after 2s
Lint / format (push) Failing after 3s
Lint / clippy (push) Failing after 3s
Build / macOS-latest (push) Has been cancelled
Build / windows-latest (push) Has been cancelled
This commit is contained in:
78
aw-sync/test-sync-pull.sh
Executable file
78
aw-sync/test-sync-pull.sh
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
|
||||
# exit on fail
|
||||
set -e
|
||||
|
||||
# get script path
|
||||
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
pushd $SCRIPTPATH
|
||||
|
||||
# port used for testing instance
|
||||
PORT=5667
|
||||
|
||||
# if server already running on port 5667, don't start again
|
||||
if [ "$(lsof -i:$PORT -sTCP:LISTEN -t)" ]; then
|
||||
echo "ActivityWatch server already running on port $PORT, using that."
|
||||
else
|
||||
# Set up an isolated ActivityWatch instance
|
||||
./test-server.sh $PORT &
|
||||
SERVER_PID=$!
|
||||
fi
|
||||
|
||||
|
||||
sleep 1;
|
||||
SYNCROOTDIR="$HOME/ActivityWatchSync"
|
||||
|
||||
|
||||
function sync_host() {
|
||||
host=$1
|
||||
SYNCDIR="$SYNCROOTDIR/$host"
|
||||
dbs=$(find $SYNCDIR -name "*.db")
|
||||
for db in $dbs; do
|
||||
# workaround to avoid trying to sync empty database files (size 45056)
|
||||
if [ "$(stat -c%s $db)" -lt 50000 ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
AWSYNC_ARGS="--port $PORT"
|
||||
AWSYNC_ARGS_ADV="--sync-dir $SYNCDIR --sync-db $db"
|
||||
BUCKETS="aw-watcher-window_$host,aw-watcher-afk_$host"
|
||||
|
||||
echo "Syncing $db to $host"
|
||||
cargo run --bin aw-sync -- $AWSYNC_ARGS sync-advanced $AWSYNC_ARGS_ADV --mode pull --buckets $BUCKETS
|
||||
# TODO: If there are no buckets from the expected host, emit a warning at the end.
|
||||
# (push-script should not have created them to begin with)
|
||||
done
|
||||
}
|
||||
|
||||
host=$1
|
||||
|
||||
# if no host given, sync all, otherwise sync only the given host
|
||||
if [ -z "$host" ]; then
|
||||
echo "Syncing all hosts"
|
||||
sleep 0.5
|
||||
# For each host in the sync directory, pull the data from each database file using aw-sync
|
||||
# Use `find` to get all directories in the sync directory
|
||||
hostnames=$(find $SYNCROOTDIR -maxdepth 1 -type d -exec basename {} \;)
|
||||
# filter out "erb-m2.local"
|
||||
hostnames=$(echo $hostnames | tr ' ' '\n' | grep -v "erb-m2.local")
|
||||
# filter out folder not containing subfolders with .db files
|
||||
for host in $hostnames; do
|
||||
if [ ! "$(find $SYNCROOTDIR/$host -name "*.db")" ]; then
|
||||
hostnames=$(echo $hostnames | tr ' ' '\n' | grep -v $host)
|
||||
fi
|
||||
done
|
||||
# Sync each host, file-by-file
|
||||
for host in $hostnames; do
|
||||
sync_host $host
|
||||
done
|
||||
else
|
||||
echo "Syncing host $1"
|
||||
sleep 0.5
|
||||
sync_host $host
|
||||
fi
|
||||
|
||||
# kill aw-server-rust (if started by us)
|
||||
if [ "$SERVER_PID" ]; then
|
||||
kill $SERVER_PID
|
||||
fi
|
||||
Reference in New Issue
Block a user