main.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. "use strict";
  2. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  3. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  4. return new (P || (P = Promise))(function (resolve, reject) {
  5. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  6. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  7. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  8. step((generator = generator.apply(thisArg, _arguments || [])).next());
  9. });
  10. };
  11. var __importStar = (this && this.__importStar) || function (mod) {
  12. if (mod && mod.__esModule) return mod;
  13. var result = {};
  14. if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
  15. result["default"] = mod;
  16. return result;
  17. };
  18. Object.defineProperty(exports, "__esModule", { value: true });
  19. const core = __importStar(require("@actions/core"));
  20. const github = __importStar(require("@actions/github"));
  21. class ChangedFiles {
  22. constructor() {
  23. this.updated = [];
  24. this.created = [];
  25. this.deleted = [];
  26. }
  27. }
  28. function getChangedFiles(client, prNumber) {
  29. return __awaiter(this, void 0, void 0, function* () {
  30. const listFilesResponse = yield client.pulls.listFiles({
  31. owner: github.context.repo.owner,
  32. repo: github.context.repo.repo,
  33. pull_number: prNumber
  34. });
  35. console.log('Found changed files:');
  36. return listFilesResponse.data.reduce((acc, f) => {
  37. console.log(f);
  38. if (f.status === 'added') {
  39. acc.created.push(f.filename);
  40. }
  41. else if (f.status === 'removed') {
  42. acc.deleted.push(f.filename);
  43. }
  44. else if (f.status === 'modified') {
  45. acc.updated.push(f.filename);
  46. }
  47. else if (f.status === 'renamed') {
  48. acc.created.push(f.filename);
  49. acc.deleted.push(f['previous_filename']);
  50. }
  51. return acc;
  52. }, new ChangedFiles());
  53. });
  54. }
  55. function getPrNumber() {
  56. const pullRequest = github.context.payload.pull_request;
  57. return pullRequest ? pullRequest.number : null;
  58. }
  59. function run() {
  60. return __awaiter(this, void 0, void 0, function* () {
  61. try {
  62. const token = core.getInput('repo-token', { required: true });
  63. const client = new github.GitHub(token);
  64. const prNumber = getPrNumber();
  65. if (prNumber == null) {
  66. core.setFailed('Could not get pull request number from context, exiting');
  67. return;
  68. }
  69. core.debug(`Fetching changed files for pr #${prNumber}`);
  70. const changedFiles = yield getChangedFiles(client, prNumber);
  71. core.exportVariable('FILES_CREATED', changedFiles.created.join());
  72. core.exportVariable('FILES_UPDATED', changedFiles.updated.join());
  73. core.exportVariable('FILES_DELETED', changedFiles.deleted.join());
  74. }
  75. catch (error) {
  76. core.error(error);
  77. core.setFailed(error.message);
  78. }
  79. });
  80. }
  81. run();