|
|
@@ -0,0 +1,109 @@
|
|
|
+
|
|
|
+const util = require('util')
|
|
|
+const path = require("path");
|
|
|
+const dirTree = require("directory-tree");
|
|
|
+const tree = dirTree("docs");
|
|
|
+const fs = require("fs");
|
|
|
+
|
|
|
+console.log("Current directory:", __dirname);
|
|
|
+
|
|
|
+/*
|
|
|
+ This transform the node from dirTree into a form acceptable by Vuepress sidebar
|
|
|
+ a.name becomes a.text
|
|
|
+ a.path becomes a.link , and remove this field if there is children and set collapsible to true
|
|
|
+ recursively do the same operator for each a.children
|
|
|
+*/
|
|
|
+function transform_sidebar(child) {
|
|
|
+
|
|
|
+ child.title = child.name.replace(".md", "");;
|
|
|
+ child.link = child.path.replace("docs", "");
|
|
|
+
|
|
|
+ if (child.link == "/README.md") {
|
|
|
+ child.link = "/"; /* special case */
|
|
|
+ child.title = "Home";
|
|
|
+ }
|
|
|
+
|
|
|
+ /* no children , return array of link/text */
|
|
|
+ if (!child.children) {
|
|
|
+ return [child.link, child.title];
|
|
|
+ }
|
|
|
+
|
|
|
+ /* return as a hash record with title/children */
|
|
|
+ if (child.children) {
|
|
|
+
|
|
|
+ let rec = { title: child.title, collapsible: true, children: [] };
|
|
|
+ child.children.forEach(children => {
|
|
|
+ /* bad child if this is a terminating node */
|
|
|
+ if (!children.name.endsWith(".md") && !children.children) {
|
|
|
+ // console.log("Ignoring : " + children.name)
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ rec.children.push(transform_sidebar(children));
|
|
|
+ });
|
|
|
+ return rec;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// comment
|
|
|
+
|
|
|
+let sidebar = [];
|
|
|
+
|
|
|
+tree.children.forEach(child => {
|
|
|
+ if (child.name == ".vuepress") return;
|
|
|
+ if (child.name == ".npmignore") return;
|
|
|
+ sidebar.push(transform_sidebar(child));
|
|
|
+});
|
|
|
+
|
|
|
+console.log("SIDEBAR", sidebar[8]);
|
|
|
+
|
|
|
+
|
|
|
+module.exports = {
|
|
|
+
|
|
|
+ title: 'Kinisi-User-Guide',
|
|
|
+ description: 'Just playing around',
|
|
|
+
|
|
|
+ head: [
|
|
|
+ ['link', { rel: 'icon', href: '/favicon.ico' }]
|
|
|
+ ],
|
|
|
+
|
|
|
+ server: {
|
|
|
+ hmr: { port: 8080 },
|
|
|
+ },
|
|
|
+
|
|
|
+ // sidebar
|
|
|
+ themeConfig: {
|
|
|
+ sidebar: sidebar,
|
|
|
+ searchMaxSuggestions: 10,
|
|
|
+ lastUpdated: 'Last Updated' // string | boolean
|
|
|
+ },
|
|
|
+
|
|
|
+ plugins: [
|
|
|
+ ["vuepress-plugin-code-copy", { staticIcon: true, align: 'top' }],
|
|
|
+ ['@vuepress/plugin-register-components', { componentsDir: "/vp/docs/.vuepress/compdir" }],
|
|
|
+ ['tabs'],
|
|
|
+ // ["demo", { car: 'mercedes' }],
|
|
|
+ ["pagedata", { car: 'mercedes' }]
|
|
|
+ // ['vuepress-plugin-graphviz']
|
|
|
+ ],
|
|
|
+
|
|
|
+ // add javascript to header
|
|
|
+ head: [
|
|
|
+ // ['script', { src: 'https://cdnjs.cloudflare.com/ajax/libs/viz.js/1.3.0/viz123.js' }]
|
|
|
+ ['script', { src: '/viz.js' }]
|
|
|
+ ],
|
|
|
+
|
|
|
+ /*
|
|
|
+ markdown: {
|
|
|
+ extendMarkdown: md => {
|
|
|
+ md.use(require('markdown-it-html5-embed'), {
|
|
|
+ html5embed: {
|
|
|
+ useImageSyntax: true,
|
|
|
+ useLinkSyntax: false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ */
|
|
|
+
|
|
|
+}
|
|
|
+
|