import fs from 'fs'; import { fileURLToPath } from 'url'; import path from 'path'; import plugins from 'plugins'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const pluginNames = Object.keys(plugins); const sortedPluginNames = pluginNames.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0 ); const pluginInfo = []; for (const pluginName of sortedPluginNames) { const plugin = plugins[pluginName]; const options = []; for (const optionName of Object.keys(plugin.optionsSpec)) { const option = plugin.optionsSpec[optionName]; let optionInfo = `

${optionName}${option.required ? ' (Required)' : ''}

Description

${option.description}

Default
${
         typeof option.default === 'object'
           ? JSON.stringify(option.default, null, 2)
           : option.default
       }
`; if (option.example) optionInfo += `
Example
${
         typeof option.example === 'object'
           ? JSON.stringify(option.example, null, 2)
           : option.example
       }
`; options.push(optionInfo); } pluginInfo.push( `
${plugin.name}

${plugin.name}

${plugin.description}

Options

${options.join('\n')}
` ); } const pluginInfoText = pluginInfo.join('\n\n'); fs.writeFileSync( path.resolve(__dirname, '../README.md'), fs .readFileSync(path.resolve(__dirname, './templates/readme-template.md'), 'utf8') .replace(/\/\/PLUGIN-INFO\/\//, pluginInfoText) );