terraform-providers: fix handling of version/rev in provider list

I interpreted the purpose of stripping the first character from the 'version'
argument as an attempt to remove a prefixed 'v' (e.g. 'v1.0.0') from a version
tag. This works if the tag actually has a 'v' prefix, but also removes the first
character if version tags are not prefixed (e.g. '1.0.0').

Additionally, the 'v' was added again when specifying the `rev` for
`fetchFromGitHub` in default.nix. As described above, this did also not work
when provider repos did not prefix their version tags with 'v'.

I changed the implementation as follows:

- `version` and `rev` are stored inside data.nix
- `version` is used to declare the nix package version
- `rev` is used to fetch the proper git ref when building the package
- for determining `version`, an optional leading 'v' is trimmed from the tag
  name

Now this has the implication that the latest tag must always be a release tag
when using the `update-all` script, but as the result of running `update-all`
should always be reviewed before submission, makes this appear a manageable
tradeoff to me.
This commit is contained in:
Marius Bergmann 2019-11-06 00:19:08 +01:00
parent 206f719046
commit 3ddd53e576
2 changed files with 5 additions and 4 deletions

View file

@ -9,13 +9,12 @@ let
toDrv = data:
buildGoPackage rec {
inherit (data) owner repo version sha256;
inherit (data) owner repo rev version sha256;
name = "${repo}-${version}";
goPackagePath = "github.com/${owner}/${repo}";
subPackages = [ "." ];
src = fetchFromGitHub {
inherit owner repo sha256;
rev = "v${version}";
inherit owner repo rev sha256;
};

View file

@ -58,12 +58,14 @@ prefetch_github() {
echo_entry() {
local owner=$1
local repo=$2
local version=${3:1}
local rev=$3
local version=$(echo $3 | sed 's/^v//')
local sha256=$4
cat <<EOF
{
owner = "$owner";
repo = "$repo";
rev = "$rev";
version = "$version";
sha256 = "$sha256";
};