-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathupdate.js
85 lines (69 loc) · 1.63 KB
/
update.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
const cp = require('child_process');
const fs = require('fs');
const path = require('path');
function getModulePack(type) {
const files = fs.readdirSync(path.join(__dirname, type))
.filter(file => file.endsWith('.css') || file.endsWith('.js'))
.map(file => {
const hidden = file.charAt(0) === '!';
const name = hidden ? file.slice(1) : file;
return {
name,
hidden
};
});
return {
type,
files
};
}
function makeMap(mod) {
const map = {};
for (const file of mod.files) {
map[file.name] = file;
}
return map;
}
function getPath(mod, file, hidden) {
return path.join(__dirname, mod.type, hidden ? `!${file.name}` : file.name);
}
function syncUp(old, cur) {
const oldMap = makeMap(old);
for (const file of cur.files) {
const prev = oldMap[file.name];
const wasHidden = prev && prev.hidden;
const isHidden = file.hidden;
// Should've collapsed this, but... eh, is it readable?
if (wasHidden && !isHidden) {
fs.renameSync(
getPath(cur, file, isHidden),
getPath(cur, file, wasHidden)
);
} else if (isHidden && !wasHidden) {
fs.renameSync(
getPath(cur, file, isHidden),
getPath(cur, file, wasHidden)
);
}
}
}
const oldModules = [
getModulePack('scripts'),
getModulePack('styles'),
];
cp.execSync('git add .', { cwd: __dirname });
cp.execSync('git reset --hard HEAD', { cwd: __dirname });
cp.execSync('git pull', { cwd: __dirname });
const newModules = [
getModulePack('scripts'),
getModulePack('styles'),
];
console.dir({
oldModules,
newModules
}, {
depth: 10000
});
syncUp(oldModules[0], newModules[0]);
syncUp(oldModules[1], newModules[1]);
require('./installer.js');