forked from jellyfin/jellyfin-webos
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
127 lines (112 loc) · 3.57 KB
/
Copy pathgulpfile.js
File metadata and controls
127 lines (112 loc) · 3.57 KB
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/**
* Moonfin webOS Build System
* Transpiles ES6+ JavaScript to ES5 for older webOS compatibility
*
* Supported webOS versions:
* - webOS 3.x (Chromium 38) - 2016-2017
* - webOS 4.x (Chromium 53) - 2018-2019
* - webOS 5.x (Chromium 53) - 2020
* - webOS 6.x (Chromium 68) - 2021+
*/
import gulp from "gulp";
import { deleteAsync as del } from "del";
import { readFileSync, writeFileSync } from "fs";
import babel from "gulp-babel";
const pkg = JSON.parse(readFileSync("./package.json", "utf8"));
const version = pkg.version;
console.info("Building Moonfin webOS app - version " + version);
function clean() {
return del(["frontend/js-transpiled/**", "!frontend/js-transpiled"]);
}
// Sync version from package.json to appinfo.json and services/package.json
function syncVersion(cb) {
const appInfo = JSON.parse(readFileSync("./frontend/appinfo.json", "utf8"));
const servicesPackageInfo = JSON.parse(readFileSync("./services/package.json", "utf8"));
appInfo.version = version;
servicesPackageInfo.version = version;
writeFileSync("./frontend/appinfo.json", JSON.stringify(appInfo, null, 4) + "\n");
writeFileSync("./services/package.json", JSON.stringify(servicesPackageInfo, null, 2) + "\n");
console.info(`Synced version ${version} to appinfo.json and services/package.json`);
cb();
}
// Update app-version.js with current version
function updateVersion(cb) {
const versionContent = `var APP_VERSION = '${version}';\n`;
writeFileSync("./frontend/js/app-version.js", versionContent);
console.info(`Updated app-version.js to version ${version}`);
cb();
}
function copyNonJsFiles() {
return gulp
.src(
[
"frontend/*.html",
"frontend/*.json",
"frontend/shaka-player.js",
"frontend/hls.js",
"frontend/css/**/*",
"frontend/assets/**/*",
"frontend/components/**/*",
// Only copy the needed webOSTV JS files, not the entire SDK
"frontend/webOSTVjs-1.2.11/*.js",
"frontend/webOSTVjs-1.2.11/*.txt",
],
{ base: "frontend", encoding: false }
)
.pipe(gulp.dest("frontend-build/"));
}
// Transpile JS files to ES5 for maximum webOS compatibility
function transpileES5() {
return gulp
.src("frontend/js/**/*.js", { base: "frontend" })
.pipe(
babel({
presets: [
[
"@babel/preset-env",
{
targets: {
browsers: ["ie >= 11", "safari >= 9", "chrome >= 38"],
},
modules: false,
},
],
],
})
)
.pipe(gulp.dest("frontend-build/"));
}
function transpileInPlace() {
return gulp
.src("frontend/js/**/*.js", { base: "." })
.pipe(
babel({
presets: [
[
"@babel/preset-env",
{
targets: {
browsers: ["ie >= 11", "safari >= 9"],
},
modules: false,
},
],
],
})
)
.pipe(gulp.dest("."));
}
const buildES5 = gulp.series(clean, syncVersion, updateVersion, gulp.parallel(copyNonJsFiles, transpileES5));
const transpile = gulp.series(syncVersion, updateVersion, transpileInPlace);
// Export tasks
export {
clean,
syncVersion,
updateVersion,
copyNonJsFiles,
transpileES5,
transpileInPlace,
buildES5,
transpile,
};
export default buildES5;