From 8f24dd162f5344fe897f96b2b333c894918ab008 Mon Sep 17 00:00:00 2001 From: zowoq <59103226+zowoq@users.noreply.github.com> Date: Sun, 2 Jan 2022 08:13:51 +1000 Subject: [PATCH 1/2] terraform-providers: update-provider scripts - shellcheck / shfmt --- .../terraform-providers/update-all-providers | 8 +- .../terraform-providers/update-provider | 82 ++++++++++--------- 2 files changed, 46 insertions(+), 44 deletions(-) diff --git a/pkgs/applications/networking/cluster/terraform-providers/update-all-providers b/pkgs/applications/networking/cluster/terraform-providers/update-all-providers index 052c56742c5f..a072e6cd4172 100755 --- a/pkgs/applications/networking/cluster/terraform-providers/update-all-providers +++ b/pkgs/applications/networking/cluster/terraform-providers/update-all-providers @@ -14,9 +14,9 @@ providers=$( ) echo "Will update providers:" -echo "$providers" +echo "${providers}" -for provider in $providers; do - echo "Updating $provider" - ./update-provider "$provider" +for provider in ${providers}; do + echo "Updating ${provider}" + ./update-provider "${provider}" done diff --git a/pkgs/applications/networking/cluster/terraform-providers/update-provider b/pkgs/applications/networking/cluster/terraform-providers/update-provider index 03d92452ebc2..d5f0bbc3ef14 100755 --- a/pkgs/applications/networking/cluster/terraform-providers/update-provider +++ b/pkgs/applications/networking/cluster/terraform-providers/update-provider @@ -7,6 +7,7 @@ # provider source address. # set -euo pipefail +shopt -s inherit_errexit show_usage() { cat < read_attr() { - jq -r ".\"$provider_name\".\"$1\"" providers.json + jq -r ".\"${provider_name}\".\"$1\"" providers.json } # Usage: update_attr update_attr() { - if [[ "$2" == "null" ]]; then - jq -S ".\"$provider_name\".\"$1\" = null" providers.json | sponge providers.json + if [[ $2 == "null" ]]; then + jq -S ".\"${provider_name}\".\"$1\" = null" providers.json | sponge providers.json else - jq -S ".\"$provider_name\".\"$1\" = \"$2\"" providers.json | sponge providers.json + jq -S ".\"${provider_name}\".\"$1\" = \"$2\"" providers.json | sponge providers.json fi } @@ -96,23 +98,23 @@ prefetch_github() { local owner=$1 local repo=$2 local rev=$3 - nix-prefetch-url --unpack "https://github.com/$owner/$repo/archive/$rev.tar.gz" + nix-prefetch-url --unpack "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz" } old_source_address="$(read_attr provider-source-address)" old_vendor_sha256=$(read_attr vendorSha256) old_version=$(read_attr version) -if [[ $provider =~ ^[^/]+/[^/]+$ ]]; then - source_address=registry.terraform.io/$provider +if [[ ${provider} =~ ^[^/]+/[^/]+$ ]]; then + source_address=registry.terraform.io/${provider} else - source_address=$old_source_address + source_address=${old_source_address} fi -if [[ "$source_address" == "null" ]]; then - echo "Could not find the source address for provider: $provider" +if [[ ${source_address} == "null" ]]; then + echo "Could not find the source address for provider: ${provider}" exit 1 fi -update_attr "provider-source-address" "$source_address" +update_attr "provider-source-address" "${source_address}" # The provider source address (used inside Terraform `required_providers` block) is # used to compute the registry API endpoint @@ -122,39 +124,39 @@ update_attr "provider-source-address" "$source_address" # registry.terraform.io/v1/providers/hashicorp/aws (provider URL for the JSON API) registry_response=$(curl -s https://"${source_address/\///v1/providers/}") -version="$(jq -r '.version' <<< "$registry_response")" -if [[ "$old_version" = "$version" && "$force" != 1 && -z "$vendorSha256" && "$old_vendor_sha256" != "$vendorSha256" ]]; then - echo "$provider_name is already at version $version" +version="$(jq -r '.version' <<<"${registry_response}")" +if [[ ${old_version} == "${version}" && ${force} != 1 && -z ${vendorSha256} && ${old_vendor_sha256} != "${vendorSha256}" ]]; then + echo "${provider_name} is already at version ${version}" exit fi -update_attr version "$version" +update_attr version "${version}" -provider_source_url="$(jq -r '.source' <<< "$registry_response")" +provider_source_url="$(jq -r '.source' <<<"${registry_response}")" -org="$(echo "$provider_source_url" | cut -d '/' -f 4)" -update_attr owner "$org" -repo="$(echo "$provider_source_url" | cut -d '/' -f 5)" -update_attr repo "$repo" -rev="$(jq -r '.tag' <<< "$registry_response")" -update_attr rev "$rev" -sha256=$(prefetch_github "$org" "$repo" "$rev") -update_attr sha256 "$sha256" +org="$(echo "${provider_source_url}" | cut -d '/' -f 4)" +update_attr owner "${org}" +repo="$(echo "${provider_source_url}" | cut -d '/' -f 5)" +update_attr repo "${repo}" +rev="$(jq -r '.tag' <<<"${registry_response}")" +update_attr rev "${rev}" +sha256=$(prefetch_github "${org}" "${repo}" "${rev}") +update_attr sha256 "${sha256}" repo_root=$(git rev-parse --show-toplevel) -if [[ -z "$vendorSha256" ]]; then - if [[ "$old_vendor_sha256" == null ]]; then +if [[ -z ${vendorSha256} ]]; then + if [[ ${old_vendor_sha256} == null ]]; then vendorSha256=null - elif [[ -n "$old_vendor_sha256" || "$vendor" = 1 ]]; then + elif [[ -n ${old_vendor_sha256} || ${vendor} == 1 ]]; then echo "=== Calculating vendorSha256 ===" update_attr vendorSha256 "0000000000000000000000000000000000000000000000000000000000000000" # Hackish way to find out the desired sha256. First build, then extract the # error message from the logs. set +e - nix-build --no-out-link "$repo_root" -A "terraform-providers.$provider_name.go-modules" 2>vendor_log.txt + nix-build --no-out-link "${repo_root}" -A "terraform-providers.${provider_name}.go-modules" 2>vendor_log.txt set -e - logs=$(< vendor_log.txt) - if ! [[ $logs =~ got:\ +([^\ ]+) ]]; then + logs=$( Date: Sun, 2 Jan 2022 08:19:54 +1000 Subject: [PATCH 2/2] terraform-providers: update-provider scripts - use nix-prefetch for vendorSha256 - use no-out-link for nix-build - fix nixpkgs import path --- .../terraform-providers/update-all-providers | 2 +- .../terraform-providers/update-provider | 21 +++---------------- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/pkgs/applications/networking/cluster/terraform-providers/update-all-providers b/pkgs/applications/networking/cluster/terraform-providers/update-all-providers index a072e6cd4172..46f0ce1be561 100755 --- a/pkgs/applications/networking/cluster/terraform-providers/update-all-providers +++ b/pkgs/applications/networking/cluster/terraform-providers/update-all-providers @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#! nix-shell -i bash -p jq +#! nix-shell -I nixpkgs=../../../../.. -i bash -p jq # shellcheck shell=bash # Update all providers which have specified provider source address diff --git a/pkgs/applications/networking/cluster/terraform-providers/update-provider b/pkgs/applications/networking/cluster/terraform-providers/update-provider index d5f0bbc3ef14..47206914f7a9 100755 --- a/pkgs/applications/networking/cluster/terraform-providers/update-provider +++ b/pkgs/applications/networking/cluster/terraform-providers/update-provider @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#! nix-shell -I nixpkgs=../../../../.. -i bash -p coreutils curl jq moreutils nix +#! nix-shell -I nixpkgs=../../../../.. -i bash -p coreutils curl jq moreutils nix nix-prefetch # shellcheck shell=bash # vim: ft=sh # @@ -149,22 +149,7 @@ if [[ -z ${vendorSha256} ]]; then vendorSha256=null elif [[ -n ${old_vendor_sha256} || ${vendor} == 1 ]]; then echo "=== Calculating vendorSha256 ===" - update_attr vendorSha256 "0000000000000000000000000000000000000000000000000000000000000000" - # Hackish way to find out the desired sha256. First build, then extract the - # error message from the logs. - set +e - nix-build --no-out-link "${repo_root}" -A "terraform-providers.${provider_name}.go-modules" 2>vendor_log.txt - set -e - logs=$(