doc-only-change.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. const args = require('minimist')(process.argv.slice(2));
  2. const { Octokit } = require('@octokit/rest');
  3. const octokit = new Octokit();
  4. async function checkIfDocOnlyChange () {
  5. let { prNumber, prURL } = args;
  6. if (prNumber || prURL) {
  7. try {
  8. // extract the PR number from the PR URL.
  9. if (!prNumber || isNaN(prNumber)) {
  10. if (args.prURL) {
  11. prNumber = prURL.split('/').pop();
  12. }
  13. }
  14. const filesChanged = await octokit.paginate(octokit.pulls.listFiles.endpoint.merge({
  15. owner: 'electron',
  16. repo: 'electron',
  17. pull_number: prNumber,
  18. per_page: 100
  19. }));
  20. console.log('Changed Files: ', filesChanged.map(fileInfo => fileInfo.filename));
  21. const nonDocChange = filesChanged.length === 0 || filesChanged.find(({ filename }) => {
  22. const fileDirs = filename.split('/');
  23. if (fileDirs[0] !== 'docs') return true;
  24. });
  25. process.exit(nonDocChange ? 1 : 0);
  26. } catch (error) {
  27. console.error('Error getting list of files changed: ', error);
  28. process.exit(-1);
  29. }
  30. } else {
  31. console.error(`Check if only the docs were changed for a commit.
  32. Usage: doc-only-change.js --prNumber=PR_NUMBER || --prURL=PR_URL`);
  33. process.exit(-1);
  34. }
  35. }
  36. checkIfDocOnlyChange();