forked from noctarius/funimation-downloader-nx-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tsc.ts
71 lines (66 loc) · 1.64 KB
/
tsc.ts
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
import { exec } from 'child_process';
import fs from 'fs';
import path from 'path';
import { removeSync, copyFileSync } from 'fs-extra';
const ignore = [
'.git',
'lib',
'node_modules',
'@types',
path.join('bin', 'mkvtoolnix'),
path.join('config', 'token.yml'),
path.join('config', 'updates.json'),
path.join('config', 'cr_token.yml'),
path.join('config', 'funi_token.yml'),
'.eslint',
].map(a => path.join(__dirname, a));
export { ignore };
(async () => {
removeSync('lib');
const tsc = exec('npx tsc');
tsc.stdout?.on('data', console.log);
tsc.stderr?.on('data', console.log);
tsc.on('close', () => {
const files = readDir(__dirname);
const filtered = files.filter(a => {
if (a.stats.isFile()) {
return a.path.split('.').pop() !== 'ts';
} else {
return true;
}
});
filtered.forEach(item => {
const itemPath = path.join(__dirname, 'lib', item.path.replace(__dirname, ''));
if (item.stats.isDirectory()) {
if (!fs.existsSync(itemPath))
fs.mkdirSync(itemPath);
} else {
copyFileSync(item.path, itemPath);
}
});
});
})();
const readDir = (dir: string) : {
path: string,
stats: fs.Stats
}[] => {
const items: {
path: string,
stats: fs.Stats
}[] = [];
const content = fs.readdirSync(dir);
for (const item of content) {
const itemPath = path.join(dir, item);
if (ignore.some(a => itemPath.startsWith(a)))
continue;
const stats = fs.statSync(itemPath);
items.push({
path: itemPath,
stats
});
if (stats.isDirectory()) {
items.push(...readDir(itemPath));
}
}
return items;
};