3
3
var fs = require ( 'fs' ) ;
4
4
var path = require ( 'path' ) ;
5
5
var log = require ( 'gulplog' ) ;
6
+ var fancyLog = require ( 'fancy-log' ) ;
6
7
var chalk = require ( 'chalk' ) ;
7
8
var yargs = require ( 'yargs' ) ;
8
9
var Liftoff = require ( 'liftoff' ) ;
9
10
var tildify = require ( 'tildify' ) ;
10
11
var interpret = require ( 'interpret' ) ;
11
12
var v8flags = require ( 'v8flags' ) ;
12
- var merge = require ( 'lodash.merge' ) ;
13
- var isString = require ( 'lodash.isstring' ) ;
14
13
var findRange = require ( 'semver-greatest-satisfied-range' ) ;
15
14
var exit = require ( './lib/shared/exit' ) ;
16
15
var cliOptions = require ( './lib/shared/cliOptions' ) ;
@@ -20,6 +19,10 @@ var cliVersion = require('./package.json').version;
20
19
var getBlacklist = require ( './lib/shared/getBlacklist' ) ;
21
20
var toConsole = require ( './lib/shared/log/toConsole' ) ;
22
21
22
+ var loadConfigFiles = require ( './lib/shared/config/loadfiles' ) ;
23
+ var mergeToCliFlags = require ( './lib/shared/config/cli-flags' ) ;
24
+ var mergeToEnvFlags = require ( './lib/shared/config/env-flags' ) ;
25
+
23
26
// Logging functions
24
27
var logVerify = require ( './lib/shared/log/verify' ) ;
25
28
var logBlacklistError = require ( './lib/shared/log/blacklistError' ) ;
@@ -65,15 +68,13 @@ if (opts.continue) {
65
68
process . env . UNDERTAKER_SETTLE = 'true' ;
66
69
}
67
70
68
- // Set up event listeners for logging.
69
- toConsole ( log , opts ) ;
70
-
71
71
cli . on ( 'require' , function ( name ) {
72
- log . info ( 'Requiring external module' , chalk . magenta ( name ) ) ;
72
+ fancyLog ( 'Requiring external module' , chalk . magenta ( name ) ) ;
73
73
} ) ;
74
74
75
75
cli . on ( 'requireFail' , function ( name ) {
76
- log . error ( chalk . red ( 'Failed to load external module' ) , chalk . magenta ( name ) ) ;
76
+ fancyLog . error (
77
+ chalk . red ( 'Failed to load external module' ) , chalk . magenta ( name ) ) ;
77
78
} ) ;
78
79
79
80
cli . on ( 'respawn' , function ( flags , child ) {
@@ -84,26 +85,35 @@ cli.on('respawn', function(flags, child) {
84
85
} ) ;
85
86
86
87
function run ( ) {
87
- cli . launch ( {
88
+ var envOpts = {
88
89
cwd : opts . cwd ,
89
90
configPath : opts . gulpfile ,
90
91
require : opts . require ,
91
92
completion : opts . completion ,
92
- } , handleArguments ) ;
93
+ } ;
94
+
95
+ cli . launch ( envOpts , function ( env ) {
96
+ var config ;
97
+ try {
98
+ config = loadConfigFiles ( env . configFiles [ '.gulp' ] , [ 'home' , 'cwd' ] ) ;
99
+ } catch ( e ) {
100
+ log . error ( chalk . red ( e . message ) ) ;
101
+ exit ( 1 ) ;
102
+ }
103
+
104
+ mergeToCliFlags ( opts , config , cliOptions ) ;
105
+ mergeToEnvFlags ( env , config , envOpts ) ;
106
+
107
+ handleArguments ( env , opts , config ) ;
108
+ } ) ;
93
109
}
94
110
95
111
module . exports = run ;
96
112
97
113
// The actual logic
98
- function handleArguments ( env ) {
99
-
100
- // Map an array of keys to preserve order
101
- var configFilePaths = [ 'home' , 'cwd' ] . map ( function ( key ) {
102
- return env . configFiles [ '.gulp' ] [ key ] ;
103
- } ) ;
104
- configFilePaths . filter ( isString ) . forEach ( function ( filePath ) {
105
- merge ( opts , require ( filePath ) ) ;
106
- } ) ;
114
+ function handleArguments ( env , opts , cfg ) {
115
+ // Set up event listeners for logging.
116
+ toConsole ( log , opts ) ;
107
117
108
118
if ( opts . help ) {
109
119
console . log ( parser . help ( ) ) ;
@@ -169,5 +179,5 @@ function handleArguments(env) {
169
179
}
170
180
171
181
// Load and execute the CLI version
172
- require ( path . join ( __dirname , '/lib/versioned/' , range , '/' ) ) ( opts , env ) ;
182
+ require ( path . join ( __dirname , '/lib/versioned/' , range , '/' ) ) ( opts , env , cfg ) ;
173
183
}
0 commit comments