tazpkg diff modules/remove @ rev 844

Finish modularization. Beta release: still have few FIXMEs and TODOs.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Mon Oct 05 03:53:47 2015 +0300 (2015-10-05)
parents a02e36d44d06
children b6daeaa95431
line diff
     1.1 --- a/modules/remove	Fri Aug 28 16:10:34 2015 +0300
     1.2 +++ b/modules/remove	Mon Oct 05 03:53:47 2015 +0300
     1.3 @@ -45,6 +45,39 @@
     1.4  im() { tty -s; }
     1.5  
     1.6  
     1.7 +# Block of receipt function callers
     1.8 +# Why? "Bad" receipt sourcing can redefine some vital TazPkg variables.
     1.9 +# Few receipts function should be patched now.
    1.10 +
    1.11 +# Input: $1 = path to the receipt to be processed
    1.12 +
    1.13 +call_pre_remove() {
    1.14 +	local tmp
    1.15 +	if grep -q '^pre_remove()' "$1"; then
    1.16 +		action 'Execute pre-remove commands...'
    1.17 +		tmp="$(mktemp)"
    1.18 +		cp "$1" "$tmp"
    1.19 +		sed -i 's|$1/*$INSTALLED|$INSTALLED|g' "$tmp"
    1.20 +		( . "$tmp"; pre_remove "$root" )
    1.21 +		status
    1.22 +		rm "$tmp"
    1.23 +	fi
    1.24 +}
    1.25 +
    1.26 +call_post_remove() {
    1.27 +	local tmp
    1.28 +	if grep -q '^post_remove()' "$1"; then
    1.29 +		action 'Execute post-remove commands...'
    1.30 +		tmp="$(mktemp)"
    1.31 +		cp "$1" "$tmp"
    1.32 +		sed -i 's|$1/*$INSTALLED|$INSTALLED|g' "$tmp"
    1.33 +		( . "$tmp"; post_remove "$root" )
    1.34 +		status
    1.35 +		rm "$tmp"
    1.36 +	fi
    1.37 +}
    1.38 +
    1.39 +
    1.40  
    1.41  
    1.42  PACKAGE="$1"
    1.43 @@ -88,11 +121,8 @@
    1.44  title 'Removing package "%s"' "$PACKAGE"
    1.45  
    1.46  # [1/4] Pre-remove commands
    1.47 -if grep -q ^pre_remove "$INSTALLED/$PACKAGE/receipt"; then
    1.48 -	action 'Execution of pre-remove commands...'
    1.49 -	pre_remove
    1.50 -	status
    1.51 -fi
    1.52 +call_pre_remove "$INSTALLED/$PACKAGE/receipt"
    1.53 +
    1.54  
    1.55  # [2/4] Removing files
    1.56  action 'Removing all files installed...'
    1.57 @@ -115,11 +145,7 @@
    1.58  status
    1.59  
    1.60  # [3/4] Post-remove commands
    1.61 -if grep -q ^post_remove "$INSTALLED/$PACKAGE/receipt"; then
    1.62 -	action 'Execution of post-remove commands...'
    1.63 -	post_remove
    1.64 -	status
    1.65 -fi
    1.66 +call_post_remove "$INSTALLED/$PACKAGE/receipt"
    1.67  
    1.68  # [4/4] Remove package receipt and remove it from databases
    1.69  action 'Removing package receipt...'