[breaking]: FreeSewing v4 (#7297)
Refer to the CHANGELOG for all info. --------- Co-authored-by: Wouter van Wageningen <wouter.vdub@yahoo.com> Co-authored-by: Josh Munic <jpmunic@gmail.com> Co-authored-by: Jonathan Haas <haasjona@gmail.com>
This commit is contained in:
parent
d22fbe78d9
commit
51dc1d9732
6626 changed files with 142053 additions and 150606 deletions
100
sites/org/scripts/prebuild-step1.mjs
Normal file
100
sites/org/scripts/prebuild-step1.mjs
Normal file
|
@ -0,0 +1,100 @@
|
|||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import yaml from 'yaml'
|
||||
import designInfo from '../../../config/software/designs.json' with { type: 'json' }
|
||||
import { designs as designTranslations } from '../../../i18n/designs.mjs'
|
||||
import { measurements as measurementsTranslations } from '@freesewing/i18n'
|
||||
|
||||
/*
|
||||
* Load translations as there's no YAML loader
|
||||
* We are loading this sync because NodeJS 20 does not support
|
||||
* top-level await out of the box
|
||||
*/
|
||||
const optionGroupTranslations = loadYaml('../../i18n/optiongroups.yaml')
|
||||
|
||||
/*
|
||||
* Write these translations as JS to disk
|
||||
*/
|
||||
function writeTranslations() {
|
||||
const content = [
|
||||
header,
|
||||
`export const measurements = ${JSON.stringify(measurementsTranslations)}`,
|
||||
'',
|
||||
`export const optiongroups = ${JSON.stringify(optionGroupTranslations)}`,
|
||||
'',
|
||||
`export const designs = ${JSON.stringify(designTranslations)}`,
|
||||
'',
|
||||
]
|
||||
fs.writeFileSync(`./src/lib/i18n.mjs`, content.join('\n'))
|
||||
}
|
||||
|
||||
/*
|
||||
* Write design info
|
||||
*/
|
||||
function writeDesignInfo() {
|
||||
const content = [header, `export const designInfo = ${JSON.stringify(designInfo)}`, '']
|
||||
fs.promises.writeFile(`./src/lib/designinfo.mjs`, content.join('\n'))
|
||||
}
|
||||
|
||||
/*
|
||||
* Simple and stupid YAML loader
|
||||
*
|
||||
* @arg {String} file - (relative) path to the file to load
|
||||
* @return {object} yaml - The YAML data as a JS object
|
||||
*/
|
||||
function loadYaml(file) {
|
||||
const raw = fs.readFileSync(path.resolve(file), 'utf8')
|
||||
let content
|
||||
try {
|
||||
content = yaml.parse(raw)
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
process.exit(1)
|
||||
}
|
||||
return content
|
||||
}
|
||||
|
||||
/*
|
||||
* Header to include in auto-generated files
|
||||
*/
|
||||
export const header = `/*
|
||||
* This file is auto-generated.
|
||||
* Any changes you make will be overwritten by the prebuild step.
|
||||
*/`
|
||||
|
||||
/*
|
||||
* Generate design imports file
|
||||
*/
|
||||
function generateDesignsLib() {
|
||||
const content = [header, `import { designInfo } from './designinfo.mjs'`]
|
||||
// Add designs
|
||||
for (const [name, design] of Object.entries(designInfo)) {
|
||||
if (design.org) content.push(`import * as ${name} from '@freesewing/${name}'`)
|
||||
}
|
||||
|
||||
// Add the rest of the file
|
||||
content.push(
|
||||
'',
|
||||
`const designs = {`,
|
||||
...Object.keys(designInfo)
|
||||
.filter((d) => designInfo[d].org)
|
||||
.map((d) => ` ${d},`),
|
||||
`}`,
|
||||
'',
|
||||
`const designList = Object.keys(designs)`,
|
||||
'',
|
||||
`export { designInfo, designList, designs }`,
|
||||
''
|
||||
)
|
||||
|
||||
// Write to disk
|
||||
fs.promises.writeFile(`./src/lib/designs.mjs`, content.join('\n'))
|
||||
}
|
||||
|
||||
function prebuild() {
|
||||
generateDesignsLib()
|
||||
writeTranslations()
|
||||
writeDesignInfo()
|
||||
}
|
||||
|
||||
prebuild()
|
Loading…
Add table
Add a link
Reference in a new issue