#!/bin/bash # ABOUTME: Shared helper functions and constants for Moonarch scripts. # ABOUTME: Sourced by post-install.sh. # Path constants — BASH_SOURCE[1] resolves to the calling script, not lib.sh itself. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[1]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" OFFICIAL_PACKAGES="$PROJECT_DIR/packages/official.txt" AUR_PACKAGES="$PROJECT_DIR/packages/aur.txt" DEFAULTS_DIR="$PROJECT_DIR/defaults" # --- Helper functions --- log() { echo -e "\e[1;34m[Moonarch]\e[0m $*" } err() { echo -e "\e[1;31m[Moonarch ERROR]\e[0m $*" >&2 } read_packages() { grep -v '^\s*#' "$1" | grep -v '^\s*$' } confirm() { read -r -p "$1 [y/N] " response [[ "$response" =~ ^[yY]$ ]] } # --- Prerequisite checks --- check_not_root() { if [[ $EUID -eq 0 ]]; then err "Do NOT run as root. The script uses sudo where needed." exit 1 fi } check_pacman() { if ! command -v pacman &>/dev/null; then err "pacman not found — is this really Arch Linux?" exit 1 fi }