#!/usr/bin/env bash set -e function usage { cat <<-EOF USAGE $0 [-h] [-l language-name] [-e example-file-name] [-r repetition-count] OPTIONS -h print this message -l run only the benchmarks for the given language -e run only the benchmarks that parse the example file with the given name -r parse each sample the given number of times (default 5) -g debug EOF } mode=normal while getopts "hgl:e:r:" option; do case ${option} in h) usage exit ;; g) mode=debug ;; e) export TREE_SITTER_BENCHMARK_EXAMPLE_FILTER=${OPTARG} ;; l) export TREE_SITTER_BENCHMARK_LANGUAGE_FILTER=${OPTARG} ;; r) export TREE_SITTER_BENCHMARK_REPETITION_COUNT=${OPTARG} ;; esac done if [[ "${mode}" == "debug" ]]; then test_binary=$( cargo bench benchmark -p tree-sitter-cli --no-run --message-format=json 2> /dev/null |\ jq -rs 'map(select(.target.name == "benchmark" and .executable))[0].executable' ) env | grep TREE_SITTER echo $test_binary else exec cargo bench benchmark -p tree-sitter-cli fi