#!/bin/sh # Install the built binary and a systemd unit on this host, then (re)start the service. # Runs as the user who should own the terminals (their login shell, their sudo rights); # needs sudo only for the copy into /usr/local/bin and the unit install. # # HAMLAB_USER user the daemon runs as (default: the invoking user) # PREFIX binary directory (default: /usr/local/bin) set -eu cd "$(dirname "$0")/.." USER_NAME="${HAMLAB_USER:-${SUDO_USER:-$(id -un)}}" GROUP_NAME="$(id -gn "$USER_NAME")" HOME_DIR="$(getent passwd "$USER_NAME" | cut -d: -f6)" PREFIX="${PREFIX:-/usr/local/bin}" [ -n "$HOME_DIR" ] || { echo "no home dir for $USER_NAME" >&2; exit 1; } unit=$(mktemp) sed -e "s|@USER@|$USER_NAME|g" -e "s|@GROUP@|$GROUP_NAME|g" -e "s|@HOME@|$HOME_DIR|g" -e "s|@PREFIX@|$PREFIX|g" \ deploy/hamlab.service > "$unit" sudo install -m 0755 bin/hamlab "$PREFIX/hamlab" sudo install -m 0644 "$unit" /etc/systemd/system/hamlab.service rm -f "$unit" sudo systemctl daemon-reload sudo systemctl enable hamlab.service >/dev/null if [ ! -f "$HOME_DIR/apps/hamlab/config.json" ]; then echo "No config yet. Set a password, then start: $PREFIX/hamlab passwd && sudo systemctl start hamlab" >&2 exit 0 fi sudo systemctl restart hamlab.service sleep 1 systemctl is-active hamlab.service && "$PREFIX/hamlab" version