#!/usr/bin/env bash

set -e

ROOT_DIR="$PWD"
GRAMMARS_DIR="$ROOT_DIR/test/fixtures/grammars"

if [[ $CI == true ]]; then
  set -x
else
  cargo build --release
  TREE_SITTER="$ROOT_DIR/target/release/tree-sitter"
fi

build_wasm_args=
if [[ $1 == --docker ]]; then
  build_wasm_args=--docker
  shift
fi

filter_grammar_name="$1"

while read -r grammar_file; do
  grammar_dir="${grammar_file%/*}"
  grammar_name="${grammar_dir##*/}"

  if [[ -n $filter_grammar_name && "$filter_grammar_name" != "$grammar_name" ]]; then
    continue
  fi

  printf 'Compiling %s parser to wasm\n' "$grammar_name"
  "$TREE_SITTER" build --wasm $build_wasm_args -o "target/release/tree-sitter-${grammar_name}.wasm" "$grammar_dir"
done < <(find "$GRAMMARS_DIR" -name grammar.js -not -path '*/node_modules/*')
