cherrypick.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { Task, TaskRunner } from './task';
  2. import axios from 'axios';
  3. interface CherryPickOptions {}
  4. const cherryPickRunner: TaskRunner<CherryPickOptions> = async () => {
  5. let client = axios.create({
  6. baseURL: 'https://api.github.com/repos/grafana/grafana',
  7. timeout: 10000,
  8. });
  9. const res = await client.get('/issues', {
  10. params: {
  11. state: 'closed',
  12. labels: 'cherry-pick needed',
  13. },
  14. });
  15. // sort by closed date
  16. res.data.sort(function(a, b) {
  17. return new Date(b.closed_at).getTime() - new Date(a.closed_at).getTime();
  18. });
  19. for (const item of res.data) {
  20. if (!item.milestone) {
  21. console.log(item.number + ' missing milestone!');
  22. continue;
  23. }
  24. console.log(item.number + ' closed_at ' + item.closed_at + ' ' + item.html_url);
  25. const issueDetails = await client.get(item.pull_request.url);
  26. const commits = await client.get(issueDetails.data.commits_url);
  27. for (const commit of commits.data) {
  28. console.log(commit.commit.message + ' sha: ' + commit.sha);
  29. }
  30. }
  31. };
  32. export const cherryPickTask = new Task<CherryPickOptions>();
  33. cherryPickTask.setName('Cherry pick task');
  34. cherryPickTask.setRunner(cherryPickRunner);