From a3a2d14ecc5b0e50efa15c67cfa46e0cb917b02d Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 27 May 2022 12:57:12 +0200 Subject: [PATCH] fix verify-vendor if go.mod does not contain replace rules Before this patch, if the go.mod did not contain a replace rule, jq would fail (Cannot iterate over null), and Bash would produce an error when trying to add an empty `$key` to `map_requires`: make verify-vendor + verify-vendor jq: error (at :581): Cannot iterate over null (null) /go/src/github.com/containerd/containerd//script/verify-go-modules.sh: line 44: map_replaces_1[$key]: bad array subscript make: *** [Makefile:435: verify-vendor] Error 1 Signed-off-by: Sebastiaan van Stijn --- script/verify-go-modules.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/script/verify-go-modules.sh b/script/verify-go-modules.sh index 62e8db585..0038fba95 100755 --- a/script/verify-go-modules.sh +++ b/script/verify-go-modules.sh @@ -41,8 +41,8 @@ do done<<<$(go mod edit -json | jq -r '.Require[] | .Path + " # " + .Version') while IFS='#' read -r key value do - map_replaces_1[$key]="$value" -done<<<$(go mod edit -json | jq -r '.Replace[] | .Old.Path + " # " + .New.Path + " : " + .New.Version') + [ "$key" = "" ] || map_replaces_1[$key]="$value" +done<<<$(go mod edit -json | jq -r 'try .Replace[] | .Old.Path + " # " + .New.Path + " : " + .New.Version') popd > /dev/null # Load the requires and replaces section in the other go.mod file @@ -51,12 +51,12 @@ declare -A map_replaces_2 pushd "${ROOT}/$1" > /dev/null while IFS='#' read -r key value do - map_requires_2[$key]="$value" + [ "$key" = "" ] || map_requires_2[$key]="$value" done<<<$(go mod edit -json | jq -r '.Require[] | .Path + " # " + .Version') while IFS='#' read -r key value do map_replaces_2[$key]="$value" -done<<<$(go mod edit -json | jq -r '.Replace[] | .Old.Path + " # " + .New.Path + " : " + .New.Version') +done<<<$(go mod edit -json | jq -r 'try .Replace[] | .Old.Path + " # " + .New.Path + " : " + .New.Version') popd > /dev/null # signal for errors later