From f68969029bbc59637e3c9eac30d1ee2fefc4d8d9 Mon Sep 17 00:00:00 2001
From: Luke Shumaker <LukeShu@sbcglobal.net>
Date: Sat, 8 Jun 2013 14:30:57 -0600
Subject: aur: cleanup, fix

---
 src/aur | 74 +++++++++++++++++++++++++++++++++++++++--------------------------
 1 file changed, 45 insertions(+), 29 deletions(-)

(limited to 'src')

diff --git a/src/aur b/src/aur
index 86b93e6..e4c535c 100755
--- a/src/aur
+++ b/src/aur
@@ -47,51 +47,66 @@ main() {
 	load_files libretools
 	check_vars libretools DIFFTOOL || exit 1
 
+	local startdir="$(pwd)"
 	local missing_deps=()
 	local ret=0
-	for _pkg in "$@"; do
-
-		# Remove the version
-		_pkg="${_pkg%%[<>=]*}"
-
-		if [[ -f "${_pkg}/PKGBUILD" ]]; then
-			warning "${_pkg} already existed."
+	local pkg
+	local copy_new
+	local copy_old
+	for pkg in "$@"; do
+		pkg="${pkg%%[<>=]*}" # remove the version
+		msg "Processing package: %s" "$pkg"
+		copy_new="$startdir/$pkg"
+		copy_old=
+
+		if [[ -f "${copy_new}/PKGBUILD" ]]; then
+			warning "%s already exists, will compare with new version." "$pkg"
 
 			# Store our copy of the PKGBUILD dir
-			_diff="${PWD}/${_pkg}"
-			pushd $(mktemp --tmpdir -d ${_pkg}.XXXX) &>/dev/null
-			msg2 "Downloading PKGBUILD into ${PWD} for diff"
+			copy_old=$copy_new
+			copy_new="$(mktemp --tmpdir -d aur-${pkg}.new.XXXX)/$pkg"
+			cd "${copy_new%/*}"
 		fi
 
-		msg "Downloading $_pkg..."
-		local url=https://aur.archlinux.org/packages/${_pkg:0:2}/${_pkg}/$_pkg.tar.gz
+		msg2 "Downloading"
+		local url="https://aur.archlinux.org/packages/${pkg:0:2}/$pkg/$pkg.tar.gz"
 		set -o pipefail
-		if ! wget -O- "$url" | bsdtar xf -; then
+		if ! wget -O- -q "$url" | bsdtar xf -; then
 			ret=$(($ret|2))
-			error "Couldn't get $_pkg"
+			error "Couldn't get %s" "$pkg"
 			continue
 		fi
 		set +o pipefail
 
-		pushd $_pkg &>/dev/null
-
-		if [[ ! -z $_diff ]]; then
+		if [[ -n $copy_old ]]; then
 			msg2 "Diffing files"
+			cd "$copy_new"
+
 			# Diff all files with our difftool
+			local diffed=false
 			for file in *; do
-				"${DIFFTOOL}" "${_diff}/${file}" "${file}"
+				if ! cmp -s "${copy_old}/${file}" "${copy_new}/${file}" ; then
+					warning "%s != %s" "${copy_old}/${file}" "${copy_new}/${file}"
+					diffed=true
+					"${DIFFTOOL}" "${copy_old}/${file}" "${copy_new}/${file}"
+				fi
 			done
-			read -p "Press enter to continue."
+			if $diffed; then
+				read -p "Press enter to continue."
+			fi
 
 			# Go back to our copy to continue working
-			pushd "${_diff}" &>/dev/null
+			cd "$copy_old"
+			rm -rf -- "${copy_new%/*}"
+		else
+			cd "$copy_new"
 		fi
 
 		. PKGBUILD
 
 		################################################################
 
-		pkgbuild-check-nonfree
+		pkgbuild-check-nonfree -c
 		case $? in
 			0) :;;
 			15) warning "This PKGBUILD links to known unfree packages";;
@@ -103,7 +118,7 @@ main() {
 		local s=0
 		pkgbuild-check-licenses || s=$?
 		for i in 1 2 4; do
-			if [[ $s -eq $(($s & $i)) ]]; then
+			if [[ $i -eq $(($s & $i)) ]]; then
 				case $i in
 					1) warning "pkgbuild-check-licenses encountered an error";;
 					2) warning "This PKGBUILD has an uncommon license";;
@@ -115,31 +130,32 @@ main() {
 
 		################################################################
 
-		_deps=(
+		local _deps=(
 			# depends
 			"${depends[@]}" "${makedepends[@]}" "${checkdepends[@]}"
 			# mksource depends
 			"${mkdepends[@]}" "${mkmakedepends[@]}" "${mkcheckdepends[@]}"
 		)
+		local _dep
+		msg2 "Checking dependencies"
 		for _dep in "${_deps[@]}"; do
 			_dep=${_dep/[<>=]*/}
 			if ! is_built $_dep; then
 				if ! pacman -Sddp "$_dep" &>/dev/null ; then
-					msg2 "$_dep will be get from AUR"
+					plain "%s: will be downloaded from AUR" "$_dep"
 					missing_deps+=($_dep)
 				fi
 			else
-				msg2 "$_dep is on repos"
+				plain "%s: is on repos" "$_dep"
 			fi
 		done
-
-		popd &>/dev/null
+		cd "$startdir"
 	done
 
 	if [[ ${#missing_deps[*]} -gt 0 ]]; then
-		msg2 "Retrieving missing deps: %s" "${missing_deps[*]}"
+		msg "Retrieving missing deps: %s" "${missing_deps[*]}"
 		"$0" "${missing_deps[@]}"
-		ret=$(($ret|2))
+		ret=$(($ret|$?))
 	fi
 	return $ret;
 }
-- 
cgit v1.2.3-2-g168b