repositories / bugabinga.net
bugabinga.net
personal infrastructure for bugabinga!
owned by admin
scripts/local/setup.sh
Raw#!/usr/bin/env bash
set -euo pipefail
usage() {
echo "usage: setup.sh [check|hooks]" >&2
exit 2
}
action="${1:-check}"
[[ "$#" -le 1 ]] || usage
[[ "${action}" == "check" || "${action}" == "hooks" ]] || usage
missing=()
check_command() {
local command="$1" label="${2:-$1}"
if command -v "${command}" >/dev/null 2>&1; then
printf 'ok %s\n' "${label}"
else
printf 'missing %s\n' "${label}"
missing+=("${label}")
fi
}
for command in bash git just tofu lefthook gitleaks caddy podman go wrangler jq node ssh scp ssh-keygen rsync curl dig shellcheck shfmt wg flock; do
check_command "${command}"
done
if [[ -x /usr/lib/systemd/system-generators/podman-system-generator ]]; then
printf 'ok %s\n' podman-system-generator
else
printf 'missing %s\n' podman-system-generator
missing+=(podman-system-generator)
fi
chrome=""
for candidate in google-chrome-stable google-chrome chromium chromium-browser; do
if command -v "${candidate}" >/dev/null 2>&1; then
chrome="${candidate}"
break
fi
done
if [[ -n "${chrome}" ]]; then
printf 'ok chrome (%s)\n' "${chrome}"
else
printf 'missing chrome\n'
missing+=(chrome)
fi
if [[ "${#missing[@]}" -ne 0 ]]; then
printf '\nmissing %d required tool(s): %s\n' "${#missing[@]}" "${missing[*]}" >&2
exit 1
fi
if [[ "${action}" == "hooks" ]]; then
lefthook install
fi