@@ -15,7 +15,7 @@ const unzipper = require('unzipper');
15
15
const os = require ( 'node:os' ) ;
16
16
const { mkdirp } = require ( 'mkdirp' ) ;
17
17
const { resolve } = require ( 'node:path' ) ;
18
- const { exec } = require ( 'node:child_process' ) ;
18
+ const { exec, spawn } = require ( 'node:child_process' ) ;
19
19
const downloadTestCerts = require ( './lib/download-test-certs.js' ) ;
20
20
const { promisify } = require ( 'node:util' ) ;
21
21
@@ -162,13 +162,30 @@ async function buildRust(root) {
162
162
const bindingsPath = resolve ( generatedDir , 'c2pa.node' ) ;
163
163
const cargoPath = resolve ( root , 'Cargo.toml' ) ;
164
164
await mkdirp ( generatedDir ) ;
165
+
165
166
return new Promise ( ( resolve , reject ) => {
166
- const result = exec (
167
- `npx cargo-cp-artifact -nc "${ bindingsPath } " -- cargo build --message-format=json-render-diagnostics --release --manifest-path="${ cargoPath } "` ,
168
- execCallback ,
169
- ) ;
170
- result . on ( 'exit' , ( code ) => {
171
- code === 0 ? resolve ( ) : reject ( ) ;
167
+ const child = spawn ( 'npx' , [
168
+ 'cargo-cp-artifact' ,
169
+ '-nc' , bindingsPath ,
170
+ '--' ,
171
+ 'cargo' , 'build' ,
172
+ '--message-format=json-render-diagnostics' ,
173
+ '--release' ,
174
+ `--manifest-path=${ cargoPath } `
175
+ ] , {
176
+ stdio : 'inherit' // This will show real-time output
177
+ } ) ;
178
+
179
+ child . on ( 'exit' , ( code ) => {
180
+ if ( code === 0 ) {
181
+ resolve ( ) ;
182
+ } else {
183
+ reject ( new Error ( `Cargo build failed with exit code ${ code } ` ) ) ;
184
+ }
185
+ } ) ;
186
+
187
+ child . on ( 'error' , ( err ) => {
188
+ reject ( err ) ;
172
189
} ) ;
173
190
} ) ;
174
191
}
0 commit comments