This reverts commit 4b7d9dc86800fa7b861f47ae0e6e3a8f097f9ce7. The KDE project has changed their source index pages so that the links to package metadata files are generated by JavaScript after the page loads. As a result, wget is no longer able to recursively fetch the package metadata automatically.
62 lines
1.5 KiB
Bash
Executable File
62 lines
1.5 KiB
Bash
Executable File
#! /usr/bin/env nix-shell
|
|
#! nix-shell -i bash -p coreutils findutils gnused nix wget
|
|
|
|
set -efuo pipefail
|
|
|
|
SRCS=
|
|
if [ -d "$1" ]; then
|
|
SRCS="$(pwd)/$1/srcs.nix"
|
|
. "$1/fetch.sh"
|
|
else
|
|
SRCS="$(pwd)/$(dirname $1)/srcs.nix"
|
|
. "$1"
|
|
fi
|
|
|
|
tmp=$(mktemp -d)
|
|
pushd $tmp >/dev/null
|
|
wget -nH -r -c --no-parent "${WGET_ARGS[@]}" >/dev/null
|
|
|
|
csv=$(mktemp)
|
|
find . -type f | while read src; do
|
|
# Sanitize file name
|
|
filename=$(basename "$src" | tr '@' '_')
|
|
nameVersion="${filename%.tar.*}"
|
|
name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,' | sed -e 's,-everywhere-src$,,')
|
|
version=$(echo "$nameVersion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
|
|
echo "$name,$version,$src,$filename" >>$csv
|
|
done
|
|
|
|
cat >"$SRCS" <<EOF
|
|
# DO NOT EDIT! This file is generated automatically.
|
|
# Command: $0 $@
|
|
{ fetchurl, mirror }:
|
|
|
|
{
|
|
EOF
|
|
|
|
gawk -F , "{ print \$1 }" $csv | sort | uniq | while read name; do
|
|
versions=$(gawk -F , "/^$name,/ { print \$2 }" $csv)
|
|
latestVersion=$(echo "$versions" | sort -rV | head -n 1)
|
|
src=$(gawk -F , "/^$name,$latestVersion,/ { print \$3 }" $csv)
|
|
filename=$(gawk -F , "/^$name,$latestVersion,/ { print \$4 }" $csv)
|
|
url="${src:2}"
|
|
sha256=$(nix-hash --type sha256 --base32 --flat "$src")
|
|
cat >>"$SRCS" <<EOF
|
|
$name = {
|
|
version = "$latestVersion";
|
|
src = fetchurl {
|
|
url = "\${mirror}/$url";
|
|
sha256 = "$sha256";
|
|
name = "$filename";
|
|
};
|
|
};
|
|
EOF
|
|
done
|
|
|
|
echo "}" >>"$SRCS"
|
|
|
|
popd >/dev/null
|
|
rm -fr $tmp >/dev/null
|
|
|
|
rm -f $csv >/dev/null
|