const { definitions } = require('../lib/utils/config/index.js') const { writeFileSync, readFileSync } = require('fs') const { resolve } = require('path') const configDoc = process.argv[2] const commandFile = process.argv[3] // Note: commands without params skip this whole process. const { params } = require(resolve(commandFile)) const describeAll = () => params.map(name => definitions[name].describe()).join('\n\n') const addBetweenTags = (doc, startTag, endTag, body) => { const startSplit = doc.split(startTag) if (startSplit.length !== 2) throw new Error('Did not find exactly one start tag') const endSplit = startSplit[1].split(endTag) if (endSplit.length !== 2) throw new Error('Did not find exactly one end tag') return [ startSplit[0], startTag, '\n\n', body, '\n\n', endTag, endSplit[1], ].join('') } const addDescriptions = doc => { const startTag = '' const endTag = '' return addBetweenTags(doc, startTag, endTag, describeAll()) } // always write SOMETHING so that Make sees the file is up to date. const doc = readFileSync(configDoc, 'utf8') const hasTag = doc.includes('') const newDoc = params && hasTag ? addDescriptions(doc) : doc if (params && !hasTag) console.error('WARNING: did not find config description section', configDoc) writeFileSync(configDoc, newDoc)