1#! /usr/bin/env nix-shell
2#! nix-shell -i bash -p coreutils findutils gnused nix wget
3
4set -efuo pipefail
5
6SRCS=
7if [ -d "$1" ]; then
8 SRCS="$(pwd)/$1/srcs.nix"
9 . "$1/fetch.sh"
10else
11 SRCS="$(pwd)/$(dirname $1)/srcs.nix"
12 . "$1"
13fi
14
15tmp=$(mktemp -d)
16pushd $tmp >/dev/null
17wget -nH -r -c --no-parent "${WGET_ARGS[@]}" >/dev/null
18
19csv=$(mktemp)
20find . -type f | while read src; do
21 # Sanitize file name
22 filename=$(basename "$src" | tr '@' '_')
23 nameVersion="${filename%.tar.*}"
24 name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,' | sed -e 's,-everywhere-src$,,')
25 version=$(echo "$nameVersion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
26 echo "$name,$version,$src,$filename" >>$csv
27done
28
29cat >"$SRCS" <<EOF
30# DO NOT EDIT! This file is generated automatically by fetch-kde-qt.sh
31{ fetchurl, mirror }:
32
33{
34EOF
35
36gawk -F , "{ print \$1 }" $csv | sort | uniq | while read name; do
37 versions=$(gawk -F , "/^$name,/ { print \$2 }" $csv)
38 latestVersion=$(echo "$versions" | sort -rV | head -n 1)
39 src=$(gawk -F , "/^$name,$latestVersion,/ { print \$3 }" $csv)
40 filename=$(gawk -F , "/^$name,$latestVersion,/ { print \$4 }" $csv)
41 url="${src:2}"
42 sha256=$(nix-hash --type sha256 --base32 --flat "$src")
43 cat >>"$SRCS" <<EOF
44 $name = {
45 version = "$latestVersion";
46 src = fetchurl {
47 url = "\${mirror}/$url";
48 sha256 = "$sha256";
49 name = "$filename";
50 };
51 };
52EOF
53done
54
55echo "}" >>"$SRCS"
56
57popd >/dev/null
58rm -fr $tmp >/dev/null
59
60rm -f $csv >/dev/null