mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-21 13:10:33 +00:00
63 lines
1.6 KiB
Bash
Executable file
63 lines
1.6 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[@]}" -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.
|
|
# 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="$(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
|