[dev-run] show images using iTerm2 images feature

This commit is contained in:
Ebrahim Byagowi 2018-02-26 23:04:27 +03:30 committed by GitHub
parent 28c4245e9f
commit 6c844ae8e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 4 deletions

View File

@ -9,14 +9,28 @@
# $ cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild # $ cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild
# $ src/dev-run.sh [FONT-FILE] [TEXT] # $ src/dev-run.sh [FONT-FILE] [TEXT]
# #
# If you are using iTerm2, issue the script like this:
# $ src/dev-run.sh img [FONT-FILE] [TEXT]
#
[ $# = 0 ] && echo Usage: "src/dev-run.sh [FONT-FILE] [TEXT]" && exit [ $# = 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; } command -v entr >/dev/null 2>&1 || { echo >&2 "This script needs `entr` be installed"; exit 1; }
GDB=gdb GDB=gdb
# if gdb doesn't exist, hopefully lldb exist # if gdb doesn't exist, hopefully lldb exist
command -v $GDB >/dev/null 2>&1 || export GDB="lldb" command -v $GDB >/dev/null 2>&1 || export GDB="lldb"
[ $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=$(mktemp)
[ -f 'build/build.ninja' ] && CMAKENINJA=TRUE [ -f 'build/build.ninja' ] && CMAKENINJA=TRUE
# or "fswatch -0 . -e build/ -e .git" # or "fswatch -0 . -e build/ -e .git"
find src/ | entr printf '\0' | while read -d ""; do find src/ | entr printf '\0' | while read -d ""; do
@ -25,19 +39,29 @@ find src/ | entr printf '\0' | while read -d ""; do
if [[ $CMAKENINJA ]]; then if [[ $CMAKENINJA ]]; then
ninja -Cbuild hb-shape hb-view && { ninja -Cbuild hb-shape hb-view && {
build/hb-shape $@ build/hb-shape $@
build/hb-view $@ if [ $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
} }
else else
make -Cbuild/src -j5 -s lib && { make -Cbuild/src -j5 -s lib && {
build/util/hb-shape $@ build/util/hb-shape $@
build/util/hb-view $@ if [ $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
} }
fi fi
done done
read -n 1 -p "[T]est, [D]ebug, [R]estart, [Q]uit? " answer read -n 1 -p "[C]heck, [D]ebug, [R]estart, [Q]uit? " answer
case "$answer" in case "$answer" in
t|T ) c|C )
if [[ $CMAKENINJA ]]; then if [[ $CMAKENINJA ]]; then
CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=5 ninja -Cbuild test CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=5 ninja -Cbuild test
else else