#!/usr/bin/env bash set -eou pipefail DIRECTORY=$(dirname "$0") PACKAGES_FILE="$DIRECTORY/packages.txt" SOURCES_FILE="$DIRECTORY/sources.json" TEMP_DIR=$(mktemp -d "rust-flake-sources.XXXX" -p $XDG_RUNTIME_DIR) pushd $TEMP_DIR echo "" for package in $(cat "$PACKAGES_FILE") do version=$(curl -s "https://crates.io/api/v1/crates/$package" | jq ".crate.max_stable_version" | tr -d '"') echo "Fetching $package -- $version" nurl "https://crates.io/crates/$package" "$version" -j | jq ".args" > $package.json echo "" done popd jq -s "map({(.pname): .}) | add" $TEMP_DIR/* > $SOURCES_FILE rm -r $TEMP_DIR