terraform-providers: wrap mkProvider in lib.makeOverridable (#158618)

This allows for an easier interface for doing things like overriding
the version of a specific Terraform provider, which is a fairly common
use-case.
This commit is contained in:
Vincent Ambo
2022-02-08 17:41:03 +01:00
committed by GitHub
parent 819bf6b10a
commit 2fcfc72e68
@@ -10,42 +10,42 @@ let
# Our generic constructor to build new providers.
#
# Is designed to combine with the terraform.withPlugins implementation.
mkProvider =
{ owner
, repo
, rev
, version
, sha256
, vendorSha256 ? throw "vendorSha256 missing: please use `buildGoModule`" /* added 2022/01 */
, deleteVendor ? false
, proxyVendor ? false
, # Looks like "registry.terraform.io/vancluever/acme"
provider-source-address
}@attrs:
buildGoModule {
pname = repo;
inherit vendorSha256 version deleteVendor proxyVendor;
subPackages = [ "." ];
doCheck = false;
# https://github.com/hashicorp/terraform-provider-scaffolding/blob/a8ac8375a7082befe55b71c8cbb048493dd220c2/.goreleaser.yml
# goreleaser (used for builds distributed via terraform registry) requires that CGO is disabled
CGO_ENABLED = 0;
ldflags = [ "-s" "-w" "-X main.version=${version}" "-X main.commit=${rev}" ];
src = fetchFromGitHub {
inherit owner repo rev sha256;
};
mkProvider = lib.makeOverridable
({ owner
, repo
, rev
, version
, sha256
, vendorSha256 ? throw "vendorSha256 missing: please use `buildGoModule`" /* added 2022/01 */
, deleteVendor ? false
, proxyVendor ? false
, # Looks like "registry.terraform.io/vancluever/acme"
provider-source-address
}@attrs:
buildGoModule {
pname = repo;
inherit vendorSha256 version deleteVendor proxyVendor;
subPackages = [ "." ];
doCheck = false;
# https://github.com/hashicorp/terraform-provider-scaffolding/blob/a8ac8375a7082befe55b71c8cbb048493dd220c2/.goreleaser.yml
# goreleaser (used for builds distributed via terraform registry) requires that CGO is disabled
CGO_ENABLED = 0;
ldflags = [ "-s" "-w" "-X main.version=${version}" "-X main.commit=${rev}" ];
src = fetchFromGitHub {
inherit owner repo rev sha256;
};
# Move the provider to libexec
postInstall = ''
dir=$out/libexec/terraform-providers/${provider-source-address}/${version}/''${GOOS}_''${GOARCH}
mkdir -p "$dir"
mv $out/bin/* "$dir/terraform-provider-$(basename ${provider-source-address})_${version}"
rmdir $out/bin
'';
# Move the provider to libexec
postInstall = ''
dir=$out/libexec/terraform-providers/${provider-source-address}/${version}/''${GOOS}_''${GOARCH}
mkdir -p "$dir"
mv $out/bin/* "$dir/terraform-provider-$(basename ${provider-source-address})_${version}"
rmdir $out/bin
'';
# Keep the attributes around for later consumption
passthru = attrs;
};
# Keep the attributes around for later consumption
passthru = attrs;
});
list = lib.importJSON ./providers.json;