74 lines
2.1 KiB
Bash

#!/usr/bin/env sh
set -eu
BASE_URL="${FIELDLENS_DOWNLOAD_BASE_URL:-https://git.arrowstack.dev/Admin/fieldlens-desktop/raw/branch/main/downloads}"
PACKAGE="fieldlens-print-linux-x64.deb"
EXPECTED_SHA256="0a80f2319d9e82fc846c0078faea4dcf3523782f030a6f1a9346cd4e8b86113f"
say() {
printf '%s\n' "$*"
}
fail() {
printf 'FieldLens Print installer: %s\n' "$*" >&2
exit 1
}
case "$(uname -m)" in
x86_64|amd64) ;;
*) fail "this installer currently supports x86_64/amd64 Linux only" ;;
esac
command -v sha256sum >/dev/null 2>&1 || fail "sha256sum is required"
tmpdir="$(mktemp -d 2>/dev/null || mktemp -d -t fieldlens-print)"
trap 'rm -rf "$tmpdir"' EXIT HUP INT TERM
package_path="$tmpdir/$PACKAGE"
package_url="$BASE_URL/$PACKAGE"
say "Downloading FieldLens Print..."
if command -v curl >/dev/null 2>&1; then
curl -fL --retry 3 --retry-delay 1 -o "$package_path" "$package_url"
elif command -v wget >/dev/null 2>&1; then
wget -O "$package_path" "$package_url"
else
fail "curl or wget is required"
fi
actual_sha256="$(sha256sum "$package_path" | awk '{print $1}')"
if [ "$actual_sha256" != "$EXPECTED_SHA256" ]; then
fail "checksum verification failed"
fi
say "Checksum verified."
if [ "$(id -u)" -eq 0 ]; then
sudo_cmd=""
elif command -v sudo >/dev/null 2>&1; then
sudo_cmd="sudo"
else
fail "root access or sudo is required to install the package"
fi
if command -v apt-get >/dev/null 2>&1; then
say "Installing CUPS printer tools..."
$sudo_cmd apt-get update
$sudo_cmd apt-get install -y cups-client policykit-1 || $sudo_cmd apt-get install -y cups-client
say "Installing FieldLens Print..."
$sudo_cmd apt-get install -y "$package_path"
elif command -v apt >/dev/null 2>&1; then
say "Installing CUPS printer tools..."
$sudo_cmd apt update
$sudo_cmd apt install -y cups-client policykit-1 || $sudo_cmd apt install -y cups-client
say "Installing FieldLens Print..."
$sudo_cmd apt install -y "$package_path"
elif command -v dpkg >/dev/null 2>&1; then
say "Installing FieldLens Print..."
$sudo_cmd dpkg -i "$package_path"
else
fail "this installer currently supports Debian/Ubuntu-style systems"
fi
say "FieldLens Print installed successfully."