[ $# = 0 ] && echo Usage: "src/dev-run.sh [FONT-FILE] [TEXT]" && exit
command -v entr >/dev/null 2>&1 || { echo >&2 "This script needs `entr` be installed"; exit 1; }
+GDB=gdb
+# if gdb doesn't exist, hopefully lldb exist
+command -v $GDB >/dev/null 2>&1 || export GDB="lldb"
+
[ -f 'build/build.ninja' ] && CMAKENINJA=TRUE
# or "fswatch -0 . -e build/ -e .git"
find src/ | entr printf '\0' | while read -d ""; do
clear
+ echo '===================================================='
if [[ $CMAKENINJA ]]; then
- ninja -Cbuild hb-shape hb-view
- build/hb-shape $@
- build/hb-view $@
+ ninja -Cbuild hb-shape hb-view && {
+ build/hb-shape $@
+ build/hb-view $@
+ }
else
- make -Cbuild/src -j5 -s lib
- build/util/hb-shape $@
- build/util/hb-view $@
+ make -Cbuild/src -j5 -s lib && {
+ build/util/hb-shape $@
+ build/util/hb-view $@
+ }
fi
done
-read -n 1 -p "Run the tests (y/n)? " answer
-if [[ "$answer" = "y" ]]; then
+read -n 1 -p "[T]est, [D]ebug, [R]estart, [Q]uit?" answer
+case "$answer" in
+t|T )
if [[ $CMAKENINJA ]]; then
CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=5 ninja -Cbuild test
else
make -Cbuild -j5 check && .ci/fail.sh
fi
-fi
+;;
+d|D )
+ if [[ $CMAKENINJA ]]; then
+ echo "Not supported on cmake builds yet"
+ else
+ build/libtool --mode=execute $GDB hb-shape $@
+ fi
+;;
+r|R )
+ src/dev-run.sh $@
+;;
+* )
+ exit
+;;
+esac