harfbuzz/src/dev-run.sh

100 lines
2.4 KiB
Bash
Raw Normal View History

2018-02-16 10:23:33 +01:00
#!/bin/bash
2018-02-20 15:19:29 +01:00
# Suggested setup to use the script:
# (on the root of the project)
2018-03-25 15:49:23 +02:00
# $ NOCONFIGURE=1 ./autogen.sh && mkdir build && cd build
# $ ../configure --with-freetype --with-glib --with-gobject --with-cairo
# $ make -j5 && cd ..
2018-02-20 15:19:29 +01:00
# $ src/dev-run.sh [FONT-FILE] [TEXT]
#
# Or, using cmake:
# $ cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild
# $ src/dev-run.sh [FONT-FILE] [TEXT]
#
# If you want to open the result rendering using a GUI app,
# $ src/dev-run.sh open [FONT-FILE] [TEXT]
#
# And if you are using iTerm2, you can use the script like this,
# $ src/dev-run.sh img [FONT-FILE] [TEXT]
#
2018-02-16 10:23:33 +01:00
[ $# = 0 ] && echo Usage: "src/dev-run.sh [FONT-FILE] [TEXT]" && exit
2018-02-20 15:19:29 +01:00
command -v entr >/dev/null 2>&1 || { echo >&2 "This script needs `entr` be installed"; exit 1; }
2018-02-16 10:23:33 +01:00
2018-02-22 14:18:03 +01:00
GDB=gdb
# if gdb doesn't exist, hopefully lldb exist
command -v $GDB >/dev/null 2>&1 || export GDB="lldb"
[ $1 = "open" ] && openimg=1 && shift
OPEN=xdg-open
[ "$(uname)" == "Darwin" ] && OPEN=open
[ $1 = "img" ] && img=1 && shift
# http://iterm2.com/documentation-images.html
osc="\033]"
if [[ $TERM == screen* ]]; then osc="\033Ptmux;\033\033]"; fi
st="\a"
if [[ $TERM == screen* ]]; then st="\a"; fi
tmp=tmp.png
2018-02-20 15:19:29 +01:00
[ -f 'build/build.ninja' ] && CMAKENINJA=TRUE
2018-02-16 10:23:33 +01:00
# or "fswatch -0 . -e build/ -e .git"
2018-02-20 15:19:29 +01:00
find src/ | entr printf '\0' | while read -d ""; do
clear
2018-03-09 22:14:36 +01:00
yes = | head -n`tput cols` | tr -d '\n'
2018-02-20 15:19:29 +01:00
if [[ $CMAKENINJA ]]; then
2018-02-22 14:18:03 +01:00
ninja -Cbuild hb-shape hb-view && {
build/hb-shape $@
if [ $openimg ]; then
build/hb-view $@ -O png -o $tmp
$OPEN $tmp
elif [ $img ]; then
build/hb-view $@ -O png -o $tmp
printf "\n${osc}1337;File=;inline=1:`cat $tmp | base64`${st}\n"
else
build/hb-view $@
fi
2018-02-22 14:18:03 +01:00
}
2018-02-20 15:19:29 +01:00
else
2018-02-22 14:18:03 +01:00
make -Cbuild/src -j5 -s lib && {
build/util/hb-shape $@
if [ $openimg ]; then
build/util/hb-view $@ -O png -o $tmp
$OPEN $tmp
elif [ $img ]; then
build/util/hb-view $@ -O png -o $tmp
printf "\n${osc}1337;File=;inline=1:`cat $tmp | base64`${st}\n"
else
build/util/hb-view $@
fi
2018-02-22 14:18:03 +01:00
}
2018-02-20 15:19:29 +01:00
fi
2018-02-16 10:23:33 +01:00
done
read -n 1 -p "[C]heck, [D]ebug, [R]estart, [Q]uit? " answer
2018-02-22 14:18:03 +01:00
case "$answer" in
c|C )
2018-02-20 15:19:29 +01:00
if [[ $CMAKENINJA ]]; then
CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=5 ninja -Cbuild test
else
2018-02-20 15:29:04 +01:00
make -Cbuild -j5 check && .ci/fail.sh
2018-02-20 15:19:29 +01:00
fi
2018-02-22 14:18:03 +01:00
;;
d|D )
if [[ $CMAKENINJA ]]; then
echo "Not supported on cmake builds yet"
else
2018-02-25 10:00:33 +01:00
build/libtool --mode=execute $GDB -- build/util/hb-shape $@
2018-02-22 14:18:03 +01:00
fi
;;
r|R )
src/dev-run.sh $@
;;
* )
exit
;;
esac