2
2
3
3
import util from 'util' ;
4
4
import path from 'path' ;
5
- import lodash from 'lodash' ;
5
+ import _ from 'lodash' ;
6
6
import s from 'underscore.string' ;
7
- import semver from 'semver ' ;
7
+ import { Base as YoBase } from 'yeoman-generator ' ;
8
8
import yoWelcome from 'yeoman-welcome' ;
9
9
import * as genUtils from './util' ;
10
10
11
11
// extend lodash with underscore.string
12
- lodash . mixin ( s . exports ( ) ) ;
12
+ _ . mixin ( s . exports ( ) ) ;
13
13
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
+ }
16
44
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 ;
28
69
}
70
+ }
71
+
72
+ export function genBase ( self ) {
73
+ self = self || this ;
29
74
30
- self . lodash = lodash ;
75
+ self . lodash = _ ;
31
76
self . yoWelcome = yoWelcome ;
32
77
33
78
let baseDetermineAppname = self . determineAppname . bind ( self ) ;
@@ -39,8 +84,8 @@ export function genBase(self) {
39
84
}
40
85
}
41
86
42
- self . appname = lodash . camelize ( lodash . slugify (
43
- lodash . humanize ( self . determineAppname ( ) )
87
+ self . appname = _ . camelize ( _ . slugify (
88
+ _ . humanize ( self . determineAppname ( ) )
44
89
) ) ;
45
90
self . scriptAppName = self . appname + genUtils . appSuffix ( self ) ;
46
91
@@ -61,7 +106,7 @@ export function genBase(self) {
61
106
// rewrite a file in place
62
107
self . rewriteFile = genUtils . rewriteFile ;
63
108
64
- return yoCheckPromise ;
109
+ return Promise . resolve ( ) ;
65
110
}
66
111
67
112
export function genNamedBase ( self ) {
@@ -71,8 +116,8 @@ export function genNamedBase(self) {
71
116
return genBase ( self ) . then ( ( ) => {
72
117
var name = self . name . replace ( / \/ / g, '-' ) ;
73
118
74
- self . cameledName = lodash . camelize ( name ) ;
75
- self . classedName = lodash . classify ( name ) ;
119
+ self . cameledName = _ . camelize ( name ) ;
120
+ self . classedName = _ . classify ( name ) ;
76
121
77
122
self . basename = path . basename ( self . name ) ;
78
123
self . dirname = ( self . name . indexOf ( '/' ) >= 0 ) ? path . dirname ( self . name ) : self . name ;
0 commit comments