From 6c844ae8e89f52f5f40eace66bb987544fc316e3 Mon Sep 17 00:00:00 2001 From: Ebrahim Byagowi Date: Mon, 26 Feb 2018 23:04:27 +0330 Subject: [PATCH] [dev-run] show images using iTerm2 images feature --- src/dev-run.sh | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/dev-run.sh b/src/dev-run.sh index c70181128..9c82db0b8 100755 --- a/src/dev-run.sh +++ b/src/dev-run.sh @@ -9,14 +9,28 @@ # $ cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild # $ 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 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" + +[ $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 # or "fswatch -0 . -e build/ -e .git" 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 ninja -Cbuild hb-shape hb-view && { 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 make -Cbuild/src -j5 -s lib && { 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 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 -t|T ) +c|C ) if [[ $CMAKENINJA ]]; then CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=5 ninja -Cbuild test else