Skip to content

Commit ac44fe2

Browse files
committed
Merge remote-tracking branch 'origin/master' into phated/translations
2 parents 6e5c790 + ed86da7 commit ac44fe2

File tree

37 files changed

+127
-127
lines changed

37 files changed

+127
-127
lines changed

README.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,22 +101,21 @@ The CLI adds `process.env.INIT_CWD` which is the original cwd it was launched fr
101101

102102
Configuration is supported through the use of a `.gulp.*` file (e.g. `.gulp.json`, `.gulp.yml`). You can find a list of supported languages at https://github.com/gulpjs/interpret.
103103

104-
Configuration from the home directory (`~`) and current working directory (`cwd`) are merged with `cwd` taking precedence.
104+
A configuration file from the current working directory (`cwd`) or above are selected before a configuration file from the home directory (`~`).
105105

106106
Supported configurations properties:
107107

108108
| Property | Description |
109109
|--------------------|-------------|
110+
| description | Top-level description of the project/gulpfile (Replaces "Tasks for ~/path/of/gulpfile.js") |
111+
| gulpfile | Set a default gulpfile |
112+
| preload | An array of modules to preload before running the gulpfile. Any relative paths will be resolved against the `--cwd` directory (if you don't want that behavior, use absolute paths) |
113+
| nodeFlags | An array of flags used to forcibly respawn the process upon startup. For example, if you always want your gulpfiles to run in node's harmony mode, you can set `--harmony` here |
110114
| flags.continue | Continue execution of tasks upon failure by default. |
111115
| flags.compactTasks | Reduce the output of task dependency tree by default. |
112116
| flags.tasksDepth | Set default depth of task dependency tree. |
113-
| flags.gulpfile | Set a default gulpfile |
114117
| flags.silent | Silence logging by default |
115118
| flags.series | Run tasks given on the CLI in series (the default is parallel) |
116-
| flags.preload | An array of modules to preload before running the gulpfile. Any relative paths will be resolved against the `--cwd` directory (if you don't want that behavior, use absolute paths) |
117-
| flags.nodeFlags | An array of flags used to forcibly respawn the process upon startup. For example, if you always want your gulpfiles to run in node's harmony mode, you can set `--harmony` here |
118-
| log.msgs.* | Configure log messages. |
119-
| log.theme.* | Configure log theme. |
120119

121120
## Flags
122121

index.js

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ var findRange = require('semver-greatest-satisfied-range');
1212

1313
var exit = require('./lib/shared/exit');
1414
var tildify = require('./lib/shared/tildify');
15+
var arrayFind = require('./lib/shared/array-find');
1516
var makeTitle = require('./lib/shared/make-title');
1617
var makeHelp = require('./lib/shared/options/make-help');
1718
var cliOptions = require('./lib/shared/options/cli-options');
1819
var completion = require('./lib/shared/completion');
1920
var cliVersion = require('./package.json').version;
2021
var toConsole = require('./lib/shared/log/to-console');
22+
var mergeCliOpts = require('./lib/shared/config/cli-flags');
2123

22-
var mergeProjectAndUserHomeConfigs = require('./lib/shared/config/merge-configs');
23-
var overrideEnvByConfigAndCliOpts = require('./lib/shared/config/env-config');
2424
var messages = require('./messages');
2525

2626
// Get supported ranges
@@ -36,23 +36,19 @@ var cli = new Liftoff({
3636
completions: completion,
3737
extensions: interpret.jsVariants,
3838
v8flags: v8flags,
39-
configFiles: {
40-
project: [
41-
{
42-
name: '.gulp',
43-
path: '.',
44-
extensions: interpret.extensions,
45-
findUp: true,
46-
},
47-
],
48-
userHome: [
49-
{
50-
name: '.gulp',
51-
path: '~',
52-
extensions: interpret.extensions,
53-
},
54-
],
55-
},
39+
configFiles: [
40+
{
41+
name: '.gulp',
42+
path: '.',
43+
extensions: interpret.extensions,
44+
findUp: true,
45+
},
46+
{
47+
name: '.gulp',
48+
path: '~',
49+
extensions: interpret.extensions,
50+
},
51+
],
5652
});
5753

5854
// var opts = {};
@@ -77,6 +73,9 @@ var parser = yargs
7773

7874
var opts = parser.parse();
7975

76+
// Set up event listeners for logging temporarily.
77+
toConsole(log, opts);
78+
8079
cli.on('preload:before', function(name) {
8180
log.info(messages.PRELOAD_BEFORE, name);
8281
});
@@ -125,23 +124,31 @@ function run() {
125124

126125
module.exports = run;
127126

127+
function isDefined(cfg) {
128+
return cfg != null;
129+
}
130+
128131
function onPrepare(env) {
129-
var cfg = mergeProjectAndUserHomeConfigs(env);
130-
env = overrideEnvByConfigAndCliOpts(env, cfg, opts);
132+
// We only use the first config found, which is a departure from
133+
// the previous implementation that merged with the home
134+
var cfg = arrayFind(env.config, isDefined);
135+
var flags = mergeCliOpts(opts, cfg);
131136

132-
// Set up event listeners for logging after configuring.
133-
toConsole(log, env.config.flags);
137+
// Set up event listeners for again logging after configuring.
138+
toConsole(log, flags);
134139

135-
cli.execute(env, env.nodeFlags, onExecute);
140+
cli.execute(env, cfg.nodeFlags, function (env) {
141+
onExecute(env, cfg, flags);
142+
});
136143
}
137144

138145
// The actual logic
139-
function onExecute(env) {
146+
function onExecute(env, cfg, flags) {
140147
// This translates the --continue flag in gulp
141148
// To the settle env variable for undertaker
142149
// We use the process.env so the user's gulpfile
143150
// Can know about the flag
144-
if (env.config.flags.continue) {
151+
if (flags.continue) {
145152
process.env.UNDERTAKER_SETTLE = 'true';
146153
}
147154

@@ -154,9 +161,13 @@ function onExecute(env) {
154161
// makeHelp(parser).showHelp(console.log);
155162
// exit(0);
156163
// }
164+
if (flags.help) {
165+
parser.showHelp(console.log);
166+
exit(0);
167+
}
157168

158169
// Anything that needs to print outside of the logging mechanism should use console.log
159-
if (env.config.flags.version) {
170+
if (flags.version) {
160171
console.log('CLI version:', cliVersion);
161172
console.log('Local version:', env.modulePackage.version || 'Unknown');
162173
exit(0);
@@ -208,5 +219,5 @@ function onExecute(env) {
208219

209220
// Load and execute the CLI version
210221
var versionedDir = path.join(__dirname, '/lib/versioned/', range, '/');
211-
require(versionedDir)(env);
222+
require(versionedDir)(env, cfg, flags);
212223
}

lib/shared/array-find.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use strict';
2+
3+
function arrayFind(arr, fn) {
4+
if (!Array.isArray(arr)) {
5+
return;
6+
}
7+
8+
var idx = 0;
9+
while (idx < arr.length) {
10+
var result = fn(arr[idx]);
11+
if (result) {
12+
// TODO: This is wrong in Liftoff
13+
return arr[idx];
14+
}
15+
idx++;
16+
}
17+
}
18+
19+
module.exports = arrayFind;

lib/versioned/^3.7.0/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ var registerExports = require('../../shared/register-exports');
1717
var requireOrImport = require('../../shared/require-or-import');
1818
var messages = require('../../../messages');
1919

20-
function execute(env) {
21-
var opts = env.config.flags;
22-
20+
function execute(env, cfg, opts) {
2321
var tasks = opts._;
2422
var toRun = tasks.length ? tasks : ['default'];
2523

lib/versioned/^4.0.0/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ var getTask = require('./log/get-task');
2020
var requireOrImport = require('../../shared/require-or-import');
2121
var messages = require('../../../messages');
2222

23-
function execute(env) {
24-
var opts = env.config.flags;
25-
23+
function execute(env, cfg, opts) {
2624
var tasks = opts._;
2725
var toRun = tasks.length ? tasks : ['default'];
2826

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"fancy-log": "^2.0.0",
3535
"gulplog": "^2.1.0",
3636
"interpret": "^3.1.1",
37-
"liftoff": "^4.0.0",
37+
"liftoff": "^5.0.0",
3838
"mute-stdout": "^2.0.0",
3939
"replace-homedir": "^2.0.0",
4040
"semver-greatest-satisfied-range": "^2.0.0",

test/config-flags-compact-tasks.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ describe('config: flags.compactTasks', function() {
2020
function cb(err, stdout, stderr) {
2121
var filepath = path.join(expectedDir, 'flags-tasks-compact.txt');
2222
var expected = fs.readFileSync(filepath, 'utf-8');
23-
expected = sliceLines(expected, 1);
24-
stdout = sliceLines(stdout, 1);
23+
expected = sliceLines(expected, 2);
24+
stdout = sliceLines(stdout, 2);
2525
expect(stdout).toEqual(expected);
2626
expect(stderr).toEqual('');
2727
done(err);
@@ -35,8 +35,8 @@ describe('config: flags.compactTasks', function() {
3535
function cb(err, stdout, stderr) {
3636
var filepath = path.join(expectedDir, 'flags-tasks-unsorted.txt');
3737
var expected = fs.readFileSync(filepath, 'utf-8');
38-
expected = sliceLines(expected, 1);
39-
stdout = sliceLines(stdout, 1);
38+
expected = sliceLines(expected, 2);
39+
stdout = sliceLines(stdout, 2);
4040
expect(stdout).toEqual(expected);
4141
expect(stderr).toEqual('');
4242
done(err);
@@ -50,8 +50,8 @@ describe('config: flags.compactTasks', function() {
5050
function cb(err, stdout, stderr) {
5151
var filepath = path.join(expectedDir, 'flags-tasks-compact.txt');
5252
var expected = fs.readFileSync(filepath, 'utf-8');
53-
expected = sliceLines(expected, 1);
54-
stdout = sliceLines(stdout, 1);
53+
expected = sliceLines(expected, 2);
54+
stdout = sliceLines(stdout, 2);
5555
expect(stdout).toEqual(expected);
5656
expect(stderr).toEqual('');
5757
done(err);
@@ -65,8 +65,8 @@ describe('config: flags.compactTasks', function() {
6565
function cb(err, stdout, stderr) {
6666
var filepath = path.join(expectedDir, 'flags-tasks-unsorted.txt');
6767
var expected = fs.readFileSync(filepath, 'utf-8');
68-
expected = sliceLines(expected, 1);
69-
stdout = sliceLines(stdout, 1);
68+
expected = sliceLines(expected, 2);
69+
stdout = sliceLines(stdout, 2);
7070
expect(stdout).toEqual(expected);
7171
expect(stderr).toEqual('');
7272
done(err);

test/config-flags-gulpfile.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var gulp = require('./tool/gulp-cmd');
1010
var baseDir = path.join(__dirname, 'fixtures/config/flags/gulpfile');
1111
var prjDir = path.join(baseDir, 'prj');
1212

13-
describe('config: flags.gulpfile', function() {
13+
describe('config: gulpfile', function() {
1414

1515
it('Should configure with a .gulp.* file', function(done) {
1616
var opts = { cwd: prjDir };
@@ -19,9 +19,9 @@ describe('config: flags.gulpfile', function() {
1919
function cb(err, stdout, stderr) {
2020
expect(err).toBeNull();
2121
expect(stderr).toEqual('');
22-
expect(sliceLines(stdout, 2, 4)).toEqual(
22+
expect(sliceLines(stdout, 3, 5)).toEqual(
2323
'This gulpfile : ' + path.join(baseDir, 'is/here/gulpfile-by-prj-cfg.js') + '\n' +
24-
'The current directory : ' + prjDir
24+
'The current directory : ' + path.join(baseDir, 'is/here')
2525
);
2626
done(err);
2727
}
@@ -49,9 +49,9 @@ describe('config: flags.gulpfile', function() {
4949
function cb(err, stdout, stderr) {
5050
expect(err).toBeNull();
5151
expect(stderr).toEqual('');
52-
expect(sliceLines(stdout, 2, 4)).toEqual(
52+
expect(sliceLines(stdout, 3, 5)).toEqual(
5353
'This gulpfile : ' + path.join(baseDir, 'is/here/gulpfile-by-prj-cfg.js') + '\n' +
54-
'The current directory : ' + path.join(prjDir, 'findup')
54+
'The current directory : ' + path.join(baseDir, 'is/here')
5555
);
5656
done(err);
5757
}
@@ -126,8 +126,8 @@ describe('config: flags.gulpfile', function() {
126126
expect(err).toBeNull();
127127
expect(stderr).toEqual('');
128128
expect(sliceLines(stdout, 0, 1)).toEqual('Loaded external module: @babel/register');
129-
expect(sliceLines(stdout, 4, 5)).toEqual('clean!');
130-
expect(sliceLines(stdout, 7, 8)).toEqual('build!');
129+
expect(sliceLines(stdout, 5, 6)).toEqual('clean!');
130+
expect(sliceLines(stdout, 8, 9)).toEqual('build!');
131131
done(err);
132132
}
133133
});
@@ -152,7 +152,7 @@ describe('config: flags.gulpfile', function() {
152152
function cb(err, stdout, stderr) {
153153
expect(err).toBeNull();
154154
expect(stderr).toEqual('');
155-
expect(sliceLines(stdout, 3, 4)).toEqual(path.join(opts.cwd, 'gulpfile-2.js'));
155+
expect(sliceLines(stdout, 2, 3)).toEqual(path.join(opts.cwd, 'gulpfile-2.js'));
156156
done(err);
157157
}
158158
});

test/config-flags-preload.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var gulp = require('./tool/gulp-cmd');
99

1010
var baseDir = path.join(__dirname, 'fixtures/config/flags/preload');
1111

12-
describe('config: flags.preload', function() {
12+
describe('config: preload', function() {
1313

1414
it('Should configure with an array in a .gulp.* file', function(done) {
1515
var opts = { cwd: path.join(baseDir, 'array') };

test/config-flags-sort-tasks.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ describe('config: flags.sortTasks', function() {
2020
function cb(err, stdout, stderr) {
2121
var filepath = path.join(expectedDir, 'flags-tasks-sorted.txt');
2222
var expected = fs.readFileSync(filepath, 'utf-8');
23-
expect(sliceLines(stdout, 1)).toEqual(sliceLines(expected, 1));
23+
expect(sliceLines(stdout, 2)).toEqual(sliceLines(expected, 2));
2424
expect(stderr).toEqual('');
2525
done(err);
2626
}
@@ -33,7 +33,7 @@ describe('config: flags.sortTasks', function() {
3333
function cb(err, stdout, stderr) {
3434
var filepath = path.join(expectedDir, 'flags-tasks-unsorted.txt');
3535
var expected = fs.readFileSync(filepath, 'utf-8');
36-
expect(sliceLines(stdout, 1)).toEqual(sliceLines(expected, 1));
36+
expect(sliceLines(stdout, 2)).toEqual(sliceLines(expected, 2));
3737
expect(stderr).toEqual('');
3838
done(err);
3939
}
@@ -46,7 +46,7 @@ describe('config: flags.sortTasks', function() {
4646
function cb(err, stdout, stderr) {
4747
var filepath = path.join(expectedDir, 'flags-tasks-sorted.txt');
4848
var expected = fs.readFileSync(filepath, 'utf-8');
49-
expect(sliceLines(stdout, 1)).toEqual(sliceLines(expected, 1));
49+
expect(sliceLines(stdout, 2)).toEqual(sliceLines(expected, 2));
5050
expect(stderr).toEqual('');
5151
done(err);
5252
}
@@ -59,7 +59,7 @@ describe('config: flags.sortTasks', function() {
5959
function cb(err, stdout, stderr) {
6060
var filepath = path.join(expectedDir, 'flags-tasks-unsorted.txt');
6161
var expected = fs.readFileSync(filepath, 'utf-8');
62-
expect(sliceLines(stdout, 1)).toEqual(sliceLines(expected, 1));
62+
expect(sliceLines(stdout, 2)).toEqual(sliceLines(expected, 2));
6363
expect(stderr).toEqual('');
6464
done(err);
6565
}

test/config-flags-tasks-depth.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ describe('config: flags.tasksDepth', function() {
2020
function cb(err, stdout, stderr) {
2121
var filepath = path.join(expectedDir, 'flags-tasks-depth4.txt');
2222
var expected = fs.readFileSync(filepath, 'utf-8');
23-
expect(sliceLines(stdout, 1)).toEqual(sliceLines(expected, 1));
23+
expect(sliceLines(stdout, 2)).toEqual(sliceLines(expected, 2));
2424
expect(stderr).toEqual('');
2525
done(err);
2626
}
@@ -33,7 +33,7 @@ describe('config: flags.tasksDepth', function() {
3333
function cb(err, stdout, stderr) {
3434
var filepath = path.join(expectedDir, 'flags-tasks-depth2.txt');
3535
var expected = fs.readFileSync(filepath, 'utf-8');
36-
expect(sliceLines(stdout, 1)).toEqual(sliceLines(expected, 1));
36+
expect(sliceLines(stdout, 2)).toEqual(sliceLines(expected, 2));
3737
expect(stderr).toEqual('');
3838
done(err);
3939
}

test/expected/flags-tasks-compact.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
Working directory changed to gulp-cli/test/fixtures/gulpfiles
12
gulp-cli/test/fixtures/gulpfiles
23
├─┬ taskC
34
│ └─┬ <series>

test/expected/flags-tasks-depth2.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
Working directory changed to gulp-cli/test/fixtures/gulpfiles
12
gulp-cli/test/fixtures/gulpfiles
23
├─┬ taskC
34
│ └── <series>

test/expected/flags-tasks-depth4.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
Working directory changed to gulp-cli/test/fixtures/gulpfiles
12
gulp-cli/test/fixtures/gulpfiles
23
├─┬ taskC
34
│ └─┬ <series>

test/expected/flags-tasks-sorted.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
Working directory changed to gulp-cli/test/fixtures/gulpfiles
12
gulp-cli/test/fixtures/gulpfiles
23
├─┬ default
34
│ └─┬ <parallel>

test/expected/flags-tasks-unsorted.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
Working directory changed to gulp-cli/test/fixtures/gulpfiles
12
gulp-cli/test/fixtures/gulpfiles
23
├─┬ taskC
34
│ └─┬ <series>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
'use strict';
22

33
module.exports = {
4+
gulpfile: '../../../../gulpfiles/gulpfile-4.js',
45
flags: {
56
compactTasks: false,
6-
gulpfile: '../../../../gulpfiles/gulpfile-4.js',
77
},
88
};

0 commit comments

Comments
 (0)