File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+ haskell_needs_rebuild=x
3+ scala_needs_rebuild=x
4+ haskell_pid=
5+
6+ function maybe_build_haskell {
7+ if [ -n " $haskell_needs_rebuild " ]; then
8+ echo " Building typechecker..."
9+ if stack build; then
10+ haskell_needs_rebuild=" "
11+ echo " Typechecker built!"
12+ fi
13+ fi
14+ }
15+
16+ function maybe_build_scala {
17+ if [ -n " $scala_needs_rebuild " ]; then
18+ echo " Building runtime..."
19+ (cd runtime-jvm; sbt main/compile) && scala_needs_rebuild=" " && echo " Runtime built!"
20+ fi
21+ }
22+
23+ function kill_watcher {
24+ # echo "debug: kill $haskell_pid"
25+ kill $haskell_pid 2> /dev/null
26+ haskell_pid=
27+ }
28+
29+ function start_watcher {
30+ stack exec watcher &
31+ haskell_pid=$!
32+ echo " Launched haskell watcher as pid $haskell_pid ."
33+ }
34+
35+ function go {
36+ # echo "debug: haskell_needs_rebuild=$haskell_needs_rebuild"
37+ if [ -n " $haskell_needs_rebuild " ] || [ -n " $scala_needs_rebuild " ]; then
38+ kill_watcher
39+ fi
40+ maybe_build_haskell
41+ maybe_build_scala
42+ # echo "debug: haskell_needs_rebuild=$haskell_needs_rebuild, scala_needs_rebuild=$scala_needs_rebuild, haskell_pid=$haskell_pid"
43+ if [ -z " $haskell_needs_rebuild " ] && [ -z " $scala_needs_rebuild " ] && [ -z " $haskell_pid " ]; then
44+ start_watcher
45+ fi
46+ }
47+
48+ trap kill_watcher EXIT
49+ go
50+
51+ while IFS= read -r changed; do
52+ # echo "debug: $changed"
53+ case $changed in
54+ NoOp)
55+ go
56+ ;;
57+ * .hs)
58+ echo " detected change in $changed "
59+ # hasktags -cx parser-typechecker
60+ haskell_needs_rebuild=x
61+ ;;
62+ * .scala)
63+ echo " detected change in $changed "
64+ scala_needs_rebuild=x
65+ ;;
66+ esac
67+ done
Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+ assert_command_exists () {
3+ if ! ( type " $1 " & > /dev/null ); then
4+ echo " Sorry, I need the '$1 ' command, but couldn't find it installed." >&2
5+ exit 1
6+ fi
7+ }
8+
9+ assert_command_exists stack
10+ assert_command_exists sbt
11+ assert_command_exists scala
12+ assert_command_exists fswatch
13+
14+ fswatch --batch . | " ` dirname $0 ` /execwatch.sh"
You can’t perform that action at this time.
0 commit comments