about summary refs log tree commit diff
path: root/pkgs/tools/graphics/gmic-qt
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2021-12-31 06:56:39 +0100
committerJan Tojnar <jtojnar@gmail.com>2021-12-31 07:17:03 +0100
commit9fdff7530395a2e86f05f3aac11c4f4926e8e734 (patch)
treeb5a38793fa508c5dc48e822be1f64981ab6d8346 /pkgs/tools/graphics/gmic-qt
parent914fbcdee4ff1c9dbeca3202a6fab04e387dc0cd (diff)
gmic-qt: add update script
Using printf for creating the hash since otherwise update-source-version would detect multiple hashes.
Diffstat (limited to 'pkgs/tools/graphics/gmic-qt')
-rw-r--r--pkgs/tools/graphics/gmic-qt/default.nix33
1 files changed, 33 insertions, 0 deletions
diff --git a/pkgs/tools/graphics/gmic-qt/default.nix b/pkgs/tools/graphics/gmic-qt/default.nix
index efcd0a87a4ab8..518c7a35c810e 100644
--- a/pkgs/tools/graphics/gmic-qt/default.nix
+++ b/pkgs/tools/graphics/gmic-qt/default.nix
@@ -18,6 +18,12 @@
 , gimp ? null
 , qtbase
 , qttools
+, writeShellScript
+, common-updater-scripts
+, gnugrep
+, gnused
+, coreutils
+, jq
 }:
 
 let
@@ -132,6 +138,33 @@ mkDerivation rec {
     wrapQtApp "$out/${gimp.targetPluginDir}/gmic_gimp_qt"
   '';
 
+  passthru = {
+    updateScript = writeShellScript "${pname}-update-script" ''
+      set -o errexit
+      PATH=${lib.makeBinPath [ common-updater-scripts curl gnugrep gnused coreutils jq ]}
+
+      latestVersion=$(curl 'https://gmic.eu/files/source/' | grep -E 'gmic_[^"]+\.tar\.gz' | sed -E 's/.+<a href="gmic_([^"]+)\.tar\.gz".+/\1/g' | sort --numeric-sort --reverse | head -n1)
+
+      if [[ "${version}" = "$latestVersion" ]]; then
+          echo "The new version same as the old version."
+          exit 0
+      fi
+
+      # gmic-community is not versioned so let’s just update to master.
+      communityLatestCommit=$(curl "https://api.github.com/repos/dtschump/gmic-community/commits/master")
+      communityLatestSha=$(echo "$communityLatestCommit" | jq .sha --raw-output)
+      communityLatestDate=$(echo "$communityLatestCommit" | jq .commit.committer.date --raw-output | sed 's/T.\+//')
+      update-source-version --source-key=gmic-community "gmic-qt" "unstable-$communityLatestDate" --rev="$communityLatestSha"
+
+      for component in CImg gmic_stdlib gmic gmic_qt; 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 "--source-key=$component" "gmic-qt" 0 "$(printf '0%.0s' {1..64})"
+          update-source-version "--source-key=$component" "gmic-qt" $latestVersion
+      done
+    '';
+  };
+
   meta = with lib; {
     description = variants.${variant}.description;
     homepage = "http://gmic.eu/";