From ecf536bf718e97283e68512cd8aaefb260d04634 Mon Sep 17 00:00:00 2001 From: Druid520 Date: Tue, 11 Aug 2026 18:17:50 -0700 Subject: ADD: v1 --- mp.sh | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100755 mp.sh (limited to 'mp.sh') diff --git a/mp.sh b/mp.sh new file mode 100755 index 0000000..1f924a7 --- /dev/null +++ b/mp.sh @@ -0,0 +1,84 @@ +#!/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 -- cgit 1.4.1