mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-04 20:28:23 +02:00
A pass over the install scripts, dev-tools commands, and Hyprland Lua files that I had stuffed with explain-everything preambles. Most of those rationales (which files ship where, why hyprctl setenv doesn't suffice, etc.) belong in commit messages or PR descriptions, not in code people have to read forever. Kept the few comments that document genuinely non-obvious behaviour: the keybind-env reason for hl.env in envs.lua, why the runtime PAM seds stay scripted in increase-lockout-limit, the chroot/--now distinction in chroot.sh, and the dev-pkg-test split-install reason.
77 lines
2.6 KiB
Bash
Executable File
77 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Build and install an Omarchy package from a local checkout
|
|
# omarchy:group=dev
|
|
# omarchy:args=[package-name] [path-to-checkout]
|
|
# omarchy:examples=omarchy dev pkg-test omarchy-settings | omarchy dev pkg-test omarchy ~/Work/omarchy/omarchy-installer
|
|
|
|
set -euo pipefail
|
|
|
|
if [[ ${1:-} == "-h" || ${1:-} == "--help" ]]; then
|
|
cat <<USAGE
|
|
Usage: omarchy dev pkg-test [package-name] [path-to-checkout]
|
|
|
|
Builds and installs an Omarchy package from a local omarchy-installer
|
|
checkout. Use when changes need to land at fixed system paths (/etc/,
|
|
/usr/lib/systemd/, udev rule bodies, plymouth) that omarchy-dev-link
|
|
can't shadow.
|
|
|
|
Defaults:
|
|
package-name omarchy-settings
|
|
path-to-checkout ~/Work/omarchy/omarchy-installer
|
|
|
|
The pkgver of the built package is tagged 'dev.<short-sha>[.dirty]' so
|
|
'pacman -Q' makes it obvious where the installed version came from.
|
|
|
|
PKGBUILDs are read from \${OMARCHY_PKGBUILDS_DIR:-~/Work/omarchy/omarchy-pkgs/pkgbuilds}/<package-name>/.
|
|
USAGE
|
|
exit 0
|
|
fi
|
|
|
|
PKG="${1:-omarchy-settings}"
|
|
CHECKOUT="${2:-$HOME/Work/omarchy/omarchy-installer}"
|
|
PKGBUILDS_ROOT="${OMARCHY_PKGBUILDS_DIR:-$HOME/Work/omarchy/omarchy-pkgs/pkgbuilds}"
|
|
PKGBUILD_DIR="$PKGBUILDS_ROOT/$PKG"
|
|
|
|
if [[ ! -d "$CHECKOUT" ]]; then
|
|
echo "Error: checkout not found at $CHECKOUT" >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -f "$PKGBUILD_DIR/PKGBUILD" ]]; then
|
|
echo "Error: PKGBUILD not found at $PKGBUILD_DIR/PKGBUILD" >&2
|
|
echo " Pass a different package name as arg 1, or set OMARCHY_PKGBUILDS_DIR." >&2
|
|
exit 1
|
|
fi
|
|
|
|
build_dir=$(mktemp -d -t omarchy-dev-pkg-test.XXXXXX)
|
|
trap 'rm -rf "$build_dir"' EXIT
|
|
|
|
cp -a "$PKGBUILD_DIR/." "$build_dir/"
|
|
|
|
# pkgver=dev.<sha>[.dirty] so pacman -Q makes the source obvious.
|
|
short_sha=$(git -C "$CHECKOUT" rev-parse --short HEAD 2>/dev/null || echo "local")
|
|
dirty=""
|
|
if [[ -d "$CHECKOUT/.git" ]] && [[ -n "$(git -C "$CHECKOUT" status --porcelain)" ]]; then
|
|
dirty=".dirty"
|
|
fi
|
|
new_pkgver="dev.${short_sha}${dirty}"
|
|
sed -i "s/^pkgver=.*/pkgver=${new_pkgver}/" "$build_dir/PKGBUILD"
|
|
|
|
echo "Building $PKG ${new_pkgver} from $CHECKOUT"
|
|
echo " build dir: $build_dir"
|
|
echo " PKGBUILD : $PKGBUILD_DIR/PKGBUILD"
|
|
echo
|
|
|
|
cd "$build_dir"
|
|
OMARCHY_SRC="$CHECKOUT" makepkg -s --skipchecksums --noconfirm "${@:3}"
|
|
|
|
# Install separately so we can pass --overwrite='*' (makepkg -i can't).
|
|
# Dev builds frequently conflict with files left behind by previous
|
|
# script-installed Omarchy versions; the build is the authoritative state.
|
|
built_pkg=$(ls -t "$build_dir"/*.pkg.tar.* 2>/dev/null | grep -v '\.sig$' | head -1)
|
|
if [[ -z $built_pkg ]]; then
|
|
echo "Error: no built package found in $build_dir" >&2
|
|
exit 1
|
|
fi
|
|
sudo pacman -U --noconfirm --overwrite='*' "$built_pkg"
|