11#!/usr/bin/env zx
22
3+ let target = argv . target ;
34let jobs = argv . jobs ;
45
56if ( ! jobs ) {
@@ -15,34 +16,56 @@ 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+ }
31+
32+ cd ( "build" ) ;
2433
25- // Create build folder if needed
26- if ( ! ( await fs . exists ( "./build" ) ) ) {
27- await $ `mkdir build` ;
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" ) ;
43+
44+ cd ( ".." ) ;
2845}
29- cd ( "build" ) ;
3046
31- // Build with emsdk
32- await $ `emcmake cmake -G Ninja ..` ;
33- await $ `cmake --build . -j ${ jobs } ` ;
47+ async function test ( ) {
48+ // Create build folder if needed
49+ if ( ! ( await fs . exists ( "./build/test" ) ) ) {
50+ await $ `mkdir -p ./build/test` ;
51+ }
3452
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" ) ;
53+ cd ( "build/test" ) ;
4054
41- // Build tests
42- if ( ! ( await fs . exists ( "./test" ) ) ) {
43- await $ `mkdir test` ;
55+ await $ `cmake ../../test` ;
56+ await $ `cmake --build .` ;
57+
58+ cd ( "../.." ) ;
4459}
4560
46- cd ( "test" ) ;
47- await $ `cmake ../../test` ;
48- await $ `cmake --build .` ;
61+ switch ( target ) {
62+ case "build" :
63+ await build ( ) ;
64+ break ;
65+ case "test" :
66+ await test ( ) ;
67+ break ;
68+ default :
69+ await build ( ) ;
70+ await test ( ) ;
71+ }
0 commit comments