[arch-projects] [devtools][PATCH 12/13] Make slightly more involved changes to make shellcheck happy.

Luke Shumaker lukeshu at parabola.nu
Fri May 5 22:41:09 UTC 2017


 - Use `read -r` instead of other forms of read or looping
 - Use arrays instead of strings with whitespaces.
 - In one instance, use ${var%%.*} instead of $(echo $var|cut -f. -d1)
---
 archrelease.in  |  4 ++--
 commitpkg.in    |  4 ++--
 find-libdeps.in |  2 +-
 finddeps.in     |  2 +-
 lddd.in         |  4 ++--
 lib/common.sh   | 15 +++++++++------
 rebuildpkgs.in  |  6 +++---
 7 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/archrelease.in b/archrelease.in
index 2ba9d48..6b4f1be 100644
--- a/archrelease.in
+++ b/archrelease.in
@@ -38,7 +38,7 @@ trunk=${PWD##*/}
 # Normally this should be trunk, but it may be something
 # such as 'gnome-unstable'
 IFS='/' read -r -d '' -a parts <<< "$PWD"
-if [[ "${parts[@]:(-2):1}" == "repos" ]]; then
+if [[ "${parts[*]:(-2):1}" == "repos" ]]; then
 	die 'archrelease: Should not be in repos dir (try from trunk/)'
 fi
 unset parts
@@ -67,7 +67,7 @@ for tag in "$@"; do
 		while read -r file; do
 			trash+=("repos/$tag/$file")
 		done < <(svn ls "repos/$tag")
-		[[ $trash ]] && svn rm -q "${trash[@]/%/@}"
+		[[ ${#trash[@]} == 0 ]] || svn rm -q "${trash[@]/%/@}"
 	else
 		mkdir -p "repos/$tag"
 		svn add --parents -q "repos/$tag"
diff --git a/commitpkg.in b/commitpkg.in
index 0482170..90210e5 100644
--- a/commitpkg.in
+++ b/commitpkg.in
@@ -148,9 +148,9 @@ for _arch in "${arch[@]}"; do
 		if [[ ! -f $sigfile ]]; then
 			msg "Signing package %s..." "${pkgfile}"
 			if [[ -n $GPGKEY ]]; then
-				SIGNWITHKEY="-u ${GPGKEY}"
+				SIGNWITHKEY=(-u "${GPGKEY}")
 			fi
-			gpg --detach-sign --use-agent --no-armor ${SIGNWITHKEY} "${pkgfile}" || die
+			gpg --detach-sign --use-agent --no-armor "${SIGNWITHKEY[@]}" "${pkgfile}" || die
 		fi
 		if ! gpg --verify "$sigfile" >/dev/null 2>&1; then
 			die "Signature %s.sig is incorrect!" "$pkgfile"
diff --git a/find-libdeps.in b/find-libdeps.in
index 04adebf..1fb1fdf 100644
--- a/find-libdeps.in
+++ b/find-libdeps.in
@@ -60,7 +60,7 @@ case $script_mode in
   provides) find_args=(-name '*.so*');;
 esac
 
-find . -type f "${find_args[@]}" | while read filename; do
+find . -type f "${find_args[@]}" | while read -r filename; do
 	if [[ $script_mode = "provides" ]]; then
 		# ignore if we don't have a shared object
 		if ! LC_ALL=C readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then
diff --git a/finddeps.in b/finddeps.in
index c71f151..80774bb 100644
--- a/finddeps.in
+++ b/finddeps.in
@@ -17,7 +17,7 @@ if [[ -z $match ]]; then
 	exit 1
 fi
 
-find . -type d | while read d; do
+find . -type d | while read -r d; do
 	if [[ -f "$d/PKGBUILD" ]]; then
 		pkgname=() depends=() makedepends=() optdepends=()
 		. "$d/PKGBUILD"
diff --git a/lddd.in b/lddd.in
index d83c3e6..908923b 100644
--- a/lddd.in
+++ b/lddd.in
@@ -40,9 +40,9 @@ for tree in $PATH $libdirs $extras; do
 done
 grep '^/' "$TEMPDIR/raw.txt" | sed -e 's/://g' >> "$TEMPDIR/affected-files.txt"
 # invoke pacman
-for i in $(cat $TEMPDIR/affected-files.txt); do
+while read -r i; do
 	pacman -Qo "$i" | awk '{print $4,$5}' >> "$TEMPDIR/pacman.txt"
-done
+done < "$TEMPDIR/affected-files.txt"
 # clean list
 sort -u "$TEMPDIR/pacman.txt" >> "$TEMPDIR/possible-rebuilds.txt"
 
diff --git a/lib/common.sh b/lib/common.sh
index 4a15d9a..ad6194d 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -123,24 +123,27 @@ in_array() {
 ##
 get_full_version() {
 	# set defaults if they weren't specified in buildfile
-	pkgbase=${pkgbase:-${pkgname[0]}}
-	epoch=${epoch:-0}
+	local pkgbase=${pkgbase:-${pkgname[0]}}
+	local epoch=${epoch:-0}
+	local pkgver=${pkgver}
+	local pkgrel=${pkgrel}
 	if [[ -z $1 ]]; then
 		if (( ! epoch )); then
-			echo $pkgver-$pkgrel
+			printf '%s\n' "$pkgver-$pkgrel"
 		else
-			echo $epoch:$pkgver-$pkgrel
+			printf '%s\n' "$epoch:$pkgver-$pkgrel"
 		fi
 	else
+		local pkgver_override='' pkgrel_override='' epoch_override=''
 		for i in pkgver pkgrel epoch; do
 			local indirect="${i}_override"
 			eval "$(declare -f "package_$1" | sed -n "s/\(^[[:space:]]*$i=\)/${i}_override=/p")"
 			[[ -z ${!indirect} ]] && eval ${indirect}=\"${!i}\"
 		done
 		if (( ! epoch_override )); then
-			echo $pkgver_override-$pkgrel_override
+			printf '%s\n' "$pkgver_override-$pkgrel_override"
 		else
-			echo $epoch_override:$pkgver_override-$pkgrel_override
+			printf '%s\n' "$epoch_override:$pkgver_override-$pkgrel_override"
 		fi
 	fi
 }
diff --git a/rebuildpkgs.in b/rebuildpkgs.in
index be3fd33..a0e8250 100644
--- a/rebuildpkgs.in
+++ b/rebuildpkgs.in
@@ -40,7 +40,7 @@ bump_pkgrel() {
 	oldrel=$(grep 'pkgrel=' $pbuild | cut -d= -f2)
 
 	#remove decimals
-	rel=$(echo $oldrel | cut -d. -f1)
+	rel=${oldrel%%.*}
 
 	newrel=$((rel + 1))
 
@@ -54,7 +54,7 @@ pkg_from_pkgbuild() {
 }
 
 chrootdir="$1"; shift
-pkgs="$@"
+pkgs=("$@")
 
 SVNPATH='svn+ssh://repos.archlinux.org/srv/repos/svn-packages/svn'
 
@@ -67,7 +67,7 @@ cd "$REBUILD_ROOT"
 /usr/bin/svn co -N $SVNPATH
 
 FAILED=""
-for pkg in $pkgs; do
+for pkg in "${pkgs[@]}"; do
 	cd "$REBUILD_ROOT/svn-packages"
 
 	msg2 "Building '%s'" "$pkg"
-- 
2.12.2


More information about the arch-projects mailing list