-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathupdate_packages
executable file
·81 lines (61 loc) · 1.75 KB
/
update_packages
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
#!/usr/bin/env bash
declare -A COLORS=([RED]='\033[31m'
[GREEN]='\033[32m'
[YELLOW]='\033[33m'
[BLUE]='\033[34m'
[RESET]='\033[0m')
msgerr() {
printf "${COLORS[RED]}ERROR:${COLORS[RESET]} %s\n" "${1}" >&2
}
msg() {
printf "${COLORS[GREEN]}==>${COLORS[RESET]} %s\n" "${1}"
}
msgwarn() {
printf "${COLORS[YELLOW]}WARNING:${COLORS[RESET]} %s\n" "${1}" >&2
}
msgfolders() {
printf " ${COLORS[BLUE]}-> %s (%s)\n" "${1}" "${2}"
}
function _update_packages() {
folders=()
for entry in */; do
if [[ -d "${entry}" ]]; then
folders+=("${entry%/}")
fi
done
if [ "${#folders[@]}" -eq 0 ]; then
msgerr "Empty folders.";
exit 1
fi
IFS=$'\n' sorted_folders=($(printf "%s\n" "${folders[@]}" | sort))
unset IFS
while true; do
msg "Select folder:"
for i in "${!sorted_folders[@]}"; do
msgfolders "$((i + 1))" "${sorted_folders[$i]}"
done
read -p "$(msg "")" choice
if [[ "${choice}" =~ ^[0-9]+$ ]] && (( choice >= 1 && choice <= ${#sorted_folders[@]} )); then
break
else
msgwarn "Invalid choice."
fi
done
selected_folder="${sorted_folders[$((choice - 1))]}"
if [ ! -d "${selected_folder}/x86_64/" ]; then
msgerr "Directory '${selected_folder}/x86_64' does not exist";
exit 1
fi
cd "${selected_folder}/x86_64/" >/dev/null
rm -rf "${selected_folder}"* *".sig"
for pkg in *".pkg.tar.zst"; do
gpg --yes --detach-sign "${pkg}"
done
repo-add "${selected_folder}.db.tar.gz" *".pkg.tar.zst" || {
msgerr "Failed to add packages.";
exit 1
}
cd - >/dev/null
exit 0
}
_update_packages