-
Notifications
You must be signed in to change notification settings - Fork 0
/
auto-generate.js
48 lines (37 loc) · 1.22 KB
/
auto-generate.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
const shell = require('shelljs');
const path = require('path');
const fs = require('fs');
const repoUrl = 'https://github.com/xchainjs/xchainjs-lib.git';
const cloneDir = path.join(__dirname, 'xchainjs-lib');
const packagesDir = path.join(cloneDir, 'packages');
const getDocsOutputBaseDir = (name) => path.join(__dirname, name, 'docs');
if (fs.existsSync(cloneDir)) {
console.log('Updating repository...');
shell.cd(cloneDir);
shell.exec('git pull');
} else {
console.log('Cloning repository...');
shell.exec(`git clone ${repoUrl} "${cloneDir}"`);
}
shell.cd(packagesDir);
shell.exec('yarn install');
shell.exec('yarn build');
fs.readdir(packagesDir, { withFileTypes: true }, (err, dirs) => {
if (err) {
console.error('Error reading package disrectory:', err);
return;
}
dirs.forEach(dir => {
docsOutputDir = getDocsOutputBaseDir(dir.name)
if (!fs.existsSync(docsOutputDir)) {
fs.mkdirSync(docsOutputDir);
}
if (dir.isDirectory()) {
const packageDir = path.join(packagesDir, dir.name);
console.log(`Generating docs ${dir.name} in ${docsOutputDir}`);
shell.cd(packageDir);
shell.exec(`npx typedoc --out ${docsOutputDir} src`);
}
});
});
console.log('Done!');