builder: use os.new_process() instead of os.system() in v run (#12214)
parent
a006090b08
commit
3a073329ff
|
@ -118,26 +118,30 @@ fn (mut b Builder) run_compiled_executable_and_exit() {
|
||||||
if b.pref.is_verbose {
|
if b.pref.is_verbose {
|
||||||
println('============ running $b.pref.out_name ============')
|
println('============ running $b.pref.out_name ============')
|
||||||
}
|
}
|
||||||
mut exefile := os.real_path(b.pref.out_name)
|
|
||||||
mut cmd := '"$exefile"'
|
|
||||||
if b.pref.backend.is_js() {
|
|
||||||
exefile = os.real_path('${b.pref.out_name}.js').replace('.js.js', '.js')
|
|
||||||
cmd = 'node "$exefile"'
|
|
||||||
}
|
|
||||||
for arg in b.pref.run_args {
|
|
||||||
// Determine if there are spaces in the parameters
|
|
||||||
if arg.index_byte(` `) > 0 {
|
|
||||||
cmd += ' "' + arg + '"'
|
|
||||||
} else {
|
|
||||||
cmd += ' ' + arg
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if b.pref.is_verbose {
|
|
||||||
println('command to run executable: $cmd')
|
|
||||||
}
|
|
||||||
if b.pref.is_test || b.pref.is_run {
|
if b.pref.is_test || b.pref.is_run {
|
||||||
ret := os.system(cmd)
|
compiled_file := os.real_path(b.pref.out_name)
|
||||||
b.cleanup_run_executable_after_exit(exefile)
|
run_file := if b.pref.backend.is_js() {
|
||||||
|
node_basename := $if windows { 'node.exe' } $else { 'node' }
|
||||||
|
os.find_abs_path_of_executable(node_basename) or {
|
||||||
|
panic('Could not find `node` in system path. Do you have Node.js installed?')
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
compiled_file
|
||||||
|
}
|
||||||
|
mut run_args := []string{cap: b.pref.run_args.len + 1}
|
||||||
|
if b.pref.backend.is_js() {
|
||||||
|
run_args << compiled_file
|
||||||
|
}
|
||||||
|
run_args << b.pref.run_args
|
||||||
|
mut run_process := os.new_process(run_file)
|
||||||
|
run_process.set_args(run_args)
|
||||||
|
if b.pref.is_verbose {
|
||||||
|
println('running $run_process.filename with arguments $run_process.args')
|
||||||
|
}
|
||||||
|
run_process.wait()
|
||||||
|
ret := run_process.code
|
||||||
|
run_process.close()
|
||||||
|
b.cleanup_run_executable_after_exit(compiled_file)
|
||||||
exit(ret)
|
exit(ret)
|
||||||
}
|
}
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
Loading…
Reference in New Issue