at 18.09-beta 1.6 kB view raw
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