ember-cli-toranb
Version:
Command line tool for developing ambitious ember.js apps
81 lines (67 loc) • 2.08 kB
JavaScript
;
// Main entry point
var Project = require('../models/project');
var requireAsHash = require('../utilities/require-as-hash');
var Command = require('../models/command');
var commands = requireAsHash('../commands/*.js', Command);
var Task = require('../models/task');
var tasks = requireAsHash('../tasks/*.js', Task);
var CLI = require('./cli');
var Yam = require('yam');
var packageConfig = require('../../package.json');
var debug = require('debug')('ember-cli:cli/index');
var version = packageConfig.version;
var name = packageConfig.name;
var trackingCode = packageConfig.trackingCode;
// Options: Array cliArgs, Stream inputStream, Stream outputStream
module.exports = cli;
function clientId() {
var ConfigStore = require('configstore');
var configStore = new ConfigStore('ember-cli');
var id = configStore.get('client-id');
if (id) {
return id;
} else {
id = require('node-uuid').v4().toString();
configStore.set('client-id', id);
return id;
}
}
function cli(options) {
var UI = options.UI || require('../ui');
var Leek = options.Leek || require('leek');
var ui = new UI({
inputStream: options.inputStream,
outputStream: options.outputStream
});
var config = new Yam('ember-cli');
var leekOptions = {
trackingCode: trackingCode,
globalName: name,
name: clientId(),
version: version,
silent: config.get('disableAnalytics')
};
debug('leek: %o', leekOptions);
var leek = new Leek(leekOptions);
var project = Project.closest(process.cwd())
.catch(function(reason) {
if (reason instanceof Project.NotFoundError) {
return Project.NULL_PROJECT;
} else {
throw reason;
}
});
var environment = {
tasks: tasks,
cliArgs: options.cliArgs,
commands: commands,
project: project,
settings: config.getAll()
};
return new CLI({
ui: ui,
analytics: leek,
testing: options.testing
}).run(environment);
}