mirror of
https://github.com/qlik-oss/nebula.js.git
synced 2025-12-19 09:48:18 -05:00
71 lines
1.3 KiB
JavaScript
71 lines
1.3 KiB
JavaScript
#! /usr/bin/env node
|
|
|
|
const yargs = require('yargs');
|
|
|
|
const mashupServer = require('../test/mashup/server');
|
|
|
|
const args = yargs.option('start', {
|
|
default: true,
|
|
type: 'boolean',
|
|
describe: 'Start the mashup server',
|
|
}).argv;
|
|
|
|
const { start } = args;
|
|
|
|
let hasCleanedUp = false;
|
|
const services = [];
|
|
|
|
if (start) {
|
|
let m;
|
|
services.push({
|
|
name: 'Mashup server',
|
|
start: async () => {
|
|
m = await mashupServer();
|
|
process.env.BASE_URL = m.url;
|
|
},
|
|
stop: async () => {
|
|
await m.close();
|
|
},
|
|
});
|
|
}
|
|
|
|
function cleanup() {
|
|
if (hasCleanedUp) {
|
|
return;
|
|
}
|
|
hasCleanedUp = true;
|
|
console.log('> Stopping services');
|
|
services.forEach(async (service) => {
|
|
console.log(`${service.name}`);
|
|
await service.stop();
|
|
});
|
|
}
|
|
|
|
async function run() {
|
|
console.log('> Starting services');
|
|
|
|
try {
|
|
for await (const service of services) {
|
|
console.log(`${service.name}`);
|
|
await service.start();
|
|
}
|
|
console.log('> All up and running');
|
|
} catch (err) {
|
|
console.error(`\x1b[31m${JSON.stringify(err)}\x1b[0m`);
|
|
cleanup();
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
process.on('exit', cleanup);
|
|
process.on('SIGINT', process.exit);
|
|
process.on('SIGTERM', process.exit);
|
|
process.on('uncaughtException', (err) => {
|
|
if (!hasCleanedUp) {
|
|
console.log(err.stack);
|
|
process.exit(1);
|
|
}
|
|
});
|
|
|
|
run();
|