#!/usr/bin/env bash set -o errexit set -o nounset if test "$#" != 1; then printf >&2 'usage: update-test-samples.bash /path/to/PyAV/source\n' exit 2 fi pyav_source=$1 exec > "$(dirname "$(readlink -f "$0")")/test-samples.toml" fetch() { path=$1 url=$2 prefetch_json=$(nix store prefetch-file --json "${url}") sri_hash=$(jq -r .hash <<< "${prefetch_json}") printf '"%s" = { url = "%s", hash = "%s" }\n' "${path}" "${url}" "${sri_hash}" } fetch_all() { function=$1 base_path=$2 base_url=$3 samples=$( rg \ --only-matching \ --no-filename \ "\\b${function}\\([\"']([^\"']+)[\"']\\)" \ --replace '$1' \ "${pyav_source}" ) unique_samples=$(sort -u <<< "${samples}") while IFS= read -r sample; do fetch "${base_path}/${sample}" "${base_url}/${sample}" done <<< "${unique_samples}" } fetch_all fate_suite fate-suite "http://fate.ffmpeg.org/fate-suite" fetch_all curated pyav-curated "https://pyav.org/datasets"