doc-only-change.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. return false;
  25. });
  26. process.exit(nonDocChange ? 1 : 0);
  27. } catch (error) {
  28. console.error('Error getting list of files changed: ', error);
  29. process.exit(-1);
  30. }
  31. } else {
  32. console.error(`Check if only the docs were changed for a commit.
  33. Usage: doc-only-change.js --prNumber=PR_NUMBER || --prURL=PR_URL`);
  34. process.exit(-1);
  35. }
  36. }
  37. checkIfDocOnlyChange();