/* eslint-env node */ /* eslint-disable no-console */ 'use strict'; const { copy, ensureDir, unlink } = require('fs-extra'); const { exec } = require('child_process'); const apiPath = 'api/'; const targets = [ 'composer.json', 'composer.lock', 'config.default.php', 'cron.php', 'index.php', 'classes/', 'utils/', ]; module.exports = { name: 'include-api-in-build', postBuild(result) { let environment = this.app.env; // do not include app if build is for testing purposes only if (environment === 'test') { return; } let outputPath = result.directory + '/api'; return Promise.resolve() .then(() => { return ensureDir(outputPath); }) .then(() => { return Promise.all( targets.map((target) => { return copy(`${apiPath}/${target}`, `${outputPath}/${target}`); }), ); }) .then(() => { return new Promise((resolve, reject) => { exec( 'composer install --no-dev', { cwd: outputPath, }, (err) => { if (err) { reject(err); } resolve(); }, ); }); }) .then(() => { return Promise.all([ unlink(`${outputPath}/composer.json`), unlink(`${outputPath}/composer.lock`), ]); }); }, };