mirror of https://github.com/Wilfred/difftastic/
51 lines
1.3 KiB
Bash
51 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Usage: script/parse-examples [repo_name] [native|wasm]
|
|
|
|
# Exit immediately if a command exits with a non-zero status.
|
|
set -e
|
|
|
|
# Change directory to project root.
|
|
cd "$(dirname "$0")/.."
|
|
|
|
# Get the repository name
|
|
name=$1
|
|
repo=examples/$name
|
|
|
|
# Parse examples in 'native' or 'wasm' mode.
|
|
mode=${2:-native}
|
|
|
|
known_failures=$(cat "script/known-failures-$name.txt")
|
|
examples_to_parse=$(
|
|
for example in $(find "$repo" -name '*.hs'); do
|
|
if [[ ! $known_failures == *$example* ]]; then
|
|
echo $example
|
|
fi
|
|
done
|
|
)
|
|
|
|
if [ "$mode" == "native" ]; then
|
|
# Ensure the scanner was recompiled
|
|
tree-sitter test -f 'just compile it' >/dev/null
|
|
elif [ "$mode" == "wasm" ]; then
|
|
# Ensure tree-sitter-haskell.wasm was compiled
|
|
make node_modules/web-tree-sitter -s
|
|
make tree-sitter-haskell.wasm -s
|
|
fi
|
|
|
|
start=$(date '+%s.%N')
|
|
if [ "$mode" == "native" ]; then
|
|
echo $examples_to_parse | xargs -n 2000 tree-sitter parse -q
|
|
elif [ "$mode" == "wasm" ]; then
|
|
echo $examples_to_parse | xargs -n 2000 ./script/tree-sitter-parse.js
|
|
fi
|
|
end=$(date '+%s.%N')
|
|
|
|
skipped=$( echo $known_failures | wc -w )
|
|
parsed=$( echo $examples_to_parse | wc -w )
|
|
total=$((parsed+skipped))
|
|
percent=$(bc -l <<< "100*$parsed/$total")
|
|
duration=$(bc -l <<< "$end - $start")
|
|
|
|
printf "Successfully parsed %.2f%% of '$name' in %.4fs (%d of %d files)\n" $percent $duration $parsed $total
|