#!/bin/sh set -euo pipefail usage() { cat <<-'EOF' Usage: transactor [-p PORT] FILE EOF } VALCACHESIZE= PORT=50200 CACHEDIR='cache' TEMPDATADIR='tmp' while getopts 'p:C:S:T:' flag; do case "$flag" in (p) PORT="$OPTARG" ;; (C) CACHEDIR="$OPTARG" ;; (S) VALCACHESIZE="$OPTARG" ;; (T) TEMPDATADIR="$OPTARG" ;; (*) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) if [ -z "${1:-}" ]; then echo 'Missing FILE.' >&2 usage >&2 exit 2 fi FILE="$1" if [ -z "$VALCACHESIZE" ]; then VALCACHESIZE="$( df -Pk -- "$(dirname -- "$FILE")" | tail -n1 | awk '{printf "%.0f\n", $2 / (1024 * 1024)}' )" fi sqlite3 "$FILE" < @SYSCONFDIR@/init.sql > /dev/null exec java \ -server \ -Djava.security.manager=allow \ -Xms4g \ -Xmx4g \ -XX:+UseG1GC \ -XX:MaxGCPauseMillis=50 \ --class-path '@SYSCONFDIR@/:@JAVADIR@/*' \ clojure.main \ --main datomic.launcher \ <( sed \ -e "s|@PORT@|$PORT|g" \ -e "s|@FILE@|$FILE|g" \ -e "s|@CACHEDIR@|$CACHEDIR|g" \ -e "s|@TEMPDATADIR@|$TEMPDATADIR|g" \ -e "s|@VALCACHESIZE@|$VALCACHESIZE|g" \ @SYSCONFDIR@/transactor.properties.tmpl )