Skip to content

Commit f613374

Browse files
committed
chore(generate): generate updates
1 parent b5489b3 commit f613374

File tree

1 file changed

+25
-46
lines changed

1 file changed

+25
-46
lines changed

lib/ionic/generate.js

Lines changed: 25 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -12,66 +12,45 @@ var IonicTask = function() {};
1212
IonicTask.prototype = new Task();
1313

1414
IonicTask.prototype.run = function(ionic, argv) {
15-
/*
16-
Usage: `ionic generate` or `ionic g`
17-
ionic generate <generator> <name>
18-
19-
ionic g page about * generate page in pwd/www/app/about - about.html, about.js, about.scss
20-
ionic g page about --tabs
21-
*/
2215
try {
23-
var generator = argv._[1];
24-
var listing = false;
16+
if (!argv.list && argv._.length < 3) {
17+
//TODO should have a mechanism for printing usage on invalid tasks
18+
Utils.fail('Invalid arguments. Usage: ionic generate <generator> <name>');
19+
}
2520

26-
if (!Utils.isIonicV2(process.cwd())) {
27-
return Utils.fail('You do not appear to have a compatible version of Ionic v2 installed.\n' +
28-
'Ionic Framework v2 version 2.0.0-alpha.31 or later is required to use the generators.\n' +
29-
'Please run: "npm install ionic-framework"');
21+
if (!argv.v2) {
22+
return Utils.fail('Generators are only available for Ionic 2 projects');
3023
}
3124

32-
if (generator == 'help') {
33-
logging.logger.info('Get started using generators right now!')
34-
logging.logger.info('Generators help you set up code quickly to get running.');
35-
logging.logger.info('List all the generators by passing the --list option: "ionic g --list"');
36-
logging.logger.info('Or simply type "ionic g page MyPage" to generate a page!');
37-
return;
25+
var generator = argv._[1];
26+
var name = argv._[2] //TODO support multiple names
27+
28+
try {
29+
ionicModule = require(path.join(process.cwd(), 'node_modules', 'ionic-framework'));
30+
} catch (err) {
31+
Utils.fail(err);
3832
}
3933

4034
if (argv.list) {
41-
logging.logger.info('Available generators:');
42-
listing = true;
43-
// return;
35+
ionicModule.Generate.printAvailableGenerators();
36+
return;
4437
}
4538

46-
var name = argv._[2];
4739
var promise;
48-
49-
var ionicFrameworkModuleName = 'ionic-framework';
50-
// var ionicFrameworkModuleName = 'ionic2';
51-
var ionicModulePath = path.join(process.cwd(), 'node_modules', ionicFrameworkModuleName);
52-
5340
try {
54-
ionicModule = require(ionicModulePath);
55-
56-
if (listing) {
57-
for (gen in ionicModule.Generate.generators) {
58-
console.log(' *'.blue , gen);
59-
}
60-
return;
61-
} else {
62-
return ionicModule.generate({appDirectory: process.cwd(), generator: generator, name: name});
63-
}
64-
} catch (ex) {
65-
if (ex.message.indexOf('no generator available') != -1) {
66-
return console.log('✗ '.red + ex.message.red);
41+
promise = ionicModule.generate({appDirectory: process.cwd(), generator: generator, name: name});
42+
} catch (err) {
43+
if (err.message.indexOf('no generator available') != -1) {
44+
console.log('✗ '.red + err.message.red);
45+
ionicModule.Generate.printAvailableGenerators();
46+
return
6747
}
68-
return Utils.fail('You do not appear to have a compatible version of Ionic v2 installed.\n' +
69-
'Ionic Framework v2 version 2.0.0-alpha.31 or later is required to use the generators.\n' +
70-
'Please run: "npm install ionic-framework"');
48+
return Utils.fail(err);
7149
}
50+
return promise;
7251

73-
} catch (ex) {
74-
Utils.fail('There was an error generating your item:', ex);
52+
} catch (err) {
53+
Utils.fail('There was an error generating your item:', err);
7554
}
7655
}
7756

0 commit comments

Comments
 (0)