11#! /usr/bin/env bash
2-
3- set -e
4- set -u
5-
2+ # TODO: builder script plz
63# # START STANDARD BUILD SCRIPT INCLUDE
74# adjust relative paths as necessary
85THIS_SCRIPT=" $( readlink -f " ${BASH_SOURCE[0]} " ) "
96. " ${THIS_SCRIPT%/* } /../../../resources/build/build-utils.sh"
10- . " $KEYMAN_ROOT /resources/shellHelperFunctions.sh"
117# # END STANDARD BUILD SCRIPT INCLUDE
8+ . " $KEYMAN_ROOT /resources/shellHelperFunctions.sh"
129THIS_DIR=" $( dirname " $THIS_SCRIPT " ) "
1310
1411display_usage () {
1512 echo " usage: build.sh [build options] [targets]"
1613 echo
1714 echo " Build options:"
18- echo " --clean, -c Clean instead of build"
1915 echo " --debug, -d Debug build"
2016 echo " --silent, -s Suppress information messages"
21- echo " --keyboard, -k Build only keyboards (not packages)"
2217 echo " --kmc path Specify path to kmc, defaults"
2318 echo " to developer/src/kmc/build/"
2419 echo " --zip-source Create zip file for source of each"
@@ -29,7 +24,7 @@ display_usage() {
2924
3025 for d in " $THIS_DIR /" * /; do
3126 d=" $( basename " $d " ) "
32- if [ " $d " != " invalid" ]; then
27+ if [ " $d " != " invalid" && " $d " != " issue " ]; then
3328 echo " $d "
3429 fi
3530 done
@@ -38,14 +33,12 @@ display_usage() {
3833 exit 0
3934}
4035
36+ readonly KMC_LAUNCHER=node
4137QUIET=false
4238DEBUG=false
43- CLEAN=false
44- KEYBOARDS_ONLY=false
45- CUSTOM_KMCOMP=
4639INDEX=false
4740ZIPSOURCE=false
48- KMCOMP =" $KEYMAN_ROOT /developer/bin/kmcomp.exe "
41+ KMC =" $KEYMAN_ROOT /developer/src/kmc/build/src/kmc.js "
4942TARGETS=()
5043
5144# Parse args
@@ -57,69 +50,28 @@ while [[ $# -gt 0 ]] ; do
5750 --help|-h|-\? )
5851 display_usage
5952 ;;
60- --clean|-c)
61- CLEAN=true
62- ;;
6353 --debug|-d)
6454 DEBUG=true
6555 ;;
6656 --silent|-s)
6757 QUIET=true
6858 ;;
69- --keyboard|-k)
70- KEYBOARDS_ONLY=true
71- ;;
7259 --zip-source)
7360 ZIPSOURCE=true
7461 ;;
7562 --index)
7663 INDEX=true
7764 ;;
78- --kmcomp )
65+ --kmc )
7966 shift
80- KMCOMP=" $1 "
81- CUSTOM_KMCOMP=true
67+ KMC=" $1 "
8268 ;;
8369 * )
8470 TARGETS+=(" $key " )
8571 esac
8672 shift
8773done
8874
89- # TODO: while this is intended to be cross platform, we
90- # don't currently have a binary version of kmcomp available
91- # during Linux and macOS builds, so that will need to be
92- # manually sourced.
93- KMCOMP_LAUNCHER=
94-
95- if ! $CUSTOM_KMCOMP ; then
96- case " ${OSTYPE} " in
97- " cygwin" )
98- ;;
99- " msys" )
100- ;;
101- " darwin" * )
102- # For Catalina (10.15) onwards, must use wine64
103- base_macos_ver=10.15
104- macos_ver=$( sw_vers -productVersion)
105- if verlt " $macos_ver " " $base_macos_ver " ; then
106- KMCOMP_LAUNCHER=wine
107- else
108- # On Catalina, and later versions:
109- # wine-4.12.1 works; wine-5.0, wine-5.7 do not.
110- # retrieve these from:
111- # `brew tap gcenx/wine && brew install --cask --no-quarantine wine-crossover`
112- # may also need to `sudo spctl --master-disable`
113- KMCOMP_LAUNCHER=wine64
114- KMCOMP=" $( dirname $KMCOMP ) /kmcomp.x64.exe"
115- fi
116- ;;
117- * )
118- KMCOMP_LAUNCHER=wine
119- ;;
120- esac
121- fi
122-
12375# Build list of available targets from subfolders, if none specified
12476if [ ${# TARGETS[@]} == 0 ]; then
12577 for d in " $THIS_DIR /" * /; do
13284
13385if ! $QUIET ; then
13486 displayInfo " " \
135- " CLEAN: $CLEAN " \
13687 " DEBUG: $DEBUG " \
13788 " QUIET: $QUIET " \
138- " KEYBOARDS_ONLY: $KEYBOARDS_ONLY " \
13989 " TARGETS: ${TARGETS[@]} " \
14090 " ZIPSOURCE: $ZIPSOURCE " \
14191 " INDEX: $INDEX " \
14292 " "
14393fi
14494
145- clean () {
146- local kpj=" $1 .kpj" ss= s=
147- if $QUIET ; then
148- ss=-ss
149- s=-s
150- fi
151- pushd " $1 " > /dev/null
152- if [ -f build.sh ]; then
153- ./build.sh -c $s
154- else
155- $KMCOMP_LAUNCHER " $KMCOMP " -c $ss " $kpj "
156- fi
157- popd > /dev/null
158- }
159-
160- build () {
161- local kpj=" $1 .kpj" d= t= ss= target= s= k=
162- if $KEYBOARDS_ONLY ; then
163- k=-k
164- t=-t
165- target=" $1 .kmn"
166- fi
167- if $DEBUG ; then
168- d=-d
169- fi
170- if $QUIET ; then
171- s=-s
172- ss=-ss
173- fi
174- # -w - treat warnings as errors, we'll force this
175- # -cfc - check filename conventions
176- pushd " $1 " > /dev/null
177- if [ -f build.sh ]; then
178- ./build.sh $d $k $s
179- else
180- $KMCOMP_LAUNCHER " $KMCOMP " $d $ss -w -cfc " $kpj " $t " $target "
181- fi
182- popd > /dev/null
183- }
184-
18595zipsource () {
18696 local target=" $1 "
18797 pushd " $1 " > /dev/null
@@ -191,35 +101,26 @@ zipsource() {
191101
192102# ##
193103
194- for TARGET in " ${TARGETS[@]} " ; do
195- if $CLEAN ; then
196- if ! $QUIET ; then
197- echo
198- builder_heading " Cleaning target $TARGET "
199- echo
200- fi
201- clean " $TARGET "
202- else
203- if ! $QUIET ; then
204- echo
205- builder_heading " Building target $TARGET "
206- echo
207- fi
208- build " $TARGET "
104+ d=
105+ ss=
106+ if $DEBUG ; then
107+ d=-d
108+ fi
109+ if $QUIET ; then
110+ ss=" --log-level silent"
111+ fi
112+ $KMC_LAUNCHER " $KMC " build $d $ss -w " ${TARGETS[@]} "
209113
210- if $ZIPSOURCE ; then
211- zipsource " $TARGET "
212- fi
114+ for TARGET in " ${TARGETS[@]} " ; do
115+ if $ZIPSOURCE ; then
116+ zipsource " $TARGET "
213117 fi
214118done
215119
216120# ##
217121
218122if $INDEX ; then
219- if $CLEAN ; then
220- rm -f " $THIS_DIR /index.html"
221- else
222- cat << EOF > "$THIS_DIR /index.html"
123+ cat << EOF > "$THIS_DIR /index.html"
223124<!DOCTYPE html>
224125<html>
225126 <head>
@@ -231,19 +132,18 @@ if $INDEX; then
231132 <ul>
232133EOF
233134
234- for TARGET in " ${TARGETS[@]} " ; do
235- if $ZIPSOURCE ; then
236- echo " <li><a href='$TARGET /build/$TARGET .kmp'>$TARGET .kmp</a> (<a href='$TARGET /${TARGET} _source.zip'>source</a>)</li>" >> " $THIS_DIR /index.html"
237- else
238- echo " <li><a href='$TARGET /build/$TARGET .kmp'>$TARGET .kmp</a></li>" >> " $THIS_DIR /index.html"
239- fi
240- done
135+ for TARGET in " ${TARGETS[@]} " ; do
136+ if $ZIPSOURCE ; then
137+ echo " <li><a href='$TARGET /build/$TARGET .kmp'>$TARGET .kmp</a> (<a href='$TARGET /${TARGET} _source.zip'>source</a>)</li>" >> " $THIS_DIR /index.html"
138+ else
139+ echo " <li><a href='$TARGET /build/$TARGET .kmp'>$TARGET .kmp</a></li>" >> " $THIS_DIR /index.html"
140+ fi
141+ done
241142
242- cat << 'EOF ' >> "$THIS_DIR/index.html"
143+ cat << 'EOF ' >> "$THIS_DIR/index.html"
243144 </ul>
244145 </body>
245146</html>
246147EOF
247- fi
148+
248149fi
249- exit 0
0 commit comments