3db04334e3
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
|