-
Notifications
You must be signed in to change notification settings - Fork 10
/
generate.js
85 lines (69 loc) · 2.18 KB
/
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
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
const { rm, cp } = require('shelljs')
const { readFileSync, writeFileSync, readdirSync } = require('fs')
const { resolve, join } = require('path')
const dedent = require('dedent-js')
function alterFile(path) {
let content = readFileSync(path, { encoding: 'utf-8' })
content = content.replaceAll(
`import DocsWrapper from 'src/docs/DocsWrapper'`,
dedent(`
import DocsWrapper from 'src/docs/DocsWrapper'
import { directory } from 'pages/docs/directory'`)
)
content = content.replaceAll(
`import DocsWrapper from '../../src/docs/DocsWrapper'`,
dedent(`
import DocsWrapper from 'src/docs/DocsWrapper'
import { directory } from 'pages/docs/directory'`)
)
content = content.replaceAll(
`export default ({ children }) => <DocsWrapper>{children}</DocsWrapper>`,
dedent(`
export default ({ children, menu }) => <DocsWrapper menu={menu}>{children}</DocsWrapper>
export async function getStaticProps() {
return { props: { menu: directory } }
}
`)
)
content = content.replaceAll(`<Image`, `<Image loader={imageLoader}`)
content = content.replaceAll(
`import Image from 'next/legacy/image'`,
dedent(`
import Image from 'next/legacy/image'
import imageLoader from 'src/imageLoader'
`)
)
writeFileSync(path, content)
}
function getFiles(dir) {
let files = []
const dirents = readdirSync(dir, { withFileTypes: true })
for (const dirent of dirents) {
const res = resolve(dir, dirent.name)
if (dirent.isDirectory()) {
files = files.concat(getFiles(res))
} else {
files.push(res)
}
}
return files
}
async function run() {
console.log(process.cwd())
rm('-rf', 'pages/docs')
rm('-rf', 'public')
cp('-R', '../../frontend/public', './')
cp('-R', '../../frontend/pages/docs', './pages/')
cp('-R', '../../frontend/src/docs', './src/')
cp('../../frontend/src/Copyright.tsx', './src/')
cp('../../frontend/src/Link.tsx', './src/')
for (let file of getFiles(join(process.cwd(), './pages/docs'))) {
if (file.endsWith('.mdx')) {
alterFile(file)
} else {
rm(file)
}
}
cp('../../frontend/pages/docs/directory.tsx', './pages/docs')
}
run()