hdoc-tools 0.19.7 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom_modules/tips.js +88 -86
- package/hdoc-build-db.js +260 -198
- package/hdoc-build-pdf.js +219 -173
- package/hdoc-build.js +1480 -1503
- package/hdoc-bump.js +123 -109
- package/hdoc-create.js +108 -95
- package/hdoc-db.js +97 -125
- package/hdoc-help.js +48 -51
- package/hdoc-init.js +181 -147
- package/hdoc-module.js +708 -723
- package/hdoc-serve.js +390 -361
- package/hdoc-stats.js +187 -184
- package/hdoc-validate.js +956 -717
- package/hdoc-ver.js +43 -43
- package/hdoc.js +142 -124
- package/package.json +60 -60
- package/templates/init/_hdocbook/hdocbook.json +23 -23
- package/templates/init/hdocbook-project.json +10 -10
- package/templates/init/package.json +8 -10
- package/ui/js/doc.hornbill.js +708 -659
- package/validateNodeVer.js +17 -14
package/hdoc-bump.js
CHANGED
@@ -1,109 +1,123 @@
|
|
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
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
1
|
+
(() => {
|
2
|
+
const fs = require("node:fs");
|
3
|
+
const path = require("node:path");
|
4
|
+
|
5
|
+
exports.run = (source_path, bump_type) => {
|
6
|
+
if (
|
7
|
+
bump_type !== "patch" &&
|
8
|
+
bump_type !== "minor" &&
|
9
|
+
bump_type !== "major"
|
10
|
+
) {
|
11
|
+
console.error(`Unsupported bump type: ${bump_type}`);
|
12
|
+
process.exit(1);
|
13
|
+
}
|
14
|
+
console.log(`Bumping ${bump_type} book version...\n`);
|
15
|
+
|
16
|
+
// Get document ID
|
17
|
+
const hdocbook_project_config_path = path.join(
|
18
|
+
source_path,
|
19
|
+
"hdocbook-project.json",
|
20
|
+
);
|
21
|
+
let hdocbook_project;
|
22
|
+
try {
|
23
|
+
hdocbook_project = require(hdocbook_project_config_path);
|
24
|
+
} catch (e) {
|
25
|
+
console.error("File not found: hdocbook-project.json:");
|
26
|
+
console.error(e, "\n");
|
27
|
+
console.error("hdoc bump needs to be run in the root of a HDoc Book.\n");
|
28
|
+
process.exit(1);
|
29
|
+
}
|
30
|
+
const doc_id = hdocbook_project.docId;
|
31
|
+
|
32
|
+
const book_path = path.join(source_path, doc_id);
|
33
|
+
const hdocbook_path = path.join(book_path, "hdocbook.json");
|
34
|
+
|
35
|
+
let hdocbook_config;
|
36
|
+
try {
|
37
|
+
hdocbook_config = require(hdocbook_path);
|
38
|
+
} catch (e) {
|
39
|
+
console.error("File not found: hdocbook.json");
|
40
|
+
console.error(e, "\n");
|
41
|
+
console.error("hdoc bump needs to be run in the root of a HDoc Book.\n");
|
42
|
+
process.exit(1);
|
43
|
+
}
|
44
|
+
const initial_version = hdocbook_config.version;
|
45
|
+
const hdocbook_version = hdocbook_config.version.split(".");
|
46
|
+
if (hdocbook_version.length !== 3) {
|
47
|
+
console.error(
|
48
|
+
`Book version does not appear to be in a semantic versioning format: ${initial_version}`,
|
49
|
+
);
|
50
|
+
process.exit(1);
|
51
|
+
}
|
52
|
+
|
53
|
+
if (Number.isNaN(hdocbook_version[0])) {
|
54
|
+
console.error(
|
55
|
+
`Existing major version is not a number: ${hdocbook_version[0]}`,
|
56
|
+
);
|
57
|
+
process.exit(1);
|
58
|
+
}
|
59
|
+
if (Number.isNaN(hdocbook_version[1])) {
|
60
|
+
console.error(
|
61
|
+
`Existing minor version is not a number: ${hdocbook_version[1]}`,
|
62
|
+
);
|
63
|
+
process.exit(1);
|
64
|
+
}
|
65
|
+
if (Number.isNaN(hdocbook_version[2])) {
|
66
|
+
console.error(
|
67
|
+
`Existing patch version is not a number: ${hdocbook_version[2]}`,
|
68
|
+
);
|
69
|
+
process.exit(1);
|
70
|
+
}
|
71
|
+
|
72
|
+
switch (bump_type) {
|
73
|
+
case "major":
|
74
|
+
try {
|
75
|
+
hdocbook_version[0] = Number.parseInt(hdocbook_version[0], 10) + 1;
|
76
|
+
hdocbook_version[1] = 0;
|
77
|
+
hdocbook_version[2] = 0;
|
78
|
+
} catch (e) {
|
79
|
+
console.error("Failed to update major version:");
|
80
|
+
console.error(e);
|
81
|
+
process.exit(1);
|
82
|
+
}
|
83
|
+
break;
|
84
|
+
case "minor":
|
85
|
+
try {
|
86
|
+
hdocbook_version[0] = Number.parseInt(hdocbook_version[0], 10);
|
87
|
+
hdocbook_version[1] = Number.parseInt(hdocbook_version[1], 10) + 1;
|
88
|
+
hdocbook_version[2] = 0;
|
89
|
+
} catch (e) {
|
90
|
+
console.error("Failed to update minor version:");
|
91
|
+
console.error(e);
|
92
|
+
process.exit(1);
|
93
|
+
}
|
94
|
+
break;
|
95
|
+
default:
|
96
|
+
//case "patch" catered for with this default
|
97
|
+
try {
|
98
|
+
hdocbook_version[0] = Number.parseInt(hdocbook_version[0], 10);
|
99
|
+
hdocbook_version[1] = Number.parseInt(hdocbook_version[1], 10);
|
100
|
+
hdocbook_version[2] = Number.parseInt(hdocbook_version[2], 10) + 1;
|
101
|
+
} catch (e) {
|
102
|
+
console.error("Failed to update patch version:");
|
103
|
+
console.error(e);
|
104
|
+
process.exit(1);
|
105
|
+
}
|
106
|
+
break;
|
107
|
+
}
|
108
|
+
|
109
|
+
hdocbook_config.version = hdocbook_version.join(".");
|
110
|
+
|
111
|
+
try {
|
112
|
+
fs.writeFileSync(hdocbook_path, JSON.stringify(hdocbook_config, null, 2));
|
113
|
+
} catch (e) {
|
114
|
+
console.error("Error writing bumped version to book config:", e);
|
115
|
+
process.exit(1);
|
116
|
+
}
|
117
|
+
|
118
|
+
console.log(
|
119
|
+
`Book version updated from ${initial_version} to ${hdocbook_config.version}\n`,
|
120
|
+
);
|
121
|
+
return true;
|
122
|
+
};
|
123
|
+
})();
|
package/hdoc-create.js
CHANGED
@@ -1,95 +1,108 @@
|
|
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
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
})
|
1
|
+
(() => {
|
2
|
+
const fs = require("fs-extra");
|
3
|
+
const path = require("node:path");
|
4
|
+
const hdoc = require(path.join(__dirname, "hdoc-module.js"));
|
5
|
+
|
6
|
+
let doc_id;
|
7
|
+
let file_count = 0;
|
8
|
+
let folder_count = 0;
|
9
|
+
|
10
|
+
const processed_links = {};
|
11
|
+
|
12
|
+
exports.run = async (source_path) => {
|
13
|
+
console.log("Hornbill HDocBook Create", "\n");
|
14
|
+
console.log("Path:", source_path, "\n");
|
15
|
+
|
16
|
+
// Load the hdocbook-project.json file to get the docId
|
17
|
+
// use the docId to get the book config
|
18
|
+
const hdocbook_project_config_path = path.join(
|
19
|
+
source_path,
|
20
|
+
"hdocbook-project.json",
|
21
|
+
);
|
22
|
+
let hdocbook_project = {};
|
23
|
+
try {
|
24
|
+
hdocbook_project = require(hdocbook_project_config_path);
|
25
|
+
} catch (e) {
|
26
|
+
console.error(`File not found: ${hdocbook_project_config_path}\n`);
|
27
|
+
console.error(
|
28
|
+
"hdoc create needs to be run in the root of a HDoc Book.\n",
|
29
|
+
);
|
30
|
+
process.exit(1);
|
31
|
+
}
|
32
|
+
doc_id = hdocbook_project.docId;
|
33
|
+
|
34
|
+
const book_path = path.join(source_path, doc_id);
|
35
|
+
const hdocbook_path = path.join(book_path, "hdocbook.json");
|
36
|
+
|
37
|
+
let hdocbook = {};
|
38
|
+
try {
|
39
|
+
hdocbook = require(hdocbook_path);
|
40
|
+
} catch (e) {
|
41
|
+
console.error(`File not found: ${hdocbook_path}\n`);
|
42
|
+
console.error(
|
43
|
+
"hdoc create needs to be run in the root of a HDoc Book.\n",
|
44
|
+
);
|
45
|
+
process.exit(1);
|
46
|
+
}
|
47
|
+
|
48
|
+
// Get paths from breadcrumb builder
|
49
|
+
const nav_paths = hdoc.build_breadcrumbs(hdocbook.navigation.items);
|
50
|
+
for (const key in nav_paths) {
|
51
|
+
if (Object.hasOwn(nav_paths, key)) {
|
52
|
+
for (const navkey in nav_paths[key]) {
|
53
|
+
if (Object.hasOwn(nav_paths[key], navkey)) {
|
54
|
+
for (let i = 0; i < nav_paths[key][navkey].length; i++) {
|
55
|
+
if (
|
56
|
+
nav_paths[key][navkey][i].link &&
|
57
|
+
!processed_links[nav_paths[key][navkey][i].link]
|
58
|
+
) {
|
59
|
+
nav_paths[key][navkey][i].path = path.join(
|
60
|
+
source_path,
|
61
|
+
nav_paths[key][navkey][i].link,
|
62
|
+
);
|
63
|
+
await add_doc(nav_paths[key][navkey][i]);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
console.log("\n-----------------------");
|
71
|
+
console.log(" Docs Creation Summary");
|
72
|
+
console.log("-----------------------\n");
|
73
|
+
console.log(` Files Created: ${file_count}`);
|
74
|
+
console.log(`Folders Created: ${folder_count}\n`);
|
75
|
+
};
|
76
|
+
|
77
|
+
const add_doc = async (doc_info) => {
|
78
|
+
// Does folder exist? Create if not
|
79
|
+
const folder = path.dirname(doc_info.path);
|
80
|
+
if (!fs.existsSync(folder)) {
|
81
|
+
try {
|
82
|
+
fs.mkdirSync(folder, true);
|
83
|
+
console.log("Folder created:", folder);
|
84
|
+
folder_count++;
|
85
|
+
} catch {
|
86
|
+
console.error("\nError creating folder", folder, ":", e);
|
87
|
+
return;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
// Does file exist? Create if not
|
92
|
+
if (
|
93
|
+
!fs.existsSync(`${doc_info.path}.md`) &&
|
94
|
+
!fs.existsSync(`${doc_info.path}.htm`) &&
|
95
|
+
!fs.existsSync(`${doc_info.path}.html`)
|
96
|
+
) {
|
97
|
+
try {
|
98
|
+
const file_path = `${doc_info.path}.md`;
|
99
|
+
fs.writeFileSync(file_path, `# ${doc_info.text}\n`);
|
100
|
+
console.log(" File created:", file_path);
|
101
|
+
processed_links[doc_info.link] = true;
|
102
|
+
file_count++;
|
103
|
+
} catch (e) {
|
104
|
+
console.error("\nError creating file", doc_info.path, ":", e);
|
105
|
+
}
|
106
|
+
}
|
107
|
+
};
|
108
|
+
})();
|