UNPKG

ember-cli

Version:

Command line tool for developing ambitious ember.js apps

57 lines (49 loc) 1.98 kB
'use strict'; // Runs `bower install` in cwd var Promise = require('../ext/promise'); var Task = require('../models/task'); module.exports = Task.extend({ init: function() { this.bower = this.bower || require('bower'); this.bowerConfig = this.bowerConfig || require('bower-config'); }, // Options: Boolean verbose run: function(options) { var chalk = require('chalk'); var bower = this.bower; var bowerConfig = this.bowerConfig; var ui = this.ui; var packages = options.packages || []; ui.pleasantProgress.start(chalk.green('Installing browser packages via Bower'), chalk.green('.')); var config = bowerConfig.read(); config.interactive = true; return new Promise(function(resolve, reject) { bower.commands.install(packages, { save: true }, config) // Packages, options, config .on('log', logBowerMessage) .on('prompt', ui.prompt.bind(ui)) .on('error', reject) .on('end', resolve); }) .finally(function() { ui.pleasantProgress.stop(); }) .then(function() { ui.writeLine(chalk.green('Installed browser packages via Bower.')); }); function logBowerMessage(message) { if (message.level === 'conflict') { // e.g. // conflict Unable to find suitable version for ember-data // 1) ember-data 1.0.0-beta.6 // 2) ember-data ~1.0.0-beta.7 ui.writeLine(' ' + chalk.red('conflict') + ' ' + message.message); message.data.picks.forEach(function(pick, index) { ui.writeLine(' ' + chalk.green((index + 1) + ')') + ' ' + message.data.name + ' ' + pick.endpoint.target); }); } else if (message.level === 'info' && options.verbose) { // e.g. // cached git://example.com/some-package.git#1.0.0 ui.writeLine(' ' + chalk.green(message.id) + ' ' + message.message); } } } });