forked from dcos/dcos-ui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
101 lines (88 loc) · 2.65 KB
/
gulpfile.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
92
93
94
95
96
97
98
99
100
101
var checker = require("license-checker");
var connect = require("gulp-connect");
var fs = require("fs");
var gulp = require("gulp");
var packageJSON = require("./package.json");
gulp.task("ensureConfig", function() {
// Make sure we have a Config.dev so we don't error on Config loading
var configFilePath = "./src/js/config/Config.dev.ts";
if (!fs.existsSync(configFilePath)) {
var template = fs.readFileSync(
"./src/js/config/Config.template.ts",
"utf8"
);
fs.writeFileSync(configFilePath, template, "utf8");
}
});
gulp.task("ensureDevProxy", function() {
// Create a proxy.dev to make getting started easier
var proxyFilePath = "./webpack/proxy.dev.js";
if (!fs.existsSync(proxyFilePath)) {
var template = fs.readFileSync("./webpack/proxy.template.js", "utf8");
fs.writeFileSync(proxyFilePath, template, "utf8");
}
});
function buildDependenciesArray(dependencies) {
return Object.keys(dependencies).map(function(dependency) {
var version = dependencies[dependency];
if (version.startsWith("github:")) {
var json = JSON.parse(
fs.readFileSync(
"./node_modules/" + dependency + "/package.json",
"utf8"
)
);
version = json.version;
}
return dependency + "@" + version;
});
}
gulp.task("checkDependencies", function() {
var dependencies = buildDependenciesArray(packageJSON.dependencies);
dependencies = dependencies.concat(
buildDependenciesArray(packageJSON.devDependencies)
);
checker.init(
{
start: "./"
},
function(json, error) {
if (error) {
console.log(error);
process.exit(1);
}
var count = 0;
var found = [];
Object.keys(json).forEach(function(dependency) {
if (dependencies.indexOf(dependency) === -1) {
return;
}
count++;
found.push(dependency);
var licenses = json[dependency].licenses;
if (licenses === "UNKNOWN") {
console.warn("Dependency has an unknown license", json[dependency]);
}
if (licenses.indexOf("LGPL") === -1 && licenses.match(/GPL/gi)) {
console.log("Package has invalid license.", json[dependency]);
process.exit(1);
}
});
// Ensure we found them all
if (count !== dependencies.length) {
console.log("Dependency length doesn't match.");
var missing = dependencies.filter(function(dependency) {
return found.indexOf(dependency) === -1;
});
console.log(missing);
process.exit(1);
}
}
);
});
gulp.task("serve", function() {
connect.server({
port: 4200,
root: "./dist"
});
});