mendeley: Add update-checker script, add myself as maintainer

Doesn't actually edit the file,
but reports when an update is available
and provides useful information.
This commit is contained in:
Will Dietz 2018-01-14 13:58:15 -06:00
parent 4de01b6723
commit 332389611a
2 changed files with 68 additions and 3 deletions

View File

@ -31,6 +31,8 @@
# will leave entries on your system after uninstalling mendeley.
# (they can be removed by running '$out/bin/install-mendeley-link-handler.sh -u')
, autorunLinkHandler ? true
# Update script
, writeScript
}:
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
@ -133,11 +135,14 @@ stdenv.mkDerivation {
dontStrip = true;
dontPatchElf = true;
meta = {
updateScript = import ./update.nix { inherit writeScript; };
meta = with stdenv.lib; {
homepage = http://www.mendeley.com;
description = "A reference manager and academic social network";
license = stdenv.lib.licenses.unfree;
platforms = stdenv.lib.platforms.linux;
license = licenses.unfree;
platforms = platforms.linux;
maintainers = with maintainers; [ dtzWill ];
};
}

View File

@ -0,0 +1,60 @@
{ writeScript }:
writeScript "update-mendeley" ''
function follow() {
local URL=$1
while true; do
NEWURL=$(curl -m20 -sI "$URL" -o /dev/null -w '%{redirect_url}')
[ -z "$NEWURL" ] && break
[[ $NEWURL = $URL ]] && (echo "redirect loop?!"; exit 1)
echo "Following $URL -> $NEWURL ..." >&2
URL=$NEWURL
done
echo $URL
}
amd64URL=$(follow https://www.mendeley.com/repositories/ubuntu/stable/amd64/mendeleydesktop-latest)
amd64V=$(basename $amd64URL|grep -m1 -o "[0-9]\+\.[0-9]\+\.[0-9]\+")
i386URL=$(follow https://www.mendeley.com/repositories/ubuntu/stable/i386/mendeleydesktop-latest)
i386V=$(basename $i386URL|grep -m1 -o "[0-9]\+\.[0-9]\+\.[0-9]\+")
echo "amd64 version: $amd64V"
echo "i386 version: $i386V"
if [[ $amd64V != $i386V ]]; then
echo "Versions not the same!"
exit 1
fi
if grep -q -F "$amd64V" ${./default.nix}; then
echo "No new version yet, nothing to do."
echo "Have a nice day!"
exit 0
fi
amd64OldHash=$(nix-instantiate --eval --strict -A "mendeley.src.drvAttrs.outputHash" --argstr system "x86_64-linux"| tr -d '"')
i386OldHash=$(nix-instantiate --eval --strict -A "mendeley.src.drvAttrs.outputHash" --argstr system "i686-linux"| tr -d '"')
echo "Prefetching amd64..."
amd64NewHash=$(nix-prefetch-url $amd64URL)
echo "Prefetching i386..."
i386NewHash=$(nix-prefetch-url $i386URL)
# Don't actually update, just report that an update is available
cat <<EOF
Time to update to $amd64V !
32bit (i386):
Old: $i386OldHash
New: $i386NewHash
64bit (amd64):
Old: $amd64OldHash
New: $amd64NewHash
Exiting so this information is seen...
(no update is actually performed here)
EOF
exit 1
''