Skip to content

Commit 255aafa

Browse files
cleanup
1 parent 13b510d commit 255aafa

File tree

3 files changed

+58
-49
lines changed

3 files changed

+58
-49
lines changed

files/generate.js

+49-33
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
const baseDir = "json/", outDir = "../out/";
55
var lang = /** @type {keyof (typeof conf)["langs"]} */ ("");
66
var curVer = "", curDoc = "", curSubf = "", pattern = "";
7-
var warnEnbl = false, dbg = false, clean = false, force = false, updateVer = false;
7+
var warnEnbl = false, dbg = false, clear = false, force = false, updateVer = false;
88
var regGen = RegExp(""), regHide = RegExp(""), regControl, progress = 0;
9+
910
/** @type {DSConfig} */ var conf;
1011
/** @type {DSBase|null} */ var base;
1112
/** @type {DSNavs} */ var navs;
@@ -47,9 +48,9 @@ function Generate(patFunc, patScope, patLang) {
4748
pattern = patFunc;
4849

4950
if (patLang && !conf.langs[patLang])
50-
Throw(new Error(`language ${patLang} not specified in conf.json`));
51+
Throw(Error(`language ${patLang} not specified in conf.json`));
5152
if (patScope && !conf.scopes[patScope])
52-
Throw(new Error(`scope ${patScope} not specified in conf.json`));
53+
Throw(Error(`scope ${patScope} not specified in conf.json`));
5354

5455
const dstDir = getDstDir(D_BASE);
5556
if (!app.FolderExists(dstDir)) app.MakeFolder(dstDir);
@@ -63,6 +64,7 @@ function Generate(patFunc, patScope, patLang) {
6364
// 404 page
6465
app.CopyFolder('404.html', dstDir + '404.html');
6566

67+
// update forward.js version map
6668
/** @type {Obj<string>} */
6769
const latest = {};
6870
const forwardjs = app.ReadFile('docs-base/js/forward.js');
@@ -73,12 +75,8 @@ function Generate(patFunc, patScope, patLang) {
7375
});
7476
app.WriteFile('docs-base/js/forward.js', forwardjs.replace(/(versions = ).*;/, `$1${JSON.stringify(latest)};`));
7577

76-
keys(conf.langs).filter(l => l.match(patLang) != null).forEach(l => {
77-
// delete old generated files
78-
if (patScope + patFunc == "")
79-
if (clean) app.DeleteFolder("docs" + getl());
80-
generateLang(l);
81-
});
78+
// generate all languages
79+
keys(conf.langs).filter(l => l.match(patLang) != null).forEach(l => generateLang(l));
8280
}
8381

8482
/** @param {LangKeys} l */
@@ -89,13 +87,20 @@ function generateLang(l) {
8987
scope = {};
9088
base = {};
9189

90+
// clear lang folder
9291
if (!app.FolderExists(langDir)) Throw(Error(`Language '${lang}' doesn't exist.`));
93-
if (!app.FolderExists(dstDir)) app.MakeFolder(dstDir);
94-
if (clean || !app.FolderExists(dstDir + "font-awesome")) app.CopyFolder("font-awesome", dstDir + "font-awesome");
95-
if (clean || !app.FileExists(dstDir + "app.js")) app.CopyFolder("app.js", dstDir + "app.js");
96-
if (clean || !app.FolderExists(dstDir + "css")) app.CopyFolder("docs-base/css", dstDir + "css");
97-
if (clean || !app.FolderExists(dstDir + "js")) app.CopyFolder("docs-base/js", dstDir + "js");
98-
if (clean || !app.FileExists(dstDir + "index.html")) app.CopyFolder("docs-base/Index.htm", dstDir + "index.html");
92+
if (app.FolderExists(dstDir) && clear) {
93+
console.log("deleting " + lang);
94+
app.DeleteFolder(dstDir);
95+
} else console.log("overwriting " + lang);
96+
97+
// update base files
98+
if (clear || !app.FolderExists(dstDir)) app.MakeFolder(dstDir);
99+
app.CopyFolder("font-awesome", dstDir + "font-awesome");
100+
app.CopyFolder("app.js", dstDir + "app.js");
101+
app.CopyFolder("docs-base/css", dstDir + "css");
102+
app.CopyFolder("docs-base/js", dstDir + "js");
103+
app.CopyFolder("docs-base/Index.htm", dstDir + "index.html");
99104
const versions = app.ListFolder(langDir).sort();
100105

101106
// version index page
@@ -104,17 +109,17 @@ function generateLang(l) {
104109
.replace(/(href|src)="(?!http|\/)(\.\.\/)?/g, '$1="../docs/');
105110
app.WriteFile(dstDir + "Docs.htm", index);
106111

112+
// generate all versions
107113
for (const v of versions) generateVersion(v);
108114
}
109115

110116
/** @param {string} ver */
111117
function generateVersion(ver) {
112118
curVer = ver;
113119
const curDir = getDstDir(D_VER);
120+
app.CopyFolder("docs-base", curDir);
114121

115-
if (clean || !app.FolderExists(curDir))
116-
app.CopyFolder("docs-base", curDir);
117-
122+
// generate all scopes
118123
keys(conf.scopes)
119124
.filter(s => s.match(patScope) != null)
120125
.forEach(scope => {
@@ -145,36 +150,34 @@ function generateScope(name) {
145150
if (!app.FolderExists(scopeDir + "samples")) app.MakeFolder(scopeDir + "samples");
146151

147152
// check file dates for update
148-
if (!force && !clean && newestFileDate(dstDir) > newestFileDate(scopeDir, "generate.js"))
153+
if (!force && !clear && newestFileDate(dstDir) > newestFileDate(scopeDir, "generate.js"))
149154
return console.log(`Skipped ${lang}.${curVer}.${name}.${pattern || '*'}`);
150155

151156
app.ShowProgressBar(`Generating ${lang}.${curVer}.${name}.${pattern || '*'}`);
152157
parseInput();
153158

154-
if (!clean) {
159+
// clear nav & scope folder for generating
160+
if (!clear) {
155161
const verDir = getDstDir(D_VER);
156-
// delete navs
157-
if ("navs".match(regGen))
158-
app.ListFolder(verDir).map((f) =>
159-
f.startsWith(name + "_") && app.DeleteFile(verDir + f));
160-
// delete docs
161-
else app.DeleteFolder(dstDir);
162+
if (!"navs".match(regGen)) app.DeleteFolder(dstDir);
163+
for (const f of app.ListFolder(verDir))
164+
f.startsWith(name + "_") && app.DeleteFile(verDir + f);
162165
}
163-
164166
if (!app.FolderExists(dstDir)) app.MakeFolder(dstDir);
165167

166-
// start generating
168+
// generate nav pages
167169
if ("navs".match(regGen)) {
168170
generateNavigators(navs, conf.scopes[curScope] || curScope);
169171
var missNavs = Object.entries(scope).filter(m => !m[1].hasNav).map(m => m[1].name || m[0]).filter(nothidden);
170172
if (base && missNavs.length > 0) console.log(`missing navigators in ${curScope}: ${missNavs.join(", ")}\n`);
171173
}
172174

175+
// generate doc pages
173176
generateDocs(scope);
174-
175177
app.HideProgressBar();
176178
}
177179

180+
// read all input json files
178181
function parseInput() {
179182
var newScope = scope, newBase = base;
180183

@@ -290,7 +293,6 @@ function generateNavigators(navs, name, pfx) {
290293
app.WriteFile(curDoc, htmlNavi(name, addcontent, nav, !nofilter));
291294
}
292295

293-
//generates doc files
294296
/** @param {DSScope} scope */
295297
function generateDocs(scope) {
296298
curDoc = getSrcDir(D_SCOPE);
@@ -1369,9 +1371,10 @@ OPTIONS:
13691371
adds a language to conf.json
13701372
-as --addscope=<SCOPE-ABBREV>=<SCOPE-NAME>
13711373
adds a scope to conf.json
1372-
-c --clean regenerate the docs completely
1374+
-c --clear regenerate the docs completely
13731375
-u --update update the docs version number
13741376
-f --force force generation of otherwise skipped
1377+
-C --clean delete temp files (out/ files/json/*/)
13751378
-n --nogen don't generate
13761379
-s --server start webserver after generating
13771380
-v --verbose print more debug logs
@@ -1429,7 +1432,7 @@ if (typeof app == "undefined") {
14291432
var patLang = "", patScope = "", patFunc = "";
14301433
/** @type {{add: boolean, langs: Obj<string>, scopes: Obj<string>}} */
14311434
var addcfg = { add: false, langs: {}, scopes: {} };
1432-
var nogen = false, startServer = false;
1435+
var nogen = false, startServer = false, clean = false;
14331436

14341437
for (var spat of process.argv.slice(2)) {
14351438
if (spat.startsWith("-")) {
@@ -1438,7 +1441,8 @@ if (typeof app == "undefined") {
14381441
case "-l": case "--lang": lang = /** @type {LangKeys} */ (pat[1]); break;
14391442
case "-n": case "--nogen": nogen = true; break;
14401443
case "-v": case "--verbose": dbg = true; break;
1441-
case "-c": case "--clean": clean = true; break;
1444+
case "-c": case "--clear": clear = true; break;
1445+
case "-C": case "--clean": clean = true; break;
14421446
case "-u": case "--update": updateVer = true; break;
14431447
case "-f": case "--force": force = true; break;
14441448
case "-h": case "--help": app.Alert(help); process.exit(0); case "-s": startServer = true; break;
@@ -1464,6 +1468,18 @@ if (typeof app == "undefined") {
14641468
}
14651469
}
14661470

1471+
if (clean) {
1472+
const glob = require('glob').sync;
1473+
for (const dir of glob(baseDir + '*/')) {
1474+
console.log(`Deleting ${l} ...`);
1475+
app.DeleteFolder(dir);
1476+
}
1477+
console.log(`Deleting ${outDir} ...`);
1478+
app.DeleteFolder(outDir);
1479+
console.log("done.");
1480+
process.exit();
1481+
}
1482+
14671483
if (addcfg.add) {
14681484
var conf = /** @type {DSConfig} */ (JSON.parse(app.ReadFile("conf.json")));
14691485
if (!conf) Throw(Error("conf.json not readable."));

files/json/README.md

+8-16
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,12 @@ OPTIONS:
344344
adds a language to conf.json
345345
-as --addscope=<SCOPE-ABBREV>=<SCOPE-NAME>
346346
adds a scope to conf.json
347-
-c --clean regenerate the docs completely
347+
-c --clear regenerate the docs completely
348+
-u --update update the docs version number
349+
-f --force force generation of otherwise skipped
350+
-C --clean delete temp files (out/ files/json/*/)
348351
-n --nogen don't generate
352+
-s --server start webserver after generating
349353
-v --verbose print more debug logs
350354
-h --help this help
351355
@@ -361,19 +365,7 @@ MEMBER-PATTERN: RegEx pattern
361365

362366
## Update Github Pages
363367

364-
To publish the generated html files on GitHub Pages execute the `updatePages.sh` script
365-
```shell
366-
./updatePages.sh
367-
```
368-
Alternatively update them manually with a file-browser of your choice, based on these commands:
369-
```shell
370-
# delete old docs
371-
rm -r ../docs/docs/
372-
373-
# copy new docs and version
374-
cp -r docs/ version.txt ../docs/
375-
376-
# edit Docs.htm, search for 'Docs version:' and
377-
# increment the number (last 3 digits of version.txt)
378-
nano ../docs/Docs.htm
368+
To publish the generated html files on GitHub Pages execute the `updatePages` script
369+
```sh
370+
npm run updatePages
379371
```

files/updatePages.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/node
2+
23
const path = require('path');
34
const fs = require('fs-extra');
45
const rimraf = require('rimraf').sync;

0 commit comments

Comments
 (0)