@@ -57,8 +57,17 @@ function get_available_port() {
5757 } )
5858}
5959
60+ function commandExistsSync ( executable_name ) {
61+ const envPath = process . env . PATH || ""
62+ return envPath . split ( path . delimiter ) . some ( ( dir ) => {
63+ const filePath = path . join ( dir , executable_name )
64+ return fs . existsSync ( filePath ) && fs . statSync ( filePath ) . isFile ( )
65+ } )
66+ }
67+
6068async function run_script (
61- command ,
69+ executable_name ,
70+ executable_path ,
6271 args ,
6372 expected_response ,
6473 timeout_seconds = 30 ,
@@ -68,6 +77,10 @@ async function run_script(
6877 reject ( "Timed out after " + timeout_seconds + " seconds" )
6978 } , timeout_seconds * 1000 )
7079
80+ const command = commandExistsSync ( executable_name )
81+ ? executable_name
82+ : path . join ( executable_path , executable_name )
83+ console . log ( "run_script" , command , args )
7184 const child = child_process . spawn ( command , args , {
7285 encoding : "utf8" ,
7386 shell : true ,
@@ -109,7 +122,8 @@ async function run_script(
109122}
110123
111124async function run_back (
112- command ,
125+ executable_name ,
126+ executable_path ,
113127 args = {
114128 project_folder_path,
115129 upload_folder_path : undefined ,
@@ -128,22 +142,36 @@ async function run_back(
128142 "--allowed_origin http://localhost:*" ,
129143 "--timeout " + 0 ,
130144 ]
131- console . log ( "run_back" , command , back_args )
132- await run_script ( command , back_args , "Serving Flask app" )
145+ console . log ( "run_back" , executable_name , executable_path , back_args )
146+ await run_script (
147+ executable_name ,
148+ executable_path ,
149+ back_args ,
150+ "Serving Flask app" ,
151+ )
133152 resolve ( port )
134153 } )
135154}
136155
137- async function run_viewer ( command , args = { project_folder_path } ) {
156+ async function run_viewer (
157+ executable_name ,
158+ executable_path ,
159+ args = { project_folder_path } ,
160+ ) {
138161 return new Promise ( async ( resolve , reject ) => {
139162 const port = await get_available_port ( )
140163 const viewer_args = [
141164 "--port " + port ,
142165 "--data_folder_path " + args . project_folder_path ,
143166 "--timeout " + 0 ,
144167 ]
145- console . log ( "run_viewer" , command , viewer_args )
146- await run_script ( command , viewer_args , "Starting factory" )
168+ console . log ( "run_viewer" , executable_name , executable_path , viewer_args )
169+ await run_script (
170+ executable_name ,
171+ executable_path ,
172+ viewer_args ,
173+ "Starting factory" ,
174+ )
147175 resolve ( port )
148176 } )
149177}
@@ -224,19 +252,27 @@ function kill_viewer(viewer_port) {
224252async function run_browser (
225253 script_name ,
226254 microservices_options = {
227- back : { command , args : { project_folder_path } } ,
228- viewer : { command , args : { project_folder_path } } ,
255+ back : { executable_name , executable_path , args : { project_folder_path } } ,
256+ viewer : { executable_name , executable_path , args : { project_folder_path } } ,
229257 } ,
230258) {
231259 console . log ( "microservices_options" , microservices_options )
232- const back_promise = run_back ( microservices_options . back . command , {
233- ...microservices_options . back . args ,
234- } )
260+ const back_promise = run_back (
261+ microservices_options . back . executable_name ,
262+ microservices_options . back . executable_path ,
263+ {
264+ ...microservices_options . back . args ,
265+ } ,
266+ )
235267 console . log ( "back_promise" , back_promise )
236268
237- const viewer_promise = run_viewer ( microservices_options . viewer . command , {
238- ...microservices_options . viewer . args ,
239- } )
269+ const viewer_promise = run_viewer (
270+ microservices_options . viewer . executable_name ,
271+ microservices_options . viewer . executable_path ,
272+ {
273+ ...microservices_options . viewer . args ,
274+ } ,
275+ )
240276 console . log ( "viewer_promise" , viewer_promise )
241277
242278 const [ back_port , viewer_port ] = await Promise . all ( [
0 commit comments