UNPKG

redhot

Version:

TypeScript Monorepo Management

45 lines (35 loc) 1.45 kB
const { join } = require('path') const { readdirSync } = require('fs') const { exec, isDirectory, logSeparator, isInitialized } = require('../util') exports.lint = function lint (program, config, workingDir) { program .command('lint') .option('-o, --only <packageName>', 'Run linting in a single package') .description('Runs tslint in all managed packages') .action(options => lintLikeABoss(config, workingDir, options)) } function lintLikeABoss (config, workingDir, options) { isInitialized(config) const packages = options.only ? config.packages.filter(p => p === options.only) : config.packages if (packages.length === 0) { if (options.only) { return console.log('Cannot find package ' + options.only) } return console.log('Cannot find any packages to test :(') } packages.forEach(function (packageName) { const packageDir = join(workingDir, packageName) const srcDir = join(packageDir, 'src/') const cmd = `tslint -c tslint.json ${packageName}/src/*.ts` const lintCmd = containsDirectories(srcDir) ? `${cmd} ${packageName}/src/**/*ts` : cmd exec(lintCmd, { silent: true, cwd: workingDir }, () => logSeparator(packageName)) .then(() => console.log(' Running TSLint was successful!\n')) .catch(([out]) => console.log(' ' + out) || logSeparator()) }) } function containsDirectories (path) { return readdirSync(path).some(isDirectory) }