summary refs log tree commit diff
path: root/pkgs/applications/office/libreoffice/update.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/office/libreoffice/update.sh')
-rwxr-xr-xpkgs/applications/office/libreoffice/update.sh74
1 files changed, 74 insertions, 0 deletions
diff --git a/pkgs/applications/office/libreoffice/update.sh b/pkgs/applications/office/libreoffice/update.sh
new file mode 100755
index 00000000000..a04e668e818
--- /dev/null
+++ b/pkgs/applications/office/libreoffice/update.sh
@@ -0,0 +1,74 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p python3 pup curl jq nix
+
+set -euo pipefail
+echoerr() { echo "$@" 1>&2; }
+
+fname="$1"
+echoerr got fname $fname
+shift
+
+variant="$1"
+# See comment near version_major variable
+if [[ $variant == fresh ]]; then
+    head_tail=head
+elif [[ $variant == still ]]; then
+    head_tail=tail
+else
+    echoerr got unknown variant $variant
+    exit 3
+fi
+echoerr got variant $variant
+shift
+
+# Not totally needed, but makes it easy to run the update in case tis folder is
+# deleted.
+mkdir -p "$(dirname $fname)/src-$variant"
+cd "$(dirname $fname)/src-$variant"
+
+# The pup command prints both fresh and still versions one after another, and
+# we use either head -1 or tail -1 to get the right version, per the if elif
+# above.
+version_major="$(curl --silent https://www.libreoffice.org/download/download-libreoffice/ |\
+    pup '.dl_version_number text{}' | $head_tail -1)"
+echoerr got from website ${variant}_version $version_major
+baseurl=https://download.documentfoundation.org/libreoffice/src/$version_major
+tarballs=($(curl --silent $baseurl/ |\
+    pup 'table json{}' |\
+    jq --raw-output '.. | .href? | strings' |\
+    grep "$version_major.*.tar.xz$"))
+
+full_version="$(echo ${tarballs[0]} | sed -e 's/^libreoffice-//' -e 's/.tar.xz$//')"
+echoerr full version is $full_version
+echo \"$full_version\" > version.nix
+
+for t in help translations; do
+    echo "{" > $t.nix
+    echo "  sha256 = "\"$(nix-prefetch-url $baseurl/libreoffice-$t-$full_version.tar.xz)'";' >> $t.nix
+    echo "  url = "\"$baseurl/libreoffice-$t-$full_version.tar.xz'";' >> $t.nix
+    echo "}" >> $t.nix
+done
+
+# Out of loop nix-prefetch-url, because there is no $t, and we want the output
+# path as well, to get the download.lst file from there afterwards.
+main_path_hash=($(nix-prefetch-url --print-path $baseurl/libreoffice-$full_version.tar.xz))
+echo "{" > main.nix
+echo "  sha256 = "\"${main_path_hash[0]}'";' >> main.nix
+echo "  url = "\"$baseurl/libreoffice-$full_version.tar.xz'";' >> main.nix
+echo "}" >> main.nix
+echoerr got filename ${main_path_hash[1]}
+
+# Environment variable required by ../generate-libreoffice-srcs.py
+export downloadList=/tmp/nixpkgs-libreoffice-update-download-$full_version.lst
+# Need to extract the file only if it doesn't exist, otherwise spare time be
+# skipping this.
+if [[ ! -f "$downloadList" ]]; then
+    tar --extract \
+        --file=${main_path_hash[1]} \
+        libreoffice-$full_version/download.lst \
+        -O > $downloadList
+else
+    echoerr relying on previously downloaded downloadList file
+fi
+cd ..
+python3 ./generate-libreoffice-srcs.py > src-$variant/deps.nix