eslint-dir.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const path = require('path')
  2. const { packageStructs, testStructs } = require('./lib/package-index')
  3. const exec = require('./lib/shell')
  4. exports.eslintDir = eslintDir
  5. exports.eslintAll = eslintAll
  6. function eslintDir(dir) {
  7. let cmd = [
  8. 'eslint',
  9. '--config', '.eslintrc.yml',
  10. '--ext', '.ts,.tsx,.js,.jsx',
  11. '--parser-options', JSON.stringify({
  12. project: path.join(dir, 'tsconfig.json')
  13. }),
  14. // '--fix',
  15. path.join(dir, 'src')
  16. ]
  17. console.log(cmd.join(' '))
  18. let { success } = exec.sync(cmd, { live: true })
  19. return success
  20. }
  21. function eslintDirs(dirs) {
  22. let anyErrors = false
  23. for (let dir of dirs) {
  24. if (!eslintDir(dir)) {
  25. anyErrors = true
  26. }
  27. }
  28. return !anyErrors
  29. }
  30. function eslintAll() {
  31. return eslintDirs(getAllDirs())
  32. }
  33. function getAllDirs() {
  34. return packageStructs.concat(testStructs).map((struct) => struct.dir)
  35. }
  36. if (require.main === module) {
  37. let dirs = process.argv.splice(2)
  38. let success
  39. if (!dirs.length || dirs[0] === 'all') {
  40. success = eslintAll()
  41. } else {
  42. success = eslintDirs(dirs)
  43. }
  44. if (!success) {
  45. process.exit(1)
  46. }
  47. }