87 lines
1.7 KiB
Bash
Executable File
87 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
OLD_CONTAINER=kosync
|
|
SQLITE=./data/kosync.sqlite3
|
|
IMAGE=sodium/kosync-rs:v2.1.1
|
|
REDIS_URL=redis://127.0.0.1:6379/1
|
|
PULL=1
|
|
FLUSH_TARGET=0
|
|
|
|
usage() {
|
|
echo "Usage: $0 [--old-container NAME] [--sqlite PATH] [--image IMAGE] [--redis-url URL] [--flush-target] [--no-pull]" >&2
|
|
}
|
|
|
|
while [ "$#" -gt 0 ]; do
|
|
case "$1" in
|
|
--old-container)
|
|
OLD_CONTAINER=$2
|
|
shift 2
|
|
;;
|
|
--sqlite)
|
|
SQLITE=$2
|
|
shift 2
|
|
;;
|
|
--image)
|
|
IMAGE=$2
|
|
shift 2
|
|
;;
|
|
--redis-url)
|
|
REDIS_URL=$2
|
|
shift 2
|
|
;;
|
|
--flush-target)
|
|
FLUSH_TARGET=1
|
|
shift
|
|
;;
|
|
--no-pull)
|
|
PULL=0
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
usage
|
|
exit 2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
case "$SQLITE" in
|
|
/*) SQLITE_ABS=$SQLITE ;;
|
|
*) SQLITE_ABS=$(pwd)/$SQLITE ;;
|
|
esac
|
|
|
|
case "$SQLITE_ABS" in
|
|
*/) SQLITE_ABS=${SQLITE_ABS%/}/kosync.sqlite3 ;;
|
|
esac
|
|
if [ -d "$SQLITE_ABS" ]; then
|
|
SQLITE_ABS=$SQLITE_ABS/kosync.sqlite3
|
|
fi
|
|
|
|
SQLITE_DIR=$(dirname "$SQLITE_ABS")
|
|
SQLITE_BASE=$(basename "$SQLITE_ABS")
|
|
mkdir -p "$SQLITE_DIR"
|
|
|
|
if [ "$PULL" -eq 1 ]; then
|
|
docker pull "$IMAGE"
|
|
fi
|
|
|
|
echo "image: $IMAGE"
|
|
echo "old container: $OLD_CONTAINER"
|
|
echo "redis url: $REDIS_URL"
|
|
echo "sqlite: $SQLITE_ABS"
|
|
|
|
set -- export-redis --redis-url "$REDIS_URL" --db "/data/$SQLITE_BASE"
|
|
if [ "$FLUSH_TARGET" -eq 1 ]; then
|
|
set -- "$@" --flush-target
|
|
fi
|
|
|
|
docker run --rm \
|
|
--network "container:$OLD_CONTAINER" \
|
|
-v "$SQLITE_DIR:/data" \
|
|
"$IMAGE" \
|
|
"$@"
|