summaryrefslogtreecommitdiff
path: root/libre-testing/libretools/libretools.install
diff options
context:
space:
mode:
Diffstat (limited to 'libre-testing/libretools/libretools.install')
-rw-r--r--libre-testing/libretools/libretools.install72
1 files changed, 72 insertions, 0 deletions
diff --git a/libre-testing/libretools/libretools.install b/libre-testing/libretools/libretools.install
new file mode 100644
index 000000000..35edf68c7
--- /dev/null
+++ b/libre-testing/libretools/libretools.install
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+_edit_code=" 'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'"
+_edit_cmnt='#%s # commented out by the libretools post_install script'
+
+_add_cmnt='# The following line is added by the libretools post_install script'
+_add_code='DLAGENTS+=({https,libre}'\''::/usr/bin/librefetch -p "$BUILDFILE" -- %u %o'\'')'
+
+# These lines were installed by previous versions of this script
+_old_code=(
+ '[[ ! -x /usr/bin/librefetch ]] || DLAGENTS+=("libre::/usr/bin/librefetch -p \"\$BUILDFILE\" %u %o")'
+ '[[ ! -x /usr/bin/librefetch ]] || DLAGENTS+=({https,libre}"::/usr/bin/librefetch -p \"\$BUILDFILE\" -- %u %o")'
+ 'DLAGENTS+=({https,libre}"::/usr/bin/librefetch -p $(printf "%q" "$BUILDFILE") -- %u %o")'
+)
+
+# has_line $line
+has_line() { grep -Fxq -- "$1" etc/makepkg.conf; }
+# add_line $line
+add_line() { printf '%s\n' "$1" >> etc/makepkg.conf; }
+# del_line $line
+del_line() {
+ local lineno=($(grep -Fxn -- "$1" etc/makepkg.conf | cut -d: -f1))
+ if [[ "${#lineno[@]}" -gt 0 ]]; then
+ sed -i "$(printf '%dd;' "${lineno[@]}")" etc/makepkg.conf;
+ fi
+}
+# rep_line $orig $replacement_bre
+rep_line() {
+ local lineno=($(grep -Fxn -- "$1" etc/makepkg.conf | cut -d: -f1))
+ if [[ "${#lineno[@]}" == 1 ]]; then
+ sed -i "${lineno}s|.*|${2//|/\\|}|" etc/makepkg.conf;
+ fi
+}
+
+# arg 1: the new package version
+post_install() {
+ if grep -q 'librefetch' etc/makepkg.conf; then
+ libremessages msg2 "libretools: librefetch is already in /etc/makepkg.conf"
+ local line del=false
+ for line in "${_old_code[@]}"; do
+ if has_line "$line"; then
+ pre_remove
+ post_install
+ return $?
+ fi
+ done
+ else
+ libremessages msg2 "libretools: adding librefetch to /etc/makepkg.conf"
+ rep_line "$_edit_code" "$(printf "$_edit_cmnt" '&')"
+ add_line "$_add_cmnt"
+ add_line "$_add_code"
+ fi
+}
+
+## arg 1: the new package version
+## arg 2: the old package version
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ libremessages msg2 "libretools: removing librefetch from /etc/makepkg.conf"
+
+ rep_line "$(printf "$_edit_cmnt" "$_edit_code")" "$_edit_code"
+ del_line "$_add_cmnt"
+ del_line "$_add_code"
+
+ local line
+ for line in "${_old_code[@]}"; do
+ del_line "$line"
+ done
+}