60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
import fs_ from 'fs'
|
|
import path from 'path'
|
|
import designs from '../../../config/software/designs.json' assert { type: 'json' }
|
|
import { capitalize } from '../../../sites/shared/utils.mjs'
|
|
import mustache from 'mustache'
|
|
|
|
const fs = fs_.promises
|
|
|
|
export const header = `/*
|
|
*
|
|
* This page was auto-generated by the prebuild script
|
|
* Any changes you make to it will be lost on the next (pre)build.
|
|
*/
|
|
`
|
|
|
|
const loadTemplate = async (name) =>
|
|
await fs.readFile(path.resolve('..', 'shared', 'page-templates', name), 'utf-8')
|
|
|
|
/*
|
|
* Main method that does what needs doing
|
|
*/
|
|
|
|
export const prebuildOrg = async (site = 'org') => {
|
|
const promises = []
|
|
const folder = ['..', site, 'pages', 'new', 'pattern']
|
|
const pages = {
|
|
index: {
|
|
page: await loadTemplate('new-pattern.mjs.mustache'),
|
|
folder: (design) => path.resolve(...folder, design),
|
|
file: (design) => path.resolve(...folder, design, 'index.mjs'),
|
|
},
|
|
set: {
|
|
page: await loadTemplate('new-pattern-from-set.mjs.mustache'),
|
|
folder: (design) => path.resolve(...folder, design, 'set'),
|
|
file: (design) => path.resolve(...folder, design, 'set', '[id].mjs'),
|
|
},
|
|
cset: {
|
|
page: await loadTemplate('new-pattern-from-cset.mjs.mustache'),
|
|
folder: (design) => path.resolve(...folder, design, 'cset'),
|
|
file: (design) => path.resolve(...folder, design, 'cset', '[id].mjs'),
|
|
},
|
|
}
|
|
|
|
for (const design in designs) {
|
|
// Generate new/pattern/design pages
|
|
for (const page in pages) {
|
|
await fs.mkdir(pages[page].folder(design), { recursive: true })
|
|
promises.push(
|
|
fs.writeFile(
|
|
pages[page].file(design),
|
|
mustache.render(pages[page].page, { design, Design: capitalize(design) })
|
|
)
|
|
)
|
|
}
|
|
}
|
|
|
|
return await Promise.all(promises)
|
|
}
|
|
|
|
prebuildOrg()
|