UNPKG

zcatalyst-cli

Version:

Command Line Tool for CATALYST

102 lines (88 loc) 2.67 kB
'use strict'; import { inspect } from 'util'; import { join } from 'path'; import { writeFileSync } from 'fs'; import { pathToFileURL } from 'url'; const args = process.argv.slice(2); const target = JSON.parse(args[0]); const data = JSON.parse(args[1]); const projectJson = JSON.parse(args[2]); const authJson = JSON.parse(args[3]); const buildDir = JSON.parse(args[4]); const responseFile = join(buildDir, '.catalyst', 'user_res_body'); const writeAndExit = (resp) => { writeFileSync(responseFile, JSON.stringify(resp)); process.exit(0); }; /** * execution timeout of 15 minutes */ const timeout = 15 * 60 * 1000; // const endTime = timeout + Date.now(); // exit on timeout process.env.DEBUG === 'false' && setTimeout(() => { writeToFile('TIMEOUT', 408); process.exit(0); }, timeout); const integrationRequest = data || {}; integrationRequest.catalystHeaders = Object.assign(projectJson, authJson); integrationRequest.timestamp = Date.now(); const integrationResponse = { end: (response) => { if (response === undefined) { return writeAndExit({ Status: 204 }); } if ( response.constructor.name !== 'IntegResponse' || response.buildResponse === undefined || typeof response.buildResponse !== 'function' ) { // eslint-disable-next-line no-console console.error('Invalid response object: ', response); return writeAndExit({ Status: 500 }); } const clean_response = response.buildResponse(); if ( clean_response === undefined || clean_response.status === undefined || typeof clean_response.status !== 'number' || clean_response.contentType === undefined || typeof clean_response.contentType !== 'string' || clean_response.responseBody === undefined ) { // eslint-disable-next-line no-console console.error( "Invalid value returned from function 'buildResponse()': ", clean_response ); return writeAndExit({ Status: 500 }); } return writeAndExit({ Status: clean_response.status, ContentType: clean_response.contentType, responseBody: clean_response.responseBody }); } }; import(pathToFileURL(target.index)) .then((module) => { try { if (!('default' in module)) { throw new Error('Could not find any default export'); } if (typeof module.default !== 'function') { throw new Error('The default export is not a function'); } module.default(integrationRequest, integrationResponse); } catch (e) { // eslint-disable-next-line no-console console.error(e); writeAndExit({ error: inspect(e) }, 0); } }) .catch((e) => { // eslint-disable-next-line no-console console.error(e); writeAndExit({ error: inspect(e) }); });