-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgulpfile.js
executable file
·108 lines (99 loc) · 2.96 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
102
103
104
105
106
107
108
const gulp = require("gulp");
const taskPretty = require("./gulp/tasks/pretty");
const taskPrettier = require("./gulp/tasks/prettier");
const taskLint = require("./gulp/tasks/lint");
const taskBrowserify = require("./gulp/tasks/browserify");
const taskUglify = require("./gulp/tasks/uglify");
const taskClean = require("./gulp/tasks/clean");
const OsTypeToTargetMap = {
Darwin: {
distDir: "./dist/mac/resources",
releaseAsarFile:
"dist/mac/Torchie.app/Contents/Resources/app.asar"
},
Linux: {
distDir: "./dist/win-unpacked/resources",
releaseAsarFile: `${this.distDir}/app.asar`
},
Windows_NT: {
distDir: "./dist/win-unpacked/resources",
releaseAsarFile: "dist/???/app.asar"
}
};
function getTask(name) {
return require("./gulp/tasks/" + name);
}
gulp.task("pretty", taskPretty());
gulp.task("prettier", taskPrettier());
gulp.task("lint", taskLint());
gulp.task("browserify", taskBrowserify());
gulp.task("uglify", taskUglify());
gulp.task("clean", taskClean());
gulp.task("releaseBuildUpdate", function(cb) {
const fs = require("fs-extra");
const gutil = require("gulp-util");
const execSync = require("child_process").execSync;
const osType = require("os").type();
if (osType === "Linux") {
console.log(
`Linux build not yet supported. Exiting...`
);
return gutil.noop();
}
const target = OsTypeToTargetMap[osType];
const distDir = target.distDir;
const distResourcesDir = `${distDir}/resources`;
const asarBin = "node_modules/.bin/asar";
const asar = "app.asar";
const releaseAsarFile = target.releaseAsarFile;
const asarDir = `${distResourcesDir}/${asar}`;
const asarExtracted = "${asar}.extracted";
const asarExtractedDir = `${distResourcesDir}/${asarExtracted}`;
const buildDir = "./build";
const copyBuildDir = `${asarExtractedDir}/build`;
const processAsar = () => {
if (fs.existsSync(releaseAsarFile)) {
console.log(`Extracting ${asar}...`);
execSync(
`${asarBin} extract ${releaseAsarFile} ${asarExtractedDir}`,
function(err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
cb(err);
}
);
copyBuild();
} else {
console.log(
`Project not distributed: Try 'yarn release' first.`
);
}
};
const packAsar = () => {
console.log(`Packing ${asar}...`);
execSync(
`${asarBin} pack ${asarExtractedDir} ${asarDir}`,
function(err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
cb(err);
}
);
};
const copyBuild = () => {
console.log("Removing build dir...");
fs.removeSync(`${copyBuildDir}`);
console.log("Copying build dir...");
fs.copySync(`${buildDir}`, `${asarExtractedDir}`);
packAsar();
};
console.log("Updating Project Distribution Sources...");
if (fs.existsSync(asarExtractedDir)) {
copyBuild();
packAsar();
} else {
processAsar();
}
return gutil.noop();
});
gulp.task("default");