45 lines
981 B
Bash
45 lines
981 B
Bash
|
#!/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"
|