changelog.ts 1018 B

12345678910111213141516171819202122232425262728293031323334
  1. import { Task, TaskRunner } from './task';
  2. import axios from 'axios';
  3. import issueRegex from 'issue-regex';
  4. const githubGrafanaUrl = 'https://github.com/grafana/grafana';
  5. interface ChangelogOptions {}
  6. const changelogTaskRunner: TaskRunner<ChangelogOptions> = async () => {
  7. let client = axios.create({
  8. baseURL: 'https://api.github.com/repos/grafana/grafana',
  9. timeout: 10000,
  10. });
  11. const res = await client.get('/issues?state=closed&labels=' + encodeURIComponent('add to changelog'));
  12. let markdown = '';
  13. for (const item of res.data) {
  14. markdown += '* ' + item.title;
  15. markdown += ` [#${item.number}](${githubGrafanaUrl}/issues/${item.number})`;
  16. for (const issue of item.body.match(issueRegex())) {
  17. markdown += ` [#${issue}](${githubGrafanaUrl}/issues/${issue})`;
  18. }
  19. markdown += '\n';
  20. }
  21. console.log(markdown);
  22. };
  23. export const changelogTask = new Task<ChangelogOptions>();
  24. changelogTask.setName('Changelog generator task');
  25. changelogTask.setRunner(changelogTaskRunner);