1
0
Fork 0
freesewing/sites/shared/prebuild/org.mjs

68 lines
2.1 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.
*
* If you want to make changes, update the relevant pageTemplate in:
*
* sites/shared/pages-templates
*
*/`
const withDocs = `import { DynamicOrgDocs as DynamicDocs } from 'shared/components/dynamic-docs/org.mjs'`
const withoutDocs = `const DynamicDocs = false`
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'),
},
}
// Only add docs to org pages
const docs = site === 'org' ? withDocs : withoutDocs
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, { docs, design, Design: capitalize(design) })
)
)
}
}
}
prebuildOrg()