|
|
- """Generate the changelog for develop.
-
- This requires the github module:
- pip3 install PyGithub
- """
- from datetime import datetime
- from pathlib import Path
-
- import yaml
- from milc import cli
- from github import Github
-
-
- def pr_body(text):
- """Returns the description from a PR body.
- """
- lines = []
- found = False
-
- for line in text.split('\n'):
- if line.startswith('## Description'):
- found = True
- continue
-
- if line.startswith('## Issues Fixed'):
- found = True
- lines.append('##### Issues Fixed or Closed by This PR')
- continue
-
- if not found:
- continue
-
- if line.startswith('##'):
- found = False
- continue
-
- lines.append(line.rstrip())
-
- new_text = '\n'.join(lines)
-
- return new_text.strip()
-
-
- @cli.subcommand('Get a list of PRs for develop.', hidden=True)
- def generate_develop_changelog(cli):
- # Setup the github api
- hub_config = yaml.safe_load(Path('~/.config/hub').expanduser().open())
- github_token = hub_config['github.com'][0]['oauth_token']
- github = Github(github_token)
-
- # Find our branchpoint
- master_revs = cli.run(['git', 'rev-list', '--first-parent', 'master'])
- develop_revs = cli.run(['git', 'rev-list', '--first-parent', 'develop'])
- master_commits = master_revs.stdout.split('\n')
- develop_commits = develop_revs.stdout.split('\n')
-
- first_commit = None
- for commit in develop_commits:
- if commit in master_commits:
- branchpoint = commit
- break
-
- if not branchpoint:
- cli.log.error('Could not find branchpoint!')
- exit(1)
-
- # Find the time of our branchpoint
- repo = github.get_repo('qmk/qmk_firmware')
- bp = repo.get_commit(branchpoint)
- last_modified = datetime.strptime(bp.last_modified, '%a, %d %b %Y %H:%M:%S %Z')
-
- # Get a list of PR's targetting develop since last_modified
- for pr in repo.get_pulls(state='closed', base='develop'):
- if pr.merged and pr.merged_at > last_modified:
- print(f'#### {pr.title} ([#{pr.number}](https://github.com/qmk/qmk_firmware/pull/{pr.number}))')
- print()
- print(pr_body(pr.body))
|