summary refs log tree commit diff
path: root/mp.sh
diff options
context:
space:
mode:
authorDruid520 <r.ustydruid520@proton.me>2026-08-11 18:17:50 -0700
committerDruid520 <r.ustydruid520@proton.me>2026-08-11 18:17:50 -0700
commitecf536bf718e97283e68512cd8aaefb260d04634 (patch)
tree5bac7daa9e54b8b1321a33ec714840b7df48c1ff /mp.sh
ADD: v1
Diffstat (limited to 'mp.sh')
-rwxr-xr-xmp.sh84
1 files changed, 84 insertions, 0 deletions
diff --git a/mp.sh b/mp.sh new file mode 100755 index 0000000..1f924a7 --- /dev/null +++ b/mp.sh
@@ -0,0 +1,84 @@
1#!/usr/bin/env sh
2set -e
3
4war() {
5 echo "warn: $1" >&2
6}
7die() {
8 echo "err: $1" >&2
9 exit 1
10}
11ok() {
12 echo "ok: $1" >&2
13}
14
15if command -v doas >/dev/null 2>&1; then
16 rx() {
17 doas "$@"
18 }
19 return
20elif command -v sudo >/dev/null 2>&1; then
21 rx() {
22 sudo "$@"
23 }
24 return
25else
26 die "permission elevator not found."
27fi
28
29wd="/usr/local/mp"
30ports="/usr/local/ports/ports"
31ports_repo="https://codeberg.org/Druid520/ports.git"
32status="$wd/status"
33_installed="$wd/installed"
34installed="$wd/extinstalled"
35
36cfg="/etc/mp.conf"
37if [ -f "$cfg" ]; then
38 . "$cfg"
39else
40 war "cfg not found, creating one."
41 rx touch "$cfg"
42fi
43
44mp_add() {
45 rx cp -r "$ports/$1" "$wd/$1"
46 (cd "$wd/$1" && . pkg.conf && rx sh ./add.sh && rx echo "$pkg_name" >> "$_installed" && rx echo "$pkg_name-$pkg_ver ($pkg_license)" >> "$installed")
47}
48mp_del() {
49 (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")
50 rx rm -rf "$wd/$1"
51}
52mp_upd() {
53 (cd "$ports" && rx git pull)
54 if [ "$1" = "*" ]; then
55 for pkg in $(cat "$_installed"); do
56 (cd "$wd/$pkg" && . pkg.conf && rx sh ./del.sh && rx sh ./add.sh)
57 done
58 return
59 fi
60 (cd "$wd/$1" && . pkg.conf && rx sh ./del.sh && rx sh ./add.sh)
61}
62mp_init() {
63 if [ -f "$status" ]; then
64 return
65 fi
66
67 war "uninitialized, initializing."
68 rx git clone "$ports_repo" "$ports" --depth 1
69 rx mkdir -p "$wd"
70 rx touch "$installed" "$_installed" "$status"
71}
72
73mp_init
74if [ $# -ne 2 ]; then
75 die "bad usage. usage: mp <a/d/u> <pkg>."
76elif [ "$1" = "a" ]; then
77 mp_add "$2"
78elif [ "$1" = "d" ]; then
79 mp_del "$2"
80elif [ "$1" = "u" ]; then
81 mp_upd "$2"
82else
83 die "bad usage. usage: mp <a/d/u> <pkg>."
84fi