• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2# Suggested setup to use the script:
3#  (on the root of the project)
4#  $ NOCONFIGURE=1 ./autogen.sh && mkdir build && cd build
5#  $ ../configure --with-freetype --with-glib --with-gobject --with-cairo
6#  $ make -j5 && cd ..
7#  $ src/dev-run.sh [FONT-FILE] [TEXT]
8#
9# Or, using cmake:
10#  $ cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild
11#  $ src/dev-run.sh [FONT-FILE] [TEXT]
12#
13# If you want to open the result rendering using a GUI app,
14#  $ src/dev-run.sh open [FONT-FILE] [TEXT]
15#
16# And if you are using iTerm2, you can use the script like this,
17#  $ src/dev-run.sh img [FONT-FILE] [TEXT]
18#
19
20[ $# = 0 ] && echo Usage: "src/dev-run.sh [FONT-FILE] [TEXT]" && exit
21command -v entr >/dev/null 2>&1 || { echo >&2 "This script needs `entr` be installed"; exit 1; }
22
23
24GDB=gdb
25# if gdb doesn't exist, hopefully lldb exist
26command -v $GDB >/dev/null 2>&1 || export GDB="lldb"
27
28
29[ $1 = "open" ] && openimg=1 && shift
30OPEN=xdg-open
31[ "$(uname)" == "Darwin" ] && OPEN=open
32
33
34[ $1 = "img" ] && img=1 && shift
35# http://iterm2.com/documentation-images.html
36osc="\033]"
37if [[ $TERM == screen* ]]; then osc="\033Ptmux;\033\033]"; fi
38st="\a"
39if [[ $TERM == screen* ]]; then st="\a"; fi
40
41
42tmp=tmp.png
43[ -f 'build/build.ninja' ] && CMAKENINJA=TRUE
44# or "fswatch -0 . -e build/ -e .git"
45find src/ | entr printf '\0' | while read -d ""; do
46	clear
47	yes = | head -n`tput cols` | tr -d '\n'
48	if [[ $CMAKENINJA ]]; then
49		ninja -Cbuild hb-shape hb-view && {
50			build/hb-shape $@
51			if [ $openimg ]; then
52				build/hb-view $@ -O png -o $tmp
53				$OPEN $tmp
54			elif [ $img ]; then
55				build/hb-view $@ -O png -o $tmp
56				printf "\n${osc}1337;File=;inline=1:`cat $tmp | base64`${st}\n"
57			else
58				build/hb-view $@
59			fi
60		}
61	else
62		make -Cbuild/src -j5 -s lib && {
63			build/util/hb-shape $@
64			if [ $openimg ]; then
65				build/util/hb-view $@ -O png -o $tmp
66				$OPEN $tmp
67			elif [ $img ]; then
68				build/util/hb-view $@ -O png -o $tmp
69				printf "\n${osc}1337;File=;inline=1:`cat $tmp | base64`${st}\n"
70			else
71				build/util/hb-view $@
72			fi
73		}
74	fi
75done
76
77read -n 1 -p "[C]heck, [D]ebug, [R]estart, [Q]uit? " answer
78case "$answer" in
79c|C )
80	if [[ $CMAKENINJA ]]; then
81		CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=5 ninja -Cbuild test
82	else
83		make -Cbuild -j5 check && .ci/fail.sh
84	fi
85;;
86d|D )
87	if [[ $CMAKENINJA ]]; then
88		echo "Not supported on cmake builds yet"
89	else
90		build/libtool --mode=execute $GDB -- build/util/hb-shape $@
91	fi
92;;
93r|R )
94	src/dev-run.sh $@
95;;
96* )
97	exit
98;;
99esac
100