#! /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[@]}" -A '*.tar.xz.sha256' -A '*.mirrorlist' >/dev/null find -type f -name '*.mirrorlist' -delete csv=$(mktemp) find . -type f | while read src; do # Sanitize file name filename=$(gawk '{ print $2 }' "$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 by fetch-kde-qt.sh { 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="$(dirname "${src:2}")/$filename" sha256=$(gawk '{ print $1 }' "$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