diff --git a/pkgs/applications/editors/jetbrains/default.nix b/pkgs/applications/editors/jetbrains/default.nix index b962ab6e22b..e829150d780 100644 --- a/pkgs/applications/editors/jetbrains/default.nix +++ b/pkgs/applications/editors/jetbrains/default.nix @@ -307,11 +307,12 @@ in mps = buildMps rec { name = "mps-${version}"; - version = "2021.1"; /* updated by script */ + version = "2021.1"; + versionMajorMinor = "2021.1"; description = "Create your own domain-specific language"; license = lib.licenses.asl20; src = fetchurl { - url = "https://download.jetbrains.com/mps/${version}/MPS-${version}.tar.gz"; + url = "https://download.jetbrains.com/mps/${versionMajorMinor}/MPS-${version}.tar.gz"; sha256 = "0fdh8lzsi2zryi0xs961vrf3l8kqk5imlj56dhifywi7xkhs3vwn"; /* updated by script */ }; wmClass = "jetbrains-mps"; diff --git a/pkgs/applications/editors/jetbrains/update.pl b/pkgs/applications/editors/jetbrains/update.pl index cd3d2193a28..ac738b6ec14 100755 --- a/pkgs/applications/editors/jetbrains/update.pl +++ b/pkgs/applications/editors/jetbrains/update.pl @@ -56,17 +56,20 @@ sub update_nix_block { if ($version eq $latest_versions{$channel}) { print("$channel is up to date at $version\n"); } else { - print("updating $channel: $version -> $latest_versions{$channel}\n"); + my $version_string = $latest_versions{$channel}; + my $versionMajorMinor = $version_string =~ s/^([0-9]+[.][0-9]+).*/$1/r; + + print("updating $channel: $version -> $version_string\n"); my ($url) = $block =~ /url\s*=\s*"([^"]+)"/; # try to interpret some nix my ($name) = $block =~ /name\s*=\s*"([^"]+)"/; - $name =~ s/\$\{version\}/$latest_versions{$channel}/; - # Some url paattern contain variables more than once + $name =~ s/\$\{version\}/$version_string/; + # Some url pattern contain variables more than once $url =~ s/\$\{name\}/$name/g; - $url =~ s/\$\{version\}/$latest_versions{$channel}/g; + $url =~ s/\$\{version\}/$version_string/g; + $url =~ s/\$\{versionMajorMinor\}/$versionMajorMinor/g; die "$url still has some interpolation" if $url =~ /\$/; my ($sha256) = get("$url.sha256") =~ /^([0-9a-f]{64})/; - my $version_string = $latest_versions{$channel}; unless ( $sha256 ) { my $full_version = $latest_versions{"full1_" . $channel}; $url =~ s/$version_string/$full_version/; @@ -79,6 +82,7 @@ sub update_nix_block { print "Jetbrains published SHA256: $sha256\n"; print "Conversion into base32 yields: $sha256Base32\n"; $block =~ s#version\s*=\s*"([^"]+)".+$#version = "$version_string"; /* updated by script */#m; + $block =~ s#versionMajorMinor\s*=\s*"([^"]+)".+$#versionMajorMinor = "$versionMajorMinor"; /* updated by script */#m; $block =~ s#sha256\s*=\s*"([^"]+)".+$#sha256 = "$sha256Base32"; /* updated by script */#m; } } else {