refactor: dox
This commit is contained in:
parent
980ed41b9b
commit
b044dbae40
|
@ -5,7 +5,14 @@
|
||||||
'@flecks/create:./packages/create-fleck': {}
|
'@flecks/create:./packages/create-fleck': {}
|
||||||
'@flecks/db:./packages/db': {}
|
'@flecks/db:./packages/db': {}
|
||||||
'@flecks/docker:./packages/docker': {}
|
'@flecks/docker:./packages/docker': {}
|
||||||
'@flecks/dox:./packages/dox': {}
|
'@flecks/dox:./packages/dox':
|
||||||
|
rewriteFilenames:
|
||||||
|
-
|
||||||
|
- '@flecks\/([^/]+)\/(.*)'
|
||||||
|
- '[@flecks/**$1**<span style={{fontSize: "80%"}}>​`/$2`</span>](https://github.com/cha0s/flecks/tree/master/packages/$1/$2)'
|
||||||
|
-
|
||||||
|
- '\((.*):([0-9]+):[0-9]+\)'
|
||||||
|
- '($1#L$2)'
|
||||||
'@flecks/electron:./packages/electron': {}
|
'@flecks/electron:./packages/electron': {}
|
||||||
'@flecks/fleck:./packages/fleck': {}
|
'@flecks/fleck:./packages/fleck': {}
|
||||||
'@flecks/governor:./packages/governor': {}
|
'@flecks/governor:./packages/governor': {}
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "lerna run build",
|
"build": "lerna run build",
|
||||||
"clean": "lerna exec yarn clean",
|
"clean": "lerna exec yarn clean",
|
||||||
"dox:gh-pages": "flecks dox docusaurus -r '@flecks\/([^/]+)\/(.*)=[@flecks/**$1**/$2](https://github.com/cha0s/flecks/tree/master/packages/$1/$2)' -r '\\((.*):([0-9]+):[0-9]+\\)=($1#L$2)' && cd website && DOCUSAURUS_GENERATED_FILES_DIR_NAME=node_modules/.cache/docusaurus node_modules/.bin/docusaurus build --out-dir ../dox-tmp && cd .. && rm -rf dox/* && mv dox-tmp/* dox && rmdir dox-tmp",
|
"dox:gh-pages": "flecks dox docusaurus && cd website && DOCUSAURUS_GENERATED_FILES_DIR_NAME=node_modules/.cache/docusaurus node_modules/.bin/docusaurus build --out-dir ../dox-tmp && cd .. && rm -rf dox/* && mv dox-tmp/* dox && rmdir dox-tmp",
|
||||||
"dox": "flecks dox docusaurus -r '@flecks\/([^/]+)\/(.*)=[@flecks/**$1**/$2](https://github.com/cha0s/flecks/tree/master/packages/$1/$2)' -r '\\((.*):([0-9]+):[0-9]+\\)=($1#L$2)' && cd website && DOCUSAURUS_GENERATED_FILES_DIR_NAME=node_modules/.cache/docusaurus node_modules/.bin/docusaurus",
|
"dox": "flecks dox docusaurus && cd website && DOCUSAURUS_GENERATED_FILES_DIR_NAME=node_modules/.cache/docusaurus node_modules/.bin/docusaurus",
|
||||||
"lint": "lerna run lint",
|
"lint": "lerna run lint",
|
||||||
"publish": "lerna publish --conventional-commits --contents=dist --registry https://registry.npmjs.org",
|
"publish": "lerna publish --conventional-commits --contents=dist --registry https://registry.npmjs.org",
|
||||||
"test": "lerna exec 'yarn && yarn test'"
|
"test": "lerna exec 'yarn && yarn test'"
|
||||||
|
|
|
@ -36,7 +36,7 @@ export const hooks = {
|
||||||
'@flecks/build.extensions': () => ['.coffee'],
|
'@flecks/build.extensions': () => ['.coffee'],
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register build files.
|
* Register build files. See [the build files page](./build-files) for more details.
|
||||||
*/
|
*/
|
||||||
'@flecks/build.files': () => [
|
'@flecks/build.files': () => [
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -8,7 +8,7 @@ export const hooks = {
|
||||||
}),
|
}),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define configuration.
|
* Define configuration. See [the configuration page](./config) for more details.
|
||||||
*/
|
*/
|
||||||
'@flecks/core.config': () => ({
|
'@flecks/core.config': () => ({
|
||||||
whatever: 'configuration',
|
whatever: 'configuration',
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
const {mkdir, writeFile} = require('fs/promises');
|
const {mkdir, readFile, writeFile} = require('fs/promises');
|
||||||
const {join, relative, resolve} = require('path');
|
const {join, relative, resolve} = require('path');
|
||||||
|
|
||||||
const {
|
const {
|
||||||
generateDocusaurus,
|
generateDocusaurus,
|
||||||
generateJson,
|
generateJson,
|
||||||
|
generateDocusaurusStyle,
|
||||||
} = require('./generate');
|
} = require('./generate');
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
@ -33,7 +34,11 @@ module.exports = (program, flecks) => {
|
||||||
let output;
|
let output;
|
||||||
const json = await generateJson(flecks);
|
const json = await generateJson(flecks);
|
||||||
const pairs = rewriteFilenames
|
const pairs = rewriteFilenames
|
||||||
.map((pair) => pair.split('='))
|
.map((pair) => {
|
||||||
|
const index = pair.indexOf('=');
|
||||||
|
return [pair.slice(0, index), pair.slice(index + 1)];
|
||||||
|
})
|
||||||
|
.concat(flecks.get('@flecks/dox.rewriteFilenames'))
|
||||||
.map(([from, to]) => [new RegExp(from, 'g'), to]);
|
.map(([from, to]) => [new RegExp(from, 'g'), to]);
|
||||||
const rewrite = (array) => (
|
const rewrite = (array) => (
|
||||||
array.map(
|
array.map(
|
||||||
|
@ -66,6 +71,7 @@ module.exports = (program, flecks) => {
|
||||||
Object.entries(generateDocusaurus(json))
|
Object.entries(generateDocusaurus(json))
|
||||||
.map(([type, page]) => [`${type}.mdx`, page]),
|
.map(([type, page]) => [`${type}.mdx`, page]),
|
||||||
);
|
);
|
||||||
|
output['dox.module.css'] = await generateDocusaurusStyle();
|
||||||
break;
|
break;
|
||||||
case 'json':
|
case 'json':
|
||||||
output = Object.fromEntries(
|
output = Object.fromEntries(
|
||||||
|
|
|
@ -2,4 +2,10 @@ const commands = require('./commands');
|
||||||
|
|
||||||
exports.hooks = {
|
exports.hooks = {
|
||||||
'@flecks/build.commands': commands,
|
'@flecks/build.commands': commands,
|
||||||
|
'@flecks/core.config': () => ({
|
||||||
|
/**
|
||||||
|
* Pattern pairs used to rewrite filenames in generated documentation.
|
||||||
|
*/
|
||||||
|
rewriteFilenames: [],
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
|
|
|
@ -88,6 +88,8 @@ exports.generateDocusaurusHookPage = (hooks) => {
|
||||||
source.push('description: All the hooks in this project.');
|
source.push('description: All the hooks in this project.');
|
||||||
source.push('---');
|
source.push('---');
|
||||||
source.push('');
|
source.push('');
|
||||||
|
source.push("import styles from './dox.module.css';");
|
||||||
|
source.push('');
|
||||||
source.push('This page documents all the hooks in this project.');
|
source.push('This page documents all the hooks in this project.');
|
||||||
source.push('');
|
source.push('');
|
||||||
Object.entries(hooks)
|
Object.entries(hooks)
|
||||||
|
@ -121,32 +123,55 @@ exports.generateDocusaurusHookPage = (hooks) => {
|
||||||
});
|
});
|
||||||
source.push('');
|
source.push('');
|
||||||
}
|
}
|
||||||
if (implementations.length > 0) {
|
if (implementations.length > 0 || invocations.length > 0) {
|
||||||
source.push('<details>');
|
source.push('<div className={styles.hooks}>');
|
||||||
source.push('<summary>Implementations</summary>');
|
if (implementations.length > 0) {
|
||||||
source.push('<ul>');
|
source.push('<div>');
|
||||||
implementations.forEach(({filename}) => {
|
source.push('<h3>Implementations</h3>');
|
||||||
source.push(`<li>${filename}</li>`);
|
implementations.forEach(({filename}) => {
|
||||||
});
|
source.push(`<div>${filename}</div>`);
|
||||||
source.push('</ul>');
|
});
|
||||||
source.push('</details>');
|
source.push('</div>');
|
||||||
source.push('');
|
}
|
||||||
}
|
if (invocations.length > 0) {
|
||||||
if (invocations.length > 0) {
|
source.push('<div>');
|
||||||
source.push('<details>');
|
source.push('<h3>Invocations</h3>');
|
||||||
source.push('<summary>Invocations</summary>');
|
invocations.forEach(({filename, type}) => {
|
||||||
source.push('<ul>');
|
source.push(`<div>${filename} (\`${type}\`)</div>`);
|
||||||
invocations.forEach(({filename, type}) => {
|
});
|
||||||
source.push(`<li>${filename} (\`${type}\`)</li>`);
|
source.push('</div>');
|
||||||
});
|
}
|
||||||
source.push('</ul>');
|
source.push('</div>');
|
||||||
source.push('</details>');
|
|
||||||
source.push('');
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return source.join('\n');
|
return source.join('\n');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.generateDocusaurusStyle = () => `
|
||||||
|
.hooks > div {
|
||||||
|
margin-bottom: var(--ifm-heading-margin-bottom);
|
||||||
|
}
|
||||||
|
.hooks > div code {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 641px) {
|
||||||
|
.hooks {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.hooks > div:first-child {
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.hooks > div:last-child {
|
||||||
|
padding-left: var(--ifm-spacing-horizontal);
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.hooks > div:only-child {
|
||||||
|
padding-left: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
exports.generateDocusaurusTodoPage = (todos) => {
|
exports.generateDocusaurusTodoPage = (todos) => {
|
||||||
const source = [];
|
const source = [];
|
||||||
source.push('---');
|
source.push('---');
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [],
|
||||||
"website"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.17.2",
|
"@babel/core": "^7.17.2",
|
||||||
"@babel/traverse": "^7.17.0",
|
"@babel/traverse": "^7.17.0",
|
||||||
|
|
2
packages/dox/website/docs/.gitignore
vendored
2
packages/dox/website/docs/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
||||||
# This ignores the automatically-generated `flecks` subfolder.
|
|
||||||
/flecks
|
|
|
@ -1,9 +0,0 @@
|
||||||
---
|
|
||||||
description: This project was built with flecks and is totally awesome!
|
|
||||||
slug: /
|
|
||||||
---
|
|
||||||
|
|
||||||
# Introduction
|
|
||||||
|
|
||||||
⚡️ Welcome to your documentation website! From here, you will want to consult the
|
|
||||||
[Docusaurus](https://docusaurus.io/) documentation to learn how to build this website out!
|
|
|
@ -1,21 +0,0 @@
|
||||||
// @ts-check
|
|
||||||
// `@type` JSDoc annotations allow editor autocompletion and type checking
|
|
||||||
// (when paired with `@ts-check`).
|
|
||||||
// There are various equivalent ways to declare your Docusaurus config.
|
|
||||||
// See: https://docusaurus.io/docs/api/docusaurus-config
|
|
||||||
|
|
||||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
||||||
const {configDefaults} = require('@flecks/dox/build/docusaurus');
|
|
||||||
|
|
||||||
module.exports = async function flecksDocusaurus() {
|
|
||||||
const defaults = configDefaults();
|
|
||||||
/** @type {import('@docusaurus/types').Config} */
|
|
||||||
const config = {
|
|
||||||
...defaults,
|
|
||||||
title: 'My documentation website',
|
|
||||||
tagline: 'built with flecks',
|
|
||||||
url: 'http://localhost',
|
|
||||||
baseUrl: '/',
|
|
||||||
};
|
|
||||||
return config;
|
|
||||||
};
|
|
|
@ -1,41 +0,0 @@
|
||||||
import clsx from 'clsx';
|
|
||||||
import Link from '@docusaurus/Link';
|
|
||||||
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
||||||
import Layout from '@theme/Layout';
|
|
||||||
|
|
||||||
import Heading from '@theme/Heading';
|
|
||||||
import styles from './index.module.css';
|
|
||||||
|
|
||||||
function HomepageHeader() {
|
|
||||||
const {siteConfig} = useDocusaurusContext();
|
|
||||||
return (
|
|
||||||
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
|
||||||
<div className="container">
|
|
||||||
<Heading as="h1" className="hero__title">
|
|
||||||
{siteConfig.title}
|
|
||||||
</Heading>
|
|
||||||
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
|
||||||
<div className={styles.buttons}>
|
|
||||||
<Link
|
|
||||||
className="button button--secondary button--lg"
|
|
||||||
to="/docs"
|
|
||||||
>
|
|
||||||
Your documentation here
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function Home() {
|
|
||||||
const {siteConfig} = useDocusaurusContext();
|
|
||||||
return (
|
|
||||||
<Layout
|
|
||||||
title={`Hello from ${siteConfig.title}`}
|
|
||||||
description="Description will go into a meta tag in <head />"
|
|
||||||
>
|
|
||||||
<HomepageHeader />
|
|
||||||
</Layout>
|
|
||||||
);
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
/**
|
|
||||||
* CSS files with the .module.css suffix will be treated as CSS modules
|
|
||||||
* and scoped locally.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.heroBanner {
|
|
||||||
padding: 4rem 0;
|
|
||||||
text-align: center;
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 996px) {
|
|
||||||
.heroBanner {
|
|
||||||
padding: 2rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttons {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
export default {
|
|
||||||
sidebar: [
|
|
||||||
'introduction',
|
|
||||||
],
|
|
||||||
};
|
|
|
@ -59,7 +59,7 @@ export default {
|
||||||
'flecks/hooks',
|
'flecks/hooks',
|
||||||
'flecks/config',
|
'flecks/config',
|
||||||
'flecks/build-files',
|
'flecks/build-files',
|
||||||
'flecks/todo',
|
'flecks/todos',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in New Issue
Block a user