since.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. 'use strict';
  2. const fs = require('fs');
  3. const path = require('path');
  4. const { spawnSync } = require('child_process');
  5. const glob = require('glob-gitignore');
  6. const packagesDir = path.join(__dirname, 'packages');
  7. const docsDir = path.join(__dirname, 'docs');
  8. const packages = (process.argv.length > 2 ? [process.argv[2]] : glob.sync('*', { cwd: packagesDir }))
  9. .map((name) => path.join(packagesDir, name, 'package.json'))
  10. .filter((packagePath) => fs.existsSync(packagePath))
  11. .map((packagePath) => JSON.parse(fs.readFileSync(packagePath)))
  12. .filter((x) => !x.private && x.name !== 'enzyme-example-mocha');
  13. packages.forEach((pkg) => {
  14. const tag = `${pkg.name === 'docs' ? 'enzyme' : pkg.name}@${pkg.version}`;
  15. const dir = path.join(packagesDir, pkg.name);
  16. const logArgs = [
  17. '--no-pager',
  18. 'log',
  19. '--oneline',
  20. `${tag}..HEAD`,
  21. dir,
  22. ':!**/.eslintrc',
  23. ].concat(pkg.name === 'enzyme' ? docsDir : []);
  24. const log = spawnSync('git', logArgs, { stdio: 'pipe' });
  25. if (log.stdout.length > 0 || log.stderr.length > 0) {
  26. console.log(tag);
  27. spawnSync('git', logArgs, { stdio: 'inherit' });
  28. console.log('\n');
  29. }
  30. });