@@ -12,66 +12,45 @@ var IonicTask = function() {};
1212IonicTask . prototype = new Task ( ) ;
1313
1414IonicTask . 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