22
33import util from 'util' ;
44import path from 'path' ;
5- import lodash from 'lodash' ;
5+ import _ from 'lodash' ;
66import s from 'underscore.string' ;
7- import semver from 'semver ' ;
7+ import { Base as YoBase } from 'yeoman-generator ' ;
88import yoWelcome from 'yeoman-welcome' ;
99import * as genUtils from './util' ;
1010
1111// extend lodash with underscore.string
12- lodash . mixin ( s . exports ( ) ) ;
12+ _ . mixin ( s . exports ( ) ) ;
1313
14- export function genBase ( self ) {
15- self = self || this ;
14+ export class Base extends YoBase {
15+ constructor ( ...args ) {
16+ super ( ...args ) ;
17+
18+ this . lodash = _ ;
19+ this . yoWelcome = yoWelcome ;
20+
21+ this . appname = _ . camelize ( _ . slugify ( _ . humanize ( this . determineAppname ( ) ) ) ) ;
22+
23+ this . scriptAppName = this . appname + this . appSuffix ( ) ;
24+
25+ this . filters = this . filters || this . config . get ( 'filters' ) ;
26+
27+ // dynamic relative require path
28+ this . relativeRequire = genUtils . relativeRequire . bind ( this ) ;
29+ // process template directory
30+ this . processDirectory = genUtils . processDirectory . bind ( this ) ;
31+ // rewrite a file in place
32+ this . rewriteFile = genUtils . rewriteFile ;
33+ }
34+
35+ appSuffix ( ) {
36+ var suffix = this . options [ 'app-suffix' ] ;
37+ return ( typeof suffix === 'string' ) ? this . lodash . classify ( suffix ) : '' ;
38+ }
39+
40+ determineAppname ( ) {
41+ if ( this . name ) return this . name ;
42+ else return super . determineAppname ( ) ;
43+ }
1644
17- let yoCheckPromise ;
18- if ( ! process . env . CI ) {
19- yoCheckPromise = genUtils . runCmd ( 'yo --version' ) . then ( stdout => {
20- if ( ! semver . satisfies ( semver . clean ( stdout ) , '>= 1.7.1' ) ) {
21- throw new Error ( `ERROR: You need to update yo to at least 1.7.1 (npm i -g yo)
22- 'yo --version' output: ${ stdout } ` ) ;
23- }
24- } ) ;
25- } else {
26- // CI won't have yo installed
27- yoCheckPromise = Promise . resolve ( ) ;
45+ // dynamic assertion statements
46+ expect ( ) {
47+ return this . filters . expect ? 'expect(' : '' ;
48+ }
49+ to ( ) {
50+ return this . filters . expect ? ').to' : '.should' ;
51+ }
52+ }
53+
54+ export class NamedBase extends Base {
55+ constructor ( ...args ) {
56+ super ( ...args ) ;
57+
58+ this . argument ( 'name' , { type : String , required : true } ) ;
59+
60+ var name = this . name . replace ( / \/ / g, '-' ) ;
61+
62+ this . cameledName = _ . camelize ( name ) ;
63+ this . classedName = _ . classify ( name ) ;
64+
65+ this . basename = path . basename ( this . name ) ;
66+ this . dirname = this . name . includes ( '/' )
67+ ? path . dirname ( this . name )
68+ : this . name ;
2869 }
70+ }
71+
72+ export function genBase ( self ) {
73+ self = self || this ;
2974
30- self . lodash = lodash ;
75+ self . lodash = _ ;
3176 self . yoWelcome = yoWelcome ;
3277
3378 let baseDetermineAppname = self . determineAppname . bind ( self ) ;
@@ -39,8 +84,8 @@ export function genBase(self) {
3984 }
4085 }
4186
42- self . appname = lodash . camelize ( lodash . slugify (
43- lodash . humanize ( self . determineAppname ( ) )
87+ self . appname = _ . camelize ( _ . slugify (
88+ _ . humanize ( self . determineAppname ( ) )
4489 ) ) ;
4590 self . scriptAppName = self . appname + genUtils . appSuffix ( self ) ;
4691
@@ -61,7 +106,7 @@ export function genBase(self) {
61106 // rewrite a file in place
62107 self . rewriteFile = genUtils . rewriteFile ;
63108
64- return yoCheckPromise ;
109+ return Promise . resolve ( ) ;
65110}
66111
67112export function genNamedBase ( self ) {
@@ -71,8 +116,8 @@ export function genNamedBase(self) {
71116 return genBase ( self ) . then ( ( ) => {
72117 var name = self . name . replace ( / \/ / g, '-' ) ;
73118
74- self . cameledName = lodash . camelize ( name ) ;
75- self . classedName = lodash . classify ( name ) ;
119+ self . cameledName = _ . camelize ( name ) ;
120+ self . classedName = _ . classify ( name ) ;
76121
77122 self . basename = path . basename ( self . name ) ;
78123 self . dirname = ( self . name . indexOf ( '/' ) >= 0 ) ? path . dirname ( self . name ) : self . name ;
0 commit comments