diff --git a/scripts/addpatterndocs.js b/scripts/addpatterndocs.js
new file mode 100644
index 00000000000..e92f1d064f3
--- /dev/null
+++ b/scripts/addpatterndocs.js
@@ -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 => `
+---
+
+
+
+`
+const fixme = `
+
+
+This documentation page is yet to be written.
+
+Sorry for the inconvenience.
+
+
+`
+
+const component = (comp, 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()
+
diff --git a/scripts/optiondocs.js b/scripts/optiondocsimages.js
similarity index 100%
rename from scripts/optiondocs.js
rename to scripts/optiondocsimages.js