11#!/usr/bin/env zx
22
3+ let target = argv . target ;
34let jobs = argv . jobs ;
45
56if ( ! jobs ) {
@@ -15,34 +16,52 @@ if (!jobs) {
1516 }
1617}
1718
18- try {
19- await which ( "emcmake" ) ;
20- } catch {
21- console . log ( "ERROR: Couldn't find `emcmake`, is emsdk installed?" ) ;
22- process . exit ( 1 ) ;
23- }
19+ async function build ( ) {
20+ try {
21+ await which ( "emcmake" ) ;
22+ } catch {
23+ console . log ( "ERROR: Couldn't find `emcmake`, is emsdk installed?" ) ;
24+ process . exit ( 1 ) ;
25+ }
26+
27+ // Create build folder if needed
28+ if ( ! ( await fs . exists ( "./build" ) ) ) {
29+ await $ `mkdir build` ;
30+ }
2431
25- // Create build folder if needed
26- if ( ! ( await fs . exists ( "./build" ) ) ) {
27- await $ `mkdir build` ;
32+ cd ( "build" ) ;
33+
34+ // Build with emsdk
35+ await $ `emcmake cmake -G Ninja ..` ;
36+ await $ `cmake --build . -j ${ jobs } ` ;
37+
38+ // Bundle api.js and copy artifacts to dist
39+ await fs . copy ( "../src/api.js" , "api.js" ) ;
40+ await $ `esbuild api.js --bundle --platform=node --outfile=../dist/api.js` ;
41+ await fs . copy ( "../src/cli.js" , "../dist/cli.js" ) ;
42+ await fs . copy ( "../postject-api.h" , "../dist/postject-api.h" ) ;
2843}
29- cd ( "build" ) ;
3044
31- // Build with emsdk
32- await $ `emcmake cmake -G Ninja ..` ;
33- await $ `cmake --build . -j ${ jobs } ` ;
45+ async function test ( ) {
46+ // Create build folder if needed
47+ if ( ! ( await fs . exists ( "./build/test" ) ) ) {
48+ await $ `mkdir -p build/test` ;
49+ }
3450
35- // Bundle api.js and copy artifacts to dist
36- await fs . copy ( "../src/api.js" , "api.js" ) ;
37- await $ `esbuild api.js --bundle --platform=node --outfile=../dist/api.js` ;
38- await fs . copy ( "../src/cli.js" , "../dist/cli.js" ) ;
39- await fs . copy ( "../postject-api.h" , "../dist/postject-api.h" ) ;
51+ cd ( "build/test" ) ;
4052
41- // Build tests
42- if ( ! ( await fs . exists ( "./test" ) ) ) {
43- await $ `mkdir test` ;
53+ await $ `cmake ../../test` ;
54+ await $ `cmake --build .` ;
4455}
4556
46- cd ( "test" ) ;
47- await $ `cmake ../../test` ;
48- await $ `cmake --build .` ;
57+ switch ( target ) {
58+ case "build" :
59+ await build ( ) ;
60+ break ;
61+ case "test" :
62+ await test ( ) ;
63+ break ;
64+ default :
65+ await build ( ) ;
66+ await test ( ) ;
67+ }
0 commit comments