#!/usr/bin/env node const Abigail = require('./').Abigail; /* * abigail lifecycle (in serial) * initialized * parse * attach-plugins * (unless task) -> output logo && exit 1 * launch * task-start (in parallel) * script-start * script-end * script-error * task-end * detach-plugins * exit * (all expection) -> output trace && exit 1 */ /* eslint-disable prefer-arrow-callback */ const abigail = new Abigail().initialize(process.argv.slice(2)); abigail.emit('initialized') .then(function () {return abigail.emit('parse');}) .then(function () {return abigail.emit('attach-plugins');}) .then(function () {return abigail.emit('launch');}) .then(function () { if (abigail.listeners('exit').length) { return abigail.emit('detach-plugins') .then(function () {return abigail.emit('exit');}); } return process.once('SIGINT', function () { try { abigail.props.plugins.log.abort(); } catch (e) { // ignore } abigail.emit('detach-plugins') .then(function () {return abigail.emit('exit');}); }); }) .catch(function (reason) { console.trace(reason.message); // eslint-disable-line no-console process.exit(1); });