diff --git a/script/parse-example b/script/parse-example new file mode 100755 index 000000000..d423b41c7 --- /dev/null +++ b/script/parse-example @@ -0,0 +1,30 @@ +#!/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 +) + +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 diff --git a/script/parse-examples b/script/parse-examples index 1a0a14537..72cc4f3b9 100755 --- a/script/parse-examples +++ b/script/parse-examples @@ -20,31 +20,6 @@ function clone_repo { popd } -# parse_examples NAME -function parse_examples { - name=$1 - - 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 - ) - - echo $examples_to_parse | xargs -n 2000 tree-sitter parse -q - - skipped=$( echo $known_failures | wc -w ) - parsed=$( echo $examples_to_parse | wc -w ) - total=$((parsed+skipped)) - percent=$(bc -l <<< "100*$parsed/$total") - - printf "Successfully parsed %.2f%% of $repo (%d of %d files)\n" $percent $parsed $total -} - clone_repo joshvera effects 08f5f36f2600362685af593f4b327e933b60bf97 clone_repo PostgRest postgrest f80cfbf165f951a062b3cbedac4556019905ca49 clone_repo GaloisInc ivory 3d00324ad1c113c7e70957ff6a6d636d271d0fc4 @@ -53,5 +28,5 @@ clone_repo github semantic b162132339622fe1e80e243f630fe092d5c0cbe1 clone_repo haskell haskell-language-server d397ef491ef1689d43028f4d3d01a42118292235 for name in effects postgrest ivory polysemy semantic haskell-language-server; do - parse_examples $name + script/parse-example $name done