#!/usr/bin/env bash

set -e

name=$1
root=$(dirname $(dirname $(realpath "$0")))
cd $root

repo=examples/$name

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
)

# ensure the scanner was recompiled
tree-sitter test -f 'just compile it' >/dev/null

start=$(date '+%s.%N')
echo $examples_to_parse | xargs -n 2000 tree-sitter parse -q
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 %.2fs (%d of %d files)\n" $percent $duration $parsed $total
