62 lines
1.7 KiB
Nix
62 lines
1.7 KiB
Nix
|
{ writeScript, runtimeShell }:
|
||
|
|
||
|
writeScript "update-mendeley" ''
|
||
|
#!${runtimeShell}
|
||
|
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
|
||
|
''
|