1
0
Fork 0
freesewing/sites/shared/prebuild/org.mjs
Joost De Cock b91d871a3b chore: Change mustache delimiter to keep tempaltes as .mjs
The problem with auto-generated pages is that prettier will change
the formatting ever so slightly in the commit hook.
Which means that next time they are generated, git will see a bunch
of meaningless changes.

So, in changing the mustache delimter to $$ (valid JS) we can keep the
template files as .mjs and let prettier format them too, which I hope
will mean that we can sidestep this constant churn.
2023-10-09 12:02:26 +02:00

48 lines
1.5 KiB
JavaScript

import path from 'path'
import fs from 'fs'
import { collection } from '../../org/hooks/use-design.mjs'
import { capitalize } from '../utils.mjs'
import mustache from 'mustache'
const changeDelimiter = `{{!
// Change the Mustache delimiter from double curly braces to double dollar signs.
// Dollar signs are allowed in EcmaScript identifier names,
// which is helpful when running unrendered Mustache templates through eslint.
//}}{{=$$ $$=}}
`
const loadPageTemplate = async (name) =>
await fs.promises.readFile(path.resolve(`../org/page-templates/${name}`), 'utf-8')
const generateNewPatternPages = async () => {
const page = await loadPageTemplate('new-pattern.mjs')
for (const design of collection) {
await fs.promises.writeFile(
path.resolve(`../org/pages/new/${design}.mjs`),
mustache.render(changeDelimiter + page, {
design,
Design: capitalize(design),
})
)
}
}
const generateEditPatternPages = async () => {
const page = await loadPageTemplate('edit-pattern.mjs')
for (const design of collection) {
const dir = `../org/pages/account/patterns/${design}/[id]`
await fs.promises.mkdir(path.resolve(dir), { recursive: true })
await fs.promises.writeFile(
path.resolve(`${dir}/edit.mjs`),
mustache.render(changeDelimiter + page, {
design,
Design: capitalize(design),
})
)
}
}
export const prebuildOrg = async () => {
await generateNewPatternPages()
await generateEditPatternPages()
}