UNPKG

@interaktiv/dia-scripts

Version:

CLI toolbox with common scripts for most sort of projects at DIA

39 lines (29 loc) 1.54 kB
"use strict"; const path = require('path'); const spawn = require('cross-spawn'); const yargsParser = require('yargs-parser'); const { hasFile, isMarkdownFile, resolveBin } = require('../../utils'); let args = process.argv.slice(2); const here = p => path.join(__dirname, p); const hereRelative = p => here(p).replace(process.cwd(), '.'); const parsedArgs = yargsParser(args); const useBuiltinConfig = args.includes('--config') !== true && hasFile('.markdownlint.json') !== true && hasFile('.markdownlintrc') !== true && hasFile('.markdownlint.yaml') !== true && hasFile('.markdownlint.yml') !== true; const config = useBuiltinConfig ? ['--config', hereRelative('../../config/markdownlint.json')] : []; const useBuiltinIgnore = args.includes('--ignore') !== true; const ignore = useBuiltinIgnore ? ['--ignore', 'CHANGELOG.md', '--ignore', 'node_modules', '--ignore', '**/ISSUE_TEMPLATE.md', '--ignore', '**/PULL_REQUEST_TEMPLATE.md'] : []; const filesGiven = parsedArgs._.length > 0; const filesToApply = filesGiven ? [] : ['**/*.md']; if (filesGiven) { // We need to take all the flag-less arguments (the files that should be linted) // and filter out the ones that aren't md files. Otherwise json or css files // may be passed through, cause of pre-commit hook for example args = args.filter(a => parsedArgs._.includes(a) === false || isMarkdownFile(a)); } const result = spawn.sync(resolveBin('markdownlint'), [...config, ...ignore, ...args, ...filesToApply], { stdio: 'inherit' }); process.exit(result.status);