blob: 1f924a76ab27e53042dfa03d91f0aa497a9d9ce4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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 <a/d/u> <pkg>."
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 <a/d/u> <pkg>."
fi
|