#!/usr/bin/env bash set -euo pipefail REPO_URL="${REPO_URL:-https://github.com/pacificao/agrarian.git}" BRANCH="${BRANCH:-main}" INSTALL_DIR="${INSTALL_DIR:-/opt/agrarian}" AGRARIAN_USER="${AGRARIAN_USER:-agrarian}" DATA_DIR="${DATA_DIR:-/var/lib/agrarian}" CONF_DIR="${CONF_DIR:-/etc/agrarian}" CONF_FILE="${CONF_FILE:-$CONF_DIR/agrarian.conf}" SERVICE_FILE="${SERVICE_FILE:-/etc/systemd/system/agrariand.service}" JOBS="${JOBS:-$(nproc)}" RPCUSER="${RPCUSER:-agrarianrpc}" RPCPASSWORD="${RPCPASSWORD:-$(openssl rand -hex 32)}" if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then echo "Run as root: sudo $0" >&2 exit 1 fi export DEBIAN_FRONTEND=noninteractive apt-get update apt-get install -y \ git ca-certificates build-essential pkg-config autoconf automake libtool \ bsdmainutils libboost-all-dev libevent-dev libgmp-dev libssl-dev \ libdb5.3-dev libdb5.3++-dev if ! id "$AGRARIAN_USER" >/dev/null 2>&1; then useradd --system --home "$DATA_DIR" --shell /usr/sbin/nologin "$AGRARIAN_USER" fi mkdir -p "$(dirname "$INSTALL_DIR")" "$DATA_DIR" "$CONF_DIR" if [[ -d "$INSTALL_DIR/.git" ]]; then git -C "$INSTALL_DIR" fetch origin git -C "$INSTALL_DIR" checkout "$BRANCH" git -C "$INSTALL_DIR" pull --ff-only origin "$BRANCH" else rm -rf "$INSTALL_DIR" git clone --branch "$BRANCH" "$REPO_URL" "$INSTALL_DIR" fi cd "$INSTALL_DIR" chmod +x ./autogen.sh ./contrib/build-linux.sh JOBS="$JOBS" ./contrib/build-linux.sh install -m 0755 src/agrariand /usr/local/bin/agrariand install -m 0755 src/agrarian-cli /usr/local/bin/agrarian-cli chown -R "$AGRARIAN_USER:$AGRARIAN_USER" "$DATA_DIR" "$CONF_DIR" if [[ ! -f "$CONF_FILE" ]]; then install -m 0640 -o "$AGRARIAN_USER" -g "$AGRARIAN_USER" /dev/null "$CONF_FILE" cat > "$CONF_FILE" < "$SERVICE_FILE" <