Commit 35aa61ba authored by OPNA2608's avatar OPNA2608
Browse files

palemoon-bin: Add meta.updateScript

parent 26594c44
Loading
Loading
Loading
Loading
+45 −12
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
, libpulseaudio
, makeDesktopItem
, wrapGAppsHook
, writeScript
, testers
}:

@@ -21,16 +22,7 @@ stdenv.mkDerivation (finalAttrs: {
  pname = "palemoon-bin";
  version = "33.0.0";

  src = fetchzip {
    urls = [
      "https://rm-eu.palemoon.org/release/palemoon-${finalAttrs.version}.linux-x86_64-gtk${if withGTK3 then "3" else "2"}.tar.xz"
      "https://rm-us.palemoon.org/release/palemoon-${finalAttrs.version}.linux-x86_64-gtk${if withGTK3 then "3" else "2"}.tar.xz"
    ];
    hash = if withGTK3 then
      "sha256-qZX23dsKNg5AOIaBAAmTWT6VDEl3OGz3kb3idtvJElw="
    else
      "sha256-Lz1+5I8Rj0GrBUBTJoRsatpyzkqVHZuWbKARkuWFs5U=";
  };
  src = finalAttrs.passthru.sources."gtk${if withGTK3 then "3" else "2"}";

  preferLocalBuild = true;

@@ -155,10 +147,51 @@ stdenv.mkDerivation (finalAttrs: {
    wrapGApp $out/lib/palemoon/palemoon
  '';

  passthru.tests.version = testers.testVersion {
  passthru = {
    sources = let
      urlRegionVariants = buildVariant: map
        (region: "https://rm-${region}.palemoon.org/release/palemoon-${finalAttrs.version}.linux-x86_64-${buildVariant}.tar.xz")
        [
          "eu"
          "us"
        ];
    in {
      gtk3 = fetchzip {
        urls = urlRegionVariants "gtk3";
        hash = "sha256-qZX23dsKNg5AOIaBAAmTWT6VDEl3OGz3kb3idtvJElw=";
      };
      gtk2 = fetchzip {
        urls = urlRegionVariants "gtk2";
        hash = "sha256-Lz1+5I8Rj0GrBUBTJoRsatpyzkqVHZuWbKARkuWFs5U=";
      };
    };

    tests.version = testers.testVersion {
      package = finalAttrs.finalPackage;
    };

    updateScript = writeScript "update-palemoon-bin" ''
      #!/usr/bin/env nix-shell
      #!nix-shell -i bash -p common-updater-scripts curl libxml2

      set -eu -o pipefail

      # Only release note announcement == finalized release
      version="$(
        curl -s 'http://www.palemoon.org/releasenotes.shtml' |
        xmllint --html --xpath 'html/body/table/tbody/tr/td/h3/text()' - 2>/dev/null | head -n1 |
        sed 's/v\(\S*\).*/\1/'
      )"

      for variant in gtk3 gtk2; do
        # The script will not perform an update when the version attribute is up to date from previous platform run
        # We need to clear it before each run
        update-source-version palemoon-bin 0 "${lib.fakeHash}" --source-key="sources.$variant"
        update-source-version palemoon-bin "$version" --source-key="sources.$variant"
      done
    '';
  };

  meta = with lib; {
    homepage = "https://www.palemoon.org/";
    description = "An Open Source, Goanna-based web browser focusing on efficiency and customization";