ionic
Version:
A tool for creating and developing Ionic Framework mobile apps.
68 lines (56 loc) • 1.66 kB
JavaScript
var fs = require('fs'),
shelljs = require('shelljs/global'),
argv = require('optimist').boolean(['no-cordova', 'sass', 'list', 'w']).argv,
prompt = require('prompt'),
colors = require('colors'),
Q = require('q'),
open = require('open'),
IonicTemplates = require('./templates').IonicTask,
IonicStore = require('./store').IonicStore,
Task = require('./task').Task;
IonicStats = require('./stats').IonicStats,
cliLib = require('ionic-app-lib');
var Start = cliLib.start;
var IonicTask = function() {};
IonicTask.prototype = new Task();
IonicTask.prototype.run = function run(ionic) {
if (argv.list || argv.l) {
new IonicTemplates().run(ionic);
return;
}
if (argv._.length < 2) {
return this.ionic.fail('Invalid command', 'start');
}
if (argv._[1] == '.') {
console.log('Please name your Ionic project something meaningful other than \'.\''.red);
return
}
var promptPromise,
options = Utils.preprocessCliOptions(argv),
startingApp = true;
if (fs.existsSync(options.targetPath)) {
promptPromise = Start.promptForOverwrite(options.targetPath);
} else {
promptPromise = Q(true);
}
promptPromise
.then(function(promptToContinue) {
if (!promptToContinue) {
startingApp = false;
return
}
return Start.startApp(options);
})
.then(function() {
if (startingApp) {
Start.printQuickHelp(options);
ionic.printNewsUpdates(true);
return Start.promptLogin(options);
}
})
.catch(function(error) {
console.log('Run had an error:', error);
});
IonicStats.t();
};
exports.IonicTask = IonicTask;