1+ #!/usr/bin/env node
2+ // Copyright IBM Corp. 2017. All Rights Reserved.
3+ // Node module: @loopback /cli
4+ // This file is licensed under the MIT License.
5+ // License text available at https://opensource.org/licenses/MIT
6+
7+ 'use strict' ;
8+
9+ const assert = require ( 'assert' ) ;
10+ const camelCaseKeys = require ( 'camelcase-keys' ) ;
11+ const debug = require ( 'debug' ) ( 'loopback:cli' ) ;
12+ const minimist = require ( 'minimist' ) ;
13+ const path = require ( 'path' ) ;
14+ const yeoman = require ( 'yeoman-environment' ) ;
15+
16+ const opts = minimist ( process . argv . slice ( 2 ) , {
17+ alias : {
18+ help : 'h' ,
19+ version : 'v' ,
20+ commands : 'l' ,
21+ } ,
22+ } ) ;
23+
24+ if ( opts . version ) {
25+ const ver = require ( '../package.json' ) . version ;
26+ console . log ( 'Version: %s' , ver ) ;
27+ return ;
28+ }
29+
30+ var env = yeoman . createEnv ( ) ;
31+
32+ env . register ( path . join ( __dirname , '../generators/app' ) , 'loopback4:app' ) ;
33+ env . register ( path . join ( __dirname , '../generators/extension' ) , 'loopback4:extension' ) ;
34+
35+ // list generators
36+ if ( opts . commands ) {
37+ console . log ( 'Available commands: ' ) ;
38+ var list = Object . keys ( env . getGeneratorsMeta ( ) )
39+ . filter ( name => / ^ l o o p b a c k 4 : / . test ( name ) )
40+ . map ( name => name . replace ( / ^ l o o p b a c k 4 : / , ' lb4 ' ) ) ;
41+ console . log ( list . join ( '\n' ) ) ;
42+ return ;
43+ }
44+
45+ const args = opts . _ ;
46+ const originalCommand = args . shift ( ) ;
47+ let command = 'loopback4:' + ( originalCommand || 'app' ) ;
48+ const supportedCommands = env . getGeneratorsMeta ( ) ;
49+
50+ if ( ! ( command in supportedCommands ) ) {
51+ command = 'loopback4:app' ;
52+ args . unshift ( originalCommand ) ;
53+ args . unshift ( command ) ;
54+ } else {
55+ args . unshift ( command ) ;
56+ }
57+
58+ debug ( 'invoking generator' , args ) ;
59+
60+ // `yo` is adding flags converted to CamelCase
61+ const options = camelCaseKeys ( opts , { exclude : [ '--' , / ^ \w $ / , 'argv' ] } ) ;
62+ Object . assign ( options , opts ) ;
63+
64+ debug ( 'env.run %j %j' , args , options ) ;
65+ env . run ( args , options ) ;
0 commit comments