5 lines
2.0 KiB
JavaScript
5 lines
2.0 KiB
JavaScript
import fs from 'node:fs';import path from 'node:path';import net from 'node:net';import {spawn} from 'node:child_process';
|
|
const tag=process.argv[2];if(!/^[a-f0-9]{12}$/.test(tag??''))throw Error('QA tag required');const run=JSON.parse(fs.readFileSync('C:/laragon/data/sgf-tempo/run/modular-regression-current.json')),root=path.join(run.root,'private/receipt-composition-'+tag),s=JSON.parse(fs.readFileSync(path.join(root,'state.json'))),out=path.join(root,'demo-server.json');const port=s.stockPeriod?8085:s.stockTrace?8084:s.stockComposition?8083:s.obligationEvidence?8082:s.invoiceProgress?8081:s.requestHistory?8080:s.continuity?8079:s.focus?8078:s.receiptDocuments?8077:s.supplierDocuments?8076:s.receiptWorkspace?8075:s.dossiers?8074:s.supplierSearch?8073:s.integrated?8072:s.obligations?8071:s.invoices?8070:s.geography?8069:s.requests?8068:s.suppliers?8067:s.sourcing?8066:s.orders?8065:8064;if(fs.existsSync(out)||!fs.existsSync(path.join(root,s.integrated?'integrated-baseline.json':s.obligations?'obligation-baseline.json':s.invoices?'invoice-baseline.json':s.geography?'geography-baseline.json':s.requests?'request-baseline.json':s.suppliers?'supplier-baseline.json':s.sourcing?'sourcing-baseline.json':s.orders?'order-baseline.json':'demo-baseline.json')))throw Error('New prepared demonstration required');
|
|
await new Promise((resolve,reject)=>{const probe=net.createServer();probe.once('error',reject);probe.listen(port,'127.0.0.1',()=>probe.close(resolve));});
|
|
const stdout=fs.openSync(path.join(root,'demo-stdout.log'),'a'),stderr=fs.openSync(path.join(root,'demo-stderr.log'),'a'),child=spawn('C:/laragon/tools/sgf-tempo/php-8.4.27/php.exe',['-S','127.0.0.1:'+port,'-t',path.join(s.app,'public'),path.resolve('scripts/receipt-composition-http.php')],{cwd:s.app,env:s.env,detached:true,windowsHide:true,stdio:['ignore',stdout,stderr]});fs.writeFileSync(out,JSON.stringify({pid:child.pid,port,tag,root,qa_only:true,created:new Date().toISOString()},null,2));child.unref();console.log(JSON.stringify({pid:child.pid,port,tag}));
|