update-markdown-jsdoc
Version:
Updates a markdown document section with jsdoc documentation.
61 lines (51 loc) • 1.77 kB
JavaScript
const execa = require('execa')
const fs = require('fs')
const path = require('path')
const program = require('commander')
const readPkg = require('read-pkg-up')
const getReadmeFile = require('./get-readme-file')
const { version } = require('../package')
const main = module.exports = async (argv) => {
program
.version(version)
.usage('update-markdown-jsdoc [options]')
.option('-r, --readme <filename>', 'markdown file to update (defaults to local readme)')
.option('-f, --file <filename>', 'main source entrypoint (defaults to local package "main")')
.option('-s, --section <string>', 'name of markdown section to update', (s) => s, 'api')
.option('-S, --shallow', 'enable shallow mode')
.option('-T, --no-markdown-toc', 'disable markdown table of contents')
.parse(argv)
const pkg = await readPkg()
if (!pkg) {
console.error('unable to find valid package.json')
return program.outputHelp()
}
const root = path.dirname(pkg.path)
const main = program.file || pkg.package.main
const file = path.join(root, main)
if (!file || !fs.existsSync(file)) {
console.error('unable to find valid main entrypoint in package.json')
return program.outputHelp()
}
const readme = program.readme || await getReadmeFile(root)
if (!readme || !fs.existsSync(readme)) {
console.error('unable to find valid readme markdown file')
return program.outputHelp()
}
const args = [
'readme',
'--readme-file', readme,
'-q',
'-g',
'-s', program.section,
(program.shallow && '--shallow'),
(!program.markdownToc && '--no-markdown-toc'),
file
].filter(Boolean)
await execa('documentation', args)
}
main(process.argv)
.catch((err) => {
console.error(err)
})