-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgulpfile.js
70 lines (60 loc) · 2.2 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
const fs = require('fs')
const fsExtra = require('fs-extra')
const path = require('path')
const gulp = require("gulp")
const mocha = require('gulp-mocha')
const zip = require('gulp-zip')
const modifyFile = require('gulp-modify-file')
const exec = require('child_process').exec
const metadata = JSON.parse(fs.readFileSync("metadata.json"))
const config = {
srcDir: path.join(__dirname, "src"),
buildDir: path.join(__dirname, "build"),
distDir: path.join(__dirname, "dist"),
installDir: path.join(process.env.HOME, ".local/share/gnome-shell/extensions/") + metadata.uuid
}
function clean(cb) {
fsExtra.emptyDirSync(config.buildDir)
fsExtra.emptyDirSync(config.distDir)
cb()
}
function test() {
return gulp.src('test/*', {read: false})
.pipe(mocha())
}
function buildAssets() {
return gulp.src(["metadata.json", "ding.ogg", "egg.svg", "stylesheet.css", "LICENSE"])
.pipe(gulp.dest(config.buildDir))
}
function buildSource() {
return gulp.src([config.srcDir + "/*.js"])
.pipe(modifyFile((content, path, file) => {
return content
.replace(/module\.exports.*/, '')
.replace(/const[\s]+(.*)[\s]+=[\s]+require\(\'\.\.\/src\/(.*)\'\)/, "const $1 = imports.misc.extensionUtils.getCurrentExtension().imports.$2.$1")
}))
.pipe(gulp.dest(config.buildDir))
}
function dist() {
return gulp.src([config.buildDir + "/*"])
.pipe(zip(metadata.uuid + ".zip"))
.pipe(gulp.dest(config.distDir))
}
function install() {
return gulp.src([config.buildDir + "/*"])
.pipe(gulp.dest(config.installDir))
}
function restartGnomeShell(cb) {
exec("gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'Meta.restart(_(\"Restarting…\"))'")
cb()
}
const build = gulp.parallel(buildAssets, buildSource)
const cleanBuild = gulp.series(clean, test, build)
exports.clean = clean
exports.test = test
exports.restartGnomeShell = restartGnomeShell
exports.build = cleanBuild
exports.install = gulp.series(cleanBuild, install)
exports.start = gulp.series(cleanBuild, install, restartGnomeShell)
exports.dist = gulp.series(cleanBuild, dist)
exports.justDist = dist