1
0
Fork 0
freesewing/sites/shared/prebuild/org.mjs
2023-05-26 13:35:03 +02:00

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()