about summary refs log tree commit diff
path: root/pkgs/applications/finance
diff options
context:
space:
mode:
authorMaciej Krüger <mkg20001@gmail.com>2022-05-20 14:23:09 +0200
committerGitHub <noreply@github.com>2022-05-20 14:23:09 +0200
commit9fbe7a1f092fc559ce0d42bde319cc6cddc878a2 (patch)
treed57ebc6119a9f8b94fb1d938ddb278df0e34fbd2 /pkgs/applications/finance
parent49af446df9687cc1a3a76c1e63e05cca7ca56d1a (diff)
parent87889d80309f2a10ac15dfdbde3a4d4200b86960 (diff)
Merge pull request #173104 from mkg20001/odoo-update
odoo: add update script
Diffstat (limited to 'pkgs/applications/finance')
-rw-r--r--pkgs/applications/finance/odoo/default.nix19
-rwxr-xr-xpkgs/applications/finance/odoo/update.sh27
2 files changed, 40 insertions, 6 deletions
diff --git a/pkgs/applications/finance/odoo/default.nix b/pkgs/applications/finance/odoo/default.nix
index bf39ed8781f35..bd8b21aa5aa06 100644
--- a/pkgs/applications/finance/odoo/default.nix
+++ b/pkgs/applications/finance/odoo/default.nix
@@ -4,6 +4,7 @@
 , python3
 , nodePackages
 , wkhtmltopdf
+, nixosTests
 }:
 
 let
@@ -72,19 +73,18 @@ let
 in python.pkgs.buildPythonApplication rec {
   pname = "odoo";
 
-  major = "15";
-  minor = "0";
-  patch = "20220126";
+  odoo_version = "15.0";
+  odoo_release = "20220506";
 
-  version = "${major}.${minor}.${patch}";
+  version = "${odoo_version}.${odoo_release}";
 
   format = "setuptools";
 
   # latest release is at https://github.com/odoo/docker/blob/master/15.0/Dockerfile
   src = fetchurl {
-    url = "https://nightly.odoo.com/${major}.${minor}/nightly/src/odoo_${version}.tar.gz";
+    url = "https://nightly.odoo.com/${odoo_version}/nightly/src/odoo_${version}.tar.gz";
     name = "${pname}-${version}";
-    hash = "sha256-mofV0mNCdyzJecp0XegZBR/5NzHjis9kbpsUA/KJbZg=";
+    sha256 = "0mwlmfz5nhvg483ldrmlrjhwaf284c0c0pxf0fb0sfx2dnjjj3ib"; # odoo
   };
 
   # needs some investigation
@@ -140,6 +140,13 @@ in python.pkgs.buildPythonApplication rec {
     cd odoo*
   '';
 
+  passthru = {
+    updateScript = ./update.sh;
+    tests = {
+      inherit (nixosTests) odoo;
+    };
+  };
+
   meta = with lib; {
     description = "Open Source ERP and CRM";
     homepage = "https://www.odoo.com/";
diff --git a/pkgs/applications/finance/odoo/update.sh b/pkgs/applications/finance/odoo/update.sh
new file mode 100755
index 0000000000000..3b49727867c0c
--- /dev/null
+++ b/pkgs/applications/finance/odoo/update.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl gnused nix coreutils
+
+set -euo pipefail
+
+DOCKER=$(curl -s https://raw.githubusercontent.com/odoo/docker/master/15.0/Dockerfile)
+
+get_var() {
+  echo "$DOCKER" | grep -E "^[A-Z][A-Z][A-Z] ODOO_$1" | sed -r "s|^[A-Z]{3} ODOO_$1.||g"
+}
+
+VERSION=$(get_var VERSION)
+RELEASE=$(get_var RELEASE)
+
+latestVersion="$VERSION.$RELEASE"
+currentVersion=$(nix-instantiate --eval -E "with import ./. {}; odoo.version or (lib.getVersion odoo)" | tr -d '"')
+
+if [[ "$currentVersion" == "$latestVersion" ]]; then
+  echo "odoo is up-to-date: $currentVersion"
+  exit 0
+fi
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+
+sed -ri "s| sha256.+ # odoo| sha256 = \"$(nix-prefetch-url --type sha256 "https://nightly.odoo.com/${VERSION}/nightly/src/odoo_${latestVersion}.tar.gz")\"; # odoo|g" default.nix
+sed -ri "s| odoo_version.+| odoo_version = \"$VERSION\";|" default.nix
+sed -ri "s| odoo_release.+| odoo_release = \"$RELEASE\";|" default.nix