aqbanking: Add an updater script
The promised updater, which feeds sources.nix and should help updating all the aqbanking libraries at the same time. I was very reluctant to write the updater entirely in Nix as I've done a while ago for Chromium, because this would involve ugly hacks to do so. That's why I've done a more conservative approach here, only using nix-instantiate to get the contents of the current sources.nix. Signed-off-by: aszlig <aszlig@redmoonstudios.org> Cc: @cillianderoiste, @urkud
This commit is contained in:
parent
db1162dce4
commit
f25e4350ef
@ -1,3 +1,4 @@
|
||||
# This file is autogenerated from update.sh in the same directory.
|
||||
{
|
||||
gwenhywfar.version = "4.15.3";
|
||||
gwenhywfar.sha256 = "0fp67s932x66xfljb26zbrn8ambbc5y5c3hllr6l284nr63qf3ka";
|
||||
|
92
pkgs/development/libraries/aqbanking/update.sh
Executable file
92
pkgs/development/libraries/aqbanking/update.sh
Executable file
@ -0,0 +1,92 @@
|
||||
#!/bin/sh -e
|
||||
basedir="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
getCurrentVersions() {
|
||||
[ -e "$basedir/sources.nix" ] || return 0
|
||||
(cd "$basedir" && nix-instantiate --eval --strict -E '
|
||||
toString ((import ../../../../lib).mapAttrsToList
|
||||
(name: info: "${name}:${info.version}!${info.sha256}!${info.releaseId}")
|
||||
(import ./sources.nix))
|
||||
' | tr -d '"')
|
||||
}
|
||||
|
||||
currentVersions="$(getCurrentVersions)"
|
||||
|
||||
getLastestVersion() {
|
||||
local baseurl="http://www.aquamaniac.de"
|
||||
local pkglist="sites/download/packages.php?package=$1&showall=1"
|
||||
local url="$baseurl/$pkglist"
|
||||
local reVersion='[0-9]+(\.[0-9]+)+' # Only release versions, no betas!
|
||||
local reHref='href=".*release=([0-9]+).*dummy=[^0-9]*('"$reVersion"')\.tar'
|
||||
local reFull='s/^.*<a\>.*\<'"$reHref"'.*/\2!\1/p'
|
||||
curl -s "$url" | sed -nre "$reFull" | sort -V -k 1,1 | tail -n1
|
||||
}
|
||||
|
||||
getEntry() {
|
||||
local name="$1"
|
||||
for entry in $currentVersions; do
|
||||
if [ "${entry%%:*}" = "$name" ]; then
|
||||
echo "${entry#*:}"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
prefetchNew() {
|
||||
local name="$1"
|
||||
local version="$2"
|
||||
local package="$3"
|
||||
local releaseId="$4"
|
||||
|
||||
local url="http://www.aquamaniac.de/sites/download/download.php"
|
||||
local qstring="package=$package&release=$releaseId&file=01";
|
||||
|
||||
nix-prefetch-url --name "$name-$version.tar.gz" "$url?$qstring"
|
||||
}
|
||||
|
||||
processPackage() {
|
||||
local name="$1"
|
||||
local package="$2"
|
||||
|
||||
local latest="$(getLastestVersion "$package")"
|
||||
local current="$(getEntry "$name")"
|
||||
local currentTail="${current#*!}"
|
||||
|
||||
local currentVersion="${current%%!*}"
|
||||
local currentSha256="${currentTail%%!*}"
|
||||
local currentReleaseId="${current##*!}"
|
||||
|
||||
local latestVersion="${latest%%!*}"
|
||||
local latestReleaseId="${latest##*!}"
|
||||
|
||||
if [ "$latestVersion" = "$currentVersion" -a \
|
||||
"$latestReleaseId" = "$currentReleaseId" ]; then
|
||||
echo " $name.version = \"$currentVersion\";"
|
||||
echo " $name.sha256 = \"$currentSha256\";"
|
||||
echo " $name.releaseId = \"$currentReleaseId\";"
|
||||
return 0
|
||||
fi
|
||||
|
||||
local latestSha256="$(
|
||||
prefetchNew "$name" "$latestVersion" "$package" "$latestReleaseId"
|
||||
)"
|
||||
|
||||
echo " $name.version = \"$latestVersion\";"
|
||||
echo " $name.sha256 = \"$latestSha256\";"
|
||||
echo " $name.releaseId = \"$latestReleaseId\";"
|
||||
return 0
|
||||
}
|
||||
|
||||
generateNewSources() {
|
||||
echo "# This file is autogenerated from update.sh in the same directory."
|
||||
echo "{"
|
||||
for package in gwenhywfar:01 libchipcard:02 aqbanking:03; do
|
||||
processPackage "${package%%:*}" "${package##*:}"
|
||||
done
|
||||
echo "}"
|
||||
}
|
||||
|
||||
if newSources="$(generateNewSources)"; then
|
||||
echo "$newSources" > "$basedir/sources.nix"
|
||||
fi
|
Loading…
Reference in New Issue
Block a user