UNPKG

ember-cli-ajh

Version:

Command line tool for developing ambitious ember.js apps

104 lines (85 loc) 3.07 kB
'use strict'; // 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 packageConfig = require('../../package.json'); var debug = require('debug')('ember-cli:cli/index'); var merge = require('lodash/object/merge'); var path = require('path'); var version = packageConfig.version; var name = packageConfig.name; var trackingCode = packageConfig.trackingCode; 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; } } // Options: Array cliArgs, Stream inputStream, Stream outputStream module.exports = function(options) { var UI = options.UI || require('../ui'); var Leek = options.Leek || require('leek'); var Yam = options.Yam || require('yam'); // TODO: one UI (lib/models/project.js also has one for now...) var ui = new UI({ inputStream: options.inputStream, outputStream: options.outputStream, errorStream: options.errorStream || process.stderr, ci: process.env.CI || /^(dumb|emacs)$/.test(process.env.TERM), writeLevel: ~process.argv.indexOf('--silent') ? 'ERROR' : undefined }); var config = new Yam('ember-cli-ajh', { primary: Project.getProjectRoot() }); var leekOptions; var disableAnalytics = options.cliArgs && (options.cliArgs.indexOf('--disable-analytics') > -1 || options.cliArgs.indexOf('-v') > -1 || options.cliArgs.indexOf('--version') > -1) || config.get('disableAnalytics'); var defaultLeekOptions = { trackingCode: trackingCode, globalName: name, name: clientId(), version: version, silent: disableAnalytics }; var defaultUpdateCheckerOptions = { checkForUpdates: false }; if (config.get('leekOptions')) { leekOptions = merge(defaultLeekOptions, config.get('leekOptions')); } else { leekOptions = defaultLeekOptions; } debug('leek: %o', leekOptions); var leek = new Leek(leekOptions); var cli = new CLI({ ui: ui, analytics: leek, testing: options.testing, name: options.cli ? options.cli.name : 'ember', root: options.cli ? options.cli.root : path.resolve(__dirname, '..', '..'), npmPackage: options.cli ? options.cli.npmPackage : 'ember-cli-ajh' }); var project = Project.projectOrnullProject(ui, cli); var environment = { tasks: tasks, cliArgs: options.cliArgs, commands: commands, project: project, settings: merge(defaultUpdateCheckerOptions, config.getAll()) }; return cli.run(environment); };