forked from ampproject/amphtml
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vendor-configs.js
91 lines (82 loc) · 2.58 KB
/
vendor-configs.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/**
* Copyright 2019 The AMP HTML Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS-IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const gulp = require('gulp');
const gulpif = require('gulp-if');
const gulpWatch = require('gulp-watch');
const jsonlint = require('gulp-jsonlint');
const jsonminify = require('gulp-jsonminify');
const rename = require('gulp-rename');
const {endBuildStep, printNobuildHelp, toPromise} = require('./helpers');
/**
* Entry point for 'gulp vendor-configs'
* @return {!Promise}
*/
async function vendorConfigs() {
printNobuildHelp();
return compileVendorConfigs();
}
/**
* Compile all the vendor configs and drop in the dist folder
* @param {Object=} opt_options
* @return {!Promise}
*/
function compileVendorConfigs(opt_options) {
const options = opt_options || {};
const srcPath = [
'extensions/amp-analytics/0.1/vendors/*.json',
'!extensions/amp-analytics/0.1/vendors/_fake_.json', // ignore test json
];
const destPath = 'dist/v0/analytics-vendors/';
if (options.watch) {
// Do not set watchers again when we get called by the watcher.
const copyOptions = {...options, watch: false, calledByWatcher: true};
gulpWatch(srcPath, function() {
compileVendorConfigs(copyOptions);
});
}
const startTime = Date.now();
return toPromise(
gulp
.src(srcPath)
.pipe(gulpif(options.minify, jsonminify()))
.pipe(jsonlint())
// report any linting errors
.pipe(jsonlint.reporter())
// only fail if not in watcher, so watch is not interrupted
.pipe(gulpif(!options.calledByWatcher, jsonlint.failOnError()))
// if not minifying, append .max to filename
.pipe(
gulpif(
!options.minify,
rename(function(path) {
path.basename += '.max';
})
)
)
.pipe(gulp.dest(destPath))
).then(() => {
endBuildStep(
'Compiled all analytics vendor configs into ',
destPath,
startTime
);
});
}
module.exports = {
vendorConfigs,
compileVendorConfigs,
};
vendorConfigs.description = 'Compile analytics vendor configs to dist';