#!/usr/bin/env sh set -e war() { echo "warn: $1" >&2 } die() { echo "err: $1" >&2 exit 1 } ok() { echo "ok: $1" >&2 } if command -v doas >/dev/null 2>&1; then rx() { doas "$@" } return elif command -v sudo >/dev/null 2>&1; then rx() { sudo "$@" } return else die "permission elevator not found." fi wd="/usr/local/mp" ports="/usr/local/ports/ports" ports_repo="https://codeberg.org/Druid520/ports.git" status="$wd/status" _installed="$wd/installed" installed="$wd/extinstalled" cfg="/etc/mp.conf" if [ -f "$cfg" ]; then . "$cfg" else war "cfg not found, creating one." rx touch "$cfg" fi mp_add() { rx cp -r "$ports/$1" "$wd/$1" (cd "$wd/$1" && . pkg.conf && rx sh ./add.sh && rx echo "$pkg_name" >> "$_installed" && rx echo "$pkg_name-$pkg_ver ($pkg_license)" >> "$installed") } mp_del() { (cd "$wd/$1" && . pkg.conf && rx sh ./del.sh && rx sed "s/$pkg_name//g" "$_installed" && rx sed "s/$pkg_name-$pkg_ver ($pkg_license)//g" "$installed") rx rm -rf "$wd/$1" } mp_upd() { (cd "$ports" && rx git pull) if [ "$1" = "*" ]; then for pkg in $(cat "$_installed"); do (cd "$wd/$pkg" && . pkg.conf && rx sh ./del.sh && rx sh ./add.sh) done return fi (cd "$wd/$1" && . pkg.conf && rx sh ./del.sh && rx sh ./add.sh) } mp_init() { if [ -f "$status" ]; then return fi war "uninitialized, initializing." rx git clone "$ports_repo" "$ports" --depth 1 rx mkdir -p "$wd" rx touch "$installed" "$_installed" "$status" } mp_init if [ $# -ne 2 ]; then die "bad usage. usage: mp ." elif [ "$1" = "a" ]; then mp_add "$2" elif [ "$1" = "d" ]; then mp_del "$2" elif [ "$1" = "u" ]; then mp_upd "$2" else die "bad usage. usage: mp ." fi