1
1
#!/usr/bin/env node
2
2
3
3
'use strict' ;
4
+ var fs = require ( 'fs' ) ;
4
5
var path = require ( 'path' ) ;
5
6
var gutil = require ( 'gulp-util' ) ;
6
7
var chalk = require ( 'chalk' ) ;
@@ -10,16 +11,20 @@ var Liftoff = require('liftoff');
10
11
var tildify = require ( 'tildify' ) ;
11
12
var interpret = require ( 'interpret' ) ;
12
13
var v8flags = require ( 'v8flags' ) ;
13
- var exit = require ( './lib/exit' ) ;
14
- var cliOptions = require ( './lib/cliOptions' ) ;
15
- var completion = require ( './lib/completion' ) ;
16
- var verifyDeps = require ( './lib/verifyDependencies' ) ;
14
+ var findRange = require ( 'semver-greatest-satisfied-range' ) ;
15
+ var exit = require ( './lib/shared/exit' ) ;
16
+ var cliOptions = require ( './lib/shared/cliOptions' ) ;
17
+ var completion = require ( './lib/shared/completion' ) ;
18
+ var verifyDeps = require ( './lib/shared/verifyDependencies' ) ;
17
19
var cliVersion = require ( './package.json' ) . version ;
18
- var getBlacklist = require ( './lib/getBlacklist' ) ;
20
+ var getBlacklist = require ( './lib/shared/ getBlacklist' ) ;
19
21
20
22
// Logging functions
21
- var logVerify = require ( './lib/log/verify' ) ;
22
- var logBlacklistError = require ( './lib/log/blacklistError' ) ;
23
+ var logVerify = require ( './lib/shared/log/verify' ) ;
24
+ var logBlacklistError = require ( './lib/shared/log/blacklistError' ) ;
25
+
26
+ // Get supported ranges
27
+ var ranges = fs . readdirSync ( __dirname + '/lib/versioned/' ) ;
23
28
24
29
// Set env var for ORIGINAL cwd
25
30
// before anything touches it
@@ -36,8 +41,6 @@ var opts = nomnom
36
41
. script ( 'gulp' )
37
42
. options ( cliOptions )
38
43
. parse ( ) ;
39
- var tasks = opts . _ ;
40
- var toRun = tasks . length ? tasks : [ 'default' ] ;
41
44
42
45
// This is a hold-over until we have a better logging system
43
46
// with log levels
@@ -115,6 +118,7 @@ function handleArguments(env) {
115
118
}
116
119
117
120
// Check for semver difference between cli and local installation
121
+ // TODO: remove when we support all
118
122
if ( semver . gt ( cliVersion , env . modulePackage . version ) ) {
119
123
gutil . log ( chalk . red ( 'Warning: gulp version mismatch:' ) ) ;
120
124
gutil . log ( chalk . red ( 'Global gulp is' , cliVersion ) ) ;
@@ -131,75 +135,9 @@ function handleArguments(env) {
131
135
) ;
132
136
}
133
137
134
- if ( semver . satisfies ( env . modulePackage . version , '^3' ) ) {
135
- return gulp3 ( env ) ;
136
- }
137
-
138
- if ( semver . satisfies ( env . modulePackage . version , '^4' ) ) {
139
- return gulp4 ( env ) ;
140
- }
141
- }
142
-
143
- function gulp3 ( env ) {
144
- var logTasks = require ( './lib/3/logTasks' ) ;
145
- var logEvents = require ( './lib/3/logEvents' ) ;
146
- var logTasksSimple = require ( './lib/3/logTasksSimple' ) ;
147
-
148
- // This is what actually loads up the gulpfile
149
- require ( env . configPath ) ;
150
- gutil . log ( 'Using gulpfile' , chalk . magenta ( tildify ( env . configPath ) ) ) ;
151
-
152
- var gulpInst = require ( env . modulePath ) ;
153
- logEvents ( gulpInst ) ;
138
+ // Find the correct CLI version to run
139
+ var range = findRange ( env . modulePackage . version , ranges ) ;
154
140
155
- process . nextTick ( function ( ) {
156
- if ( opts . tasksSimple ) {
157
- return logTasksSimple ( env , gulpInst ) ;
158
- }
159
- if ( opts . tasks ) {
160
- return logTasks ( env , gulpInst ) ;
161
- }
162
- gulpInst . start . apply ( gulpInst , toRun ) ;
163
- } ) ;
164
- }
165
-
166
- function gulp4 ( env ) {
167
- var logTasks = require ( './lib/log/tasks' ) ;
168
- var logEvents = require ( './lib/log/events' ) ;
169
- var logTasksSimple = require ( './lib/log/tasksSimple' ) ;
170
-
171
- var gulpInst = require ( env . modulePath ) ;
172
- logEvents ( gulpInst ) ;
173
-
174
- // This is what actually loads up the gulpfile
175
- require ( env . configPath ) ;
176
-
177
- process . nextTick ( function ( ) {
178
- if ( opts . tasksSimple ) {
179
- return logTasksSimple ( gulpInst . tree ( ) ) ;
180
- }
181
- if ( opts . tasks ) {
182
- var tree = {
183
- label : 'Tasks for ' + chalk . magenta ( tildify ( env . configPath ) ) ,
184
- nodes : gulpInst . tree ( { deep : true } ) ,
185
- } ;
186
- return logTasks ( tree ) ;
187
- }
188
- if ( opts . tasksJson ) {
189
- return console . log (
190
- JSON . stringify ( gulpInst . tree ( { deep : true } ) , null , 2 )
191
- ) ;
192
- }
193
- try {
194
- gutil . log ( 'Using gulpfile' , chalk . magenta ( tildify ( env . configPath ) ) ) ;
195
- // TODO: do we care about the error/result from calling this?
196
- gulpInst . parallel ( toRun ) ( ) ;
197
- } catch ( err ) {
198
- gutil . log ( chalk . red ( err . message ) ) ;
199
- gutil . log (
200
- 'Please check the documentation for proper gulpfile formatting'
201
- ) ;
202
- exit ( 1 ) ;
203
- }
204
- } ) ;
141
+ // Load and execute the CLI version
142
+ require ( path . join ( __dirname , '/lib/versioned/' , range , '/' ) ) ( opts , env ) ;
205
143
}
0 commit comments