UNPKG

ember-cli

Version:

Command line tool for developing ambitious ember.js apps

65 lines (52 loc) 1.36 kB
'use strict'; const chalk = require('chalk'); const path = require('path'); const Task = require('../models/task'); const Watcher = require('../models/watcher'); const Builder = require('../models/builder'); const pDefer = require('p-defer'); class BuildWatchTask extends Task { constructor(options) { super(options); this._builder = null; this._runDeferred = null; } async run(options) { let { ui } = this; ui.startProgress(chalk.green('Building'), chalk.green('.')); this._runDeferred = pDefer(); let builder = (this._builder = options._builder || new Builder({ ui, outputPath: options.outputPath, environment: options.environment, project: this.project, })); ui.writeLine(`Environment: ${options.environment}`); let watcher = options._watcher || ( await Watcher.build({ ui, builder, options, ignored: [path.resolve(this.project.root, options.outputPath)], }) ).watcher; await watcher; // Run until failure or signal to exit return this._runDeferred.promise; } /** * Exit silently * * @private * @method onInterrupt */ async onInterrupt() { await this._builder.cleanup(); this._runDeferred.resolve(); } } module.exports = BuildWatchTask;