| #!/usr/bin/env {{ python }} |
| |
| import os |
| import subprocess |
| import sys |
| |
| LOCATION = '{{ location }}' |
| SPACING = 8 |
| SCRIPTS = os.path.dirname(os.path.dirname(LOCATION)) |
| |
| |
| def message(source=None, sha=None): |
| dirname = None |
| commit_message = [] |
| |
| try: |
| for line in subprocess.check_output( |
| [os.path.join(SCRIPTS, 'prepare-ChangeLog'), '--no-write', '--only-files', '--delimiters'], |
| **(dict(encoding='utf-8') if sys.version_info > (3, 0) else dict()) |
| ).splitlines(): |
| if line == '~': |
| dirname = None |
| continue |
| if line.startswith(' ' * SPACING): |
| if dirname: |
| line = line.replace('* ', '* {}/'.format(dirname)) |
| commit_message.append(line[SPACING:]) |
| continue |
| if line.endswith(':'): |
| dirname = line.split(':')[0] |
| continue |
| |
| return '''Need a short description (OOPS!). |
| Need the bug URL (OOPS!). |
| |
| Reviewed by NOBODY (OOPS!). |
| |
| {} |
| '''.format('\n'.join(commit_message)) |
| |
| except subprocess.CalledProcessError: |
| return '' |
| |
| def main(file_name=None, source=None, sha=None): |
| if source and source != 'commit': |
| return 0 |
| |
| with open(file_name, 'w') as commit_message_file: |
| if sha: |
| commit_message_file.write(subprocess.check_output( |
| ['{{ git }}', 'log', 'HEAD', '-1', '--pretty=format:%B'], |
| **(dict(encoding='utf-8') if sys.version_info > (3, 5) else dict()) |
| )) |
| else: |
| commit_message_file.write(message(source=source, sha=sha)) |
| |
| commit_message_file.write(''' |
| # Please populate the above commit message. Lines starting |
| # with '#' will be ignored |
| |
| ''') |
| if sha: |
| for line in message(source=source, sha=sha).splitlines(): |
| commit_message_file.write('# {}\n'.format(line)) |
| commit_message_file.write('\n') |
| for line in subprocess.check_output( |
| ['{{ git }}', 'status'], |
| **(dict(encoding='utf-8') if sys.version_info > (3, 5) else dict()) |
| ).splitlines(): |
| commit_message_file.write('# {}\n'.format(line)) |
| |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main(*sys.argv[1:])) |