1
0
Fork 0

chore: Updated scripts

This commit is contained in:
joostdecock 2021-10-16 16:00:47 +02:00
parent 3496e2ba0e
commit aef3754242
2 changed files with 129 additions and 0 deletions

129
scripts/addpatterndocs.js Normal file
View file

@ -0,0 +1,129 @@
/*
* This will create (SVG) images for all options of all patterns
* To do that, it will load the configuration from:
*
* config/pattern-options.js
*
* Based on that, it will generate SVG images for each option and store them
* in the relevant folder:
*
* markdown/org/docs/patterns/[pattern]/[option]/[pattern]_[option]_sample.svg
*
*/
const fs = require('fs')
const path = require('path')
const core = require('../packages/core/dist')
const theme = require('../packages/plugin-theme/dist')
const pi = require('../packages/pattern-info/dist')
const models = require('../packages/models/dist')
const wb32 = models.withBreasts.size32
const i18n = require('../packages/i18n/dist')
const capitalize = require('../packages/utils/capitalize')
const missing = []
const file = 'en.md'
const subpages = [
'cutting',
'fabric',
'instructions',
'options',
'measurements',
'needs'
]
const patternDocsPage = pattern => `
---
<PatternDocs pattern='${pattern}' />
`
const fixme = `
<Fixme>
This documentation page is yet to be written.
Sorry for the inconvenience.
</Fixme>
`
const component = (comp, pattern) => `---
---
<Pattern${capitalize(comp)} pattern='${pattern}' />
`
const patternDocsSubPage = (pattern, sub) => {
switch (sub) {
case 'measurements':
case 'options':
return component(sub, pattern)
break;
default:
return fixme
}
}
const optionDocsPage = (pattern, option) => "---\n\n" +
i18n.strings.en[`options.${pattern}.${option}.description`] + "\n\n" +
`patterns.${pattern}.options.${option}.description`
const present = folder => {
try {
const md = fs.readFileSync(path.join(folder, file))
return true
}
catch (err) {
return false
}
}
const checkOptionDocs = () => {
const steps = ['markdown', 'org', 'docs', 'patterns']
for (const pattern of pi.list) {
const Pattern = require(`../packages/${pattern}/dist`)
// Index page,
const folder = path.join(...steps, pattern)
if (!present(folder)) {
fs.mkdirSync(folder, { recursive: true })
fs.writeFileSync(
path.join(folder, file),
patternDocsPage(pattern),
)
}
// Sub pages
for (const sub of subpages) {
const folder = path.join(...steps, pattern, sub)
if (!present(folder)) {
fs.mkdirSync(folder, { recursive: true })
fs.writeFileSync(
path.join(folder, file),
patternDocsSubPage(pattern, sub),
)
}
}
// Options
for (const option of pi.options[pattern]) {
const folder = path.join('markdown', 'org', 'docs', 'patterns', pattern, 'options', option.toLowerCase())
if (!present(folder)) {
missing.push(path.join(folder, file))
fs.mkdirSync(folder, { recursive: true })
fs.writeFileSync(
path.join(folder, file),
optionDocsPage(pattern, option),
)
}
}
}
if (missing.length < 1) console.log("\n 🎉 Everything looks fine 😀\n")
else {
console.log("\n", 'Added documenation pages for the following options:', "\n\n")
for (const line of missing) console.log(line)
}
}
checkOptionDocs()