224098757f
This commit doesn't add any feature and just fixes a small annoyance which result in messages like this: Checking if xxx applies...no. See that there is no whitespace between "..." and "no"? Well, the world cares for more important things, but for me personally those minor annoyances can turn into major annoyances.
114 lines
2.5 KiB
Bash
Executable file
114 lines
2.5 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
channels_url="http://omahaproxy.appspot.com/";
|
|
bucket_url="http://commondatastorage.googleapis.com/chromium-browser-official/";
|
|
output_file="$(cd "$(dirname "$0")" && pwd)/sources.nix";
|
|
|
|
nix_getattr()
|
|
{
|
|
input_file="$1";
|
|
attr="$2";
|
|
|
|
var="$(nix-instantiate --eval-only -A "$attr" "$output_file")";
|
|
echo "$var" | tr -d '\\"';
|
|
}
|
|
|
|
### poor mans key/value-store :-) ###
|
|
|
|
ver_sha_table=""; # list of version:sha256
|
|
|
|
sha_lookup()
|
|
{
|
|
version="$1";
|
|
|
|
for ver_sha in $ver_sha_table;
|
|
do
|
|
if [ "x${ver_sha%:*}" = "x$version" ];
|
|
then
|
|
echo "${ver_sha##*:}";
|
|
return 0;
|
|
fi;
|
|
done;
|
|
|
|
return 1;
|
|
}
|
|
|
|
sha_insert()
|
|
{
|
|
version="$1";
|
|
sha256="$2";
|
|
|
|
ver_sha_table="$ver_sha_table $version:$sha256";
|
|
}
|
|
|
|
if [ -e "$output_file" ];
|
|
then
|
|
get_sha256()
|
|
{
|
|
channel="$1";
|
|
version="$2";
|
|
url="$3";
|
|
|
|
oldver="$(nix_getattr "$output_file" "$channel.version")";
|
|
|
|
echo -n "Checking if $oldver ($channel) is up to date..." >&2;
|
|
|
|
if [ "x$version" != "x$oldver" ];
|
|
then
|
|
echo " no, getting sha256 for new version $version:" >&2;
|
|
sha256="$(nix-prefetch-url "$url")";
|
|
else
|
|
echo " yes, keeping old sha256." >&2;
|
|
sha256="$(nix_getattr "$output_file" "$channel.sha256")";
|
|
fi;
|
|
|
|
sha_insert "$version" "$sha256"
|
|
echo "$sha256";
|
|
}
|
|
else
|
|
get_sha256()
|
|
{
|
|
nix-prefetch-url "$url";
|
|
}
|
|
fi;
|
|
|
|
get_channel_exprs()
|
|
{
|
|
for chline in $(echo "$1" | cut -d, -f-2);
|
|
do
|
|
channel="${chline%%,*}";
|
|
version="${chline##*,}";
|
|
url="${bucket_url%/}/chromium-$version.tar.bz2";
|
|
|
|
echo -n "Checking if sha256 of version $version is cached..." >&2;
|
|
if sha256="$(sha_lookup "$version")";
|
|
then
|
|
echo " yes: $sha256" >&2;
|
|
else
|
|
echo " no." >&2;
|
|
sha256="$(get_sha256 "$channel" "$version" "$url")";
|
|
fi;
|
|
|
|
sha_insert "$version" "$sha256";
|
|
|
|
echo " $channel = {";
|
|
echo " version = \"$version\";";
|
|
echo " url = \"$url\";";
|
|
echo " sha256 = \"$sha256\";";
|
|
echo " };";
|
|
done;
|
|
}
|
|
|
|
cd "$(dirname "$0")";
|
|
|
|
omaha="$(curl -s "$channels_url")";
|
|
versions="$(echo "$omaha" | sed -n -e 's/^linux,\(\([^,]\+,\)\{2\}\).*$/\1/p')";
|
|
channel_exprs="$(get_channel_exprs "$versions")";
|
|
|
|
cat > "$output_file" <<-EOF
|
|
# This file is autogenerated from update.sh in the same directory.
|
|
{
|
|
$channel_exprs
|
|
}
|
|
EOF
|