mirror of
https://github.com/vector-im/element-web.git
synced 2024-11-16 13:14:58 +08:00
6a1af891b7
All of those cpx invocations were getting unwieldy, and I suspect the exotic quoting needed to run them under parallelshell was breaking things on windows. Replace the unwieldy cpx invocations with an unwieldy custom script.
82 lines
2.0 KiB
JavaScript
Executable File
82 lines
2.0 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
// copies the resources into the webapp directory.
|
|
//
|
|
|
|
// cpx includes globbed parts of the filename in the destination, but excludes
|
|
// common parents. Hence, "res/{a,b}/**": the output will be "dest/a/..." and
|
|
// "dest/b/...".
|
|
const COPY_LIST = [
|
|
["res/{media,vector-icons}/**", "webapp"],
|
|
["src/skins/vector/{fonts,img}/**", "webapp"],
|
|
["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"],
|
|
["./config.json", "webapp", {directwatch: 1}],
|
|
];
|
|
|
|
const parseArgs = require('minimist');
|
|
const Cpx = require('cpx');
|
|
const chokidar = require('chokidar');
|
|
|
|
const argv = parseArgs(
|
|
process.argv.slice(2), {}
|
|
);
|
|
|
|
var watch = argv.w;
|
|
var verbose = argv.v;
|
|
|
|
function errCheck(err) {
|
|
if (err) {
|
|
console.error(err.message);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
function next(i, err) {
|
|
errCheck(err);
|
|
|
|
if (i >= COPY_LIST.length) {
|
|
return;
|
|
}
|
|
|
|
const ent = COPY_LIST[i];
|
|
const source = ent[0];
|
|
const dest = ent[1];
|
|
const opts = ent[2] || {};
|
|
|
|
const cpx = new Cpx.Cpx(source, dest);
|
|
|
|
if (verbose) {
|
|
cpx.on("copy", (event) => {
|
|
console.log(`Copied: ${event.srcPath} --> ${event.dstPath}`);
|
|
});
|
|
cpx.on("remove", (event) => {
|
|
console.log(`Removed: ${event.path}`);
|
|
});
|
|
}
|
|
|
|
const cb = (err) => {next(i+1, err)};
|
|
|
|
if (watch) {
|
|
if (opts.directwatch) {
|
|
// cpx -w creates a watcher for the parent of any files specified,
|
|
// which in the case of config.json is '.', which inevitably takes
|
|
// ages to crawl. So we create our own watcher on the files
|
|
// instead.
|
|
const copy = () => {cpx.copy(errCheck)};
|
|
chokidar.watch(source)
|
|
.on('add', copy)
|
|
.on('change', copy)
|
|
.on('ready', cb)
|
|
.on('error', errCheck);
|
|
} else {
|
|
cpx.on('watch-ready', cb);
|
|
cpx.on("watch-error", cb);
|
|
cpx.watch();
|
|
}
|
|
} else {
|
|
cpx.copy(cb);
|
|
}
|
|
}
|
|
|
|
next(0);
|