From 67ac799d4964a75f6c302ec787cceae01781eefd Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Mon, 2 Oct 2023 05:21:20 +0100
Subject: update/project/trees: simplified error handling

Signed-off-by: Leah Rowe <leah@libreboot.org>
---
 script/update/project/trees | 46 +++++++++++++--------------------------------
 1 file changed, 13 insertions(+), 33 deletions(-)

(limited to 'script/update')

diff --git a/script/update/project/trees b/script/update/project/trees
index c5b40dc0..f030c8dc 100755
--- a/script/update/project/trees
+++ b/script/update/project/trees
@@ -11,7 +11,7 @@ set -u -e
 . "include/git.sh"
 . "include/option.sh"
 
-eval "$(setvars "" _target tree rev project cfgsdir)"
+eval "$(setvars "" _target tree rev project cfgsdir _xm)"
 
 main()
 {
@@ -55,10 +55,10 @@ fetch_config()
 	_target=${1}
 
 	while true; do
-		rev="undefined"
-		tree="undefined"
+		eval "$(setvars "" rev tree)"
+		_xm="fetch_config ${project}/${_target}"
 
-		check_config_for_target "${_target}" || return 1
+		check_config_for_target "${_target}"
 
 		# This is to override $rev and $tree
 		. "${cfgsdir}/${_target}/target.cfg" || \
@@ -67,42 +67,22 @@ fetch_config()
 		if [ "${_target}" != "${tree}" ]; then
 			_target="${tree}"
 			continue
-		elif [ "${tree}" = "undefined" ]; then
-			printf "ERROR (fetch_config): download/%s:" \
-			    "${project}" 1>&2
-			printf " tree name undefined for '%s\n'" \
-			    "${_target}" 1>&2
-			return 1
-		elif [ "${rev}" = "undefined" ]; then
-			printf "ERROR (fetch_config): download/%s:" \
-			    "${project}" 1>&2
-			printf " commit ID undefined for '%s'\n" \
-			    "${_target}" 1>&2
-			return 1
-		else
-			break
 		fi
+		[ -z ${tree} ] && err "${_xm}: tree undefined"
+		[ -z ${rev} ] && err "${_xm}: revision undefined"
+		break
 	done
 }
 
 check_config_for_target()
 {
-	_target=${1}
+	[ -f "${cfgsdir}/${1}/target.cfg" ] || \
+		err "${_xm} check: target.cfg does not exist"
 
-	if [ ! -f "${cfgsdir}/${_target}/target.cfg" ]; then
-		printf "ERROR: download/%s: target.cfg does not" \
-		    "${project}" 1>&2
-		printf " exist for '%s'\n" "${_target}" 1>&2
-		return 1
-	elif [ -f "${cfgsdir}/${_target}/seen" ]; then
-		printf "ERROR: download/%s: logical loop:" "${project}" 1>&2
-		printf " '%s' target.cfg refers to another tree," "${_target}" \
-		    1>&2
-		printf " which ultimately refers back to '%s'." "${_target}" \
-		    1>&2
-		return 1
-	fi
-	x_ touch "${cfgsdir}/${_target}/seen"
+	[ -f "${cfgsdir}/${1}/seen" ] && \
+		err "${_xm} check: infinite loop in tree definitions"
+
+	x_ touch "${cfgsdir}/${1}/seen"
 }
 
 fetch_from_upstream()
-- 
cgit v1.2.1