1
1
#!/usr/bin/env zx
2
2
3
+ let target = argv . target ;
3
4
let jobs = argv . jobs ;
4
5
5
6
if ( ! jobs ) {
@@ -15,34 +16,56 @@ if (!jobs) {
15
16
}
16
17
}
17
18
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" ) ;
24
33
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 ( ".." ) ;
28
45
}
29
- cd ( "build" ) ;
30
46
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
+ }
34
52
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" ) ;
40
54
41
- // Build tests
42
- if ( ! ( await fs . exists ( "./test" ) ) ) {
43
- await $ `mkdir test` ;
55
+ await $ `cmake ../../test` ;
56
+ await $ `cmake --build .` ;
57
+
58
+ cd ( "../.." ) ;
44
59
}
45
60
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