#!/bin/bash

if [[ $# -ne 1 ]]; then
  echo "Launches a Karma test in interactive mode for in-browser debugging. It watches for file"
  echo "changes in the test's directory and relaunches the Karma test runner when any such files"
  echo "change."
  echo
  echo "Usage: $0 <path to custom element's directory>"
  echo
  echo "As an example, the following two commands run the same Karma test:"
  echo
  echo "    $0 golden/modules/digest-details-sk"
  echo "    bazelisk run --config=remote //golden/modules/digest-details-sk:digest-details-sk_test"
  echo
  echo "This script uses the \"entr\" command to launch a Karma test in interactive mode via"
  echo "\"bazelisk run\". When the files in the custom element's directory change, entr will"
  echo "reexecute the bazelisk command to rebuild and run the element's Karma test in interactive"
  echo "mode with the latest changes. Users must manually refresh the browser to see the changes."
  echo
  echo "Note: This script MUST be executed from the repository's root directory."
  echo "Note: This script only works if the Bazel label of the test is of the form"
  echo "      //path/to/<MODULE>:<MODULE>_test."
  exit 1
fi

# Remove any trailing slashes that might arise from using Bash's autocompletion
# via the tab key, e.g. "path/to/foo/" becomes "path/to/foo".
DIR=$(echo $1 | sed 's:/*$::')

# Extract the Bazel target name
TARGET=$(basename $DIR)_test

git ls-files | entr -r bazelisk run --config=remote //$DIR:$TARGET

# For some reason entr leaves the terminal in a corrupted state after being killed with Ctrl+C. The
# following commands restore the terminal to a workable state.
reset
clear
