tools/debian/install.sh
#!/bin/bash
# This file is part of the Agate software and licensed under either the
# MIT license or Apache license at your option.
#
# Please keep in mind that there is not warranty whatsoever provided for this
# software as specified in the disclaimer in the MIT license or section 7 of
# the Apache license respectively.

echo -n "checking:agate......."
if command -v agate >/dev/null
then
	echo "found"
else
	echo "FAILED"
	echo "Agate is probably not in your PATH variable."
	echo "If you installed it with cargo, try linking the binary to /usr/local/bin with something like this:"
	echo "    ln -s $HOME/.cargo/bin/agate /usr/local/bin/agate"
	echo "or what seems reasonable to you."
	exit 1
fi

echo -n "checking:systemd....."
if [[ "$(cat /proc/1/comm)" != "systemd" ]]
then
	echo "NOT THE INIT PROCESS"
	echo "Your system seems to not use systemd, sorry. Aborting."
	exit 1
else
	echo "installed and running"
fi

echo -n "checking:rsyslogd...."
if command -v rsyslogd >/dev/null
then
	echo -n "installed"
	if ps cax | grep -q "rsyslogd"
	then
		echo " and running"
	else
		echo " but not running!"
		echo "You should enable rsyslogd to use this functionality."
	fi
else
	echo "NOT INSTALLED!"
	echo "Aborting."
	exit 1
fi

echo -n "checking:logrotate..."
if type logrotate >/dev/null 2>&1
then
	echo "installed, but I cannot check if it is enabled"
else
	echo "NOT INSTALLED!"
	echo "Aborting."
	exit 1
fi

# immediately exit if one of the following commands fails
set -e

echo "copying config files..."
cp gemini.service /etc/systemd/system/
cp gemini.conf /etc/rsyslog.d/
cp geminilogs /etc/logrotate.d/

echo "setting up content files..."
mkdir -p /srv/gemini/content
mkdir -p /srv/gemini/.certificates
# agate will generate certificates on first run

echo "starting service..."
systemctl daemon-reload
systemctl restart rsyslog
systemctl enable gemini
systemctl start gemini

echo "setup done, checking..."
# wait until the restarts would have timed out
sleep 10
systemctl status gemini
