#!/usr/bin/env python3 """Usage: ./bin/vendor-licenses > identify/vendor/licenses.py """ from __future__ import annotations import argparse import os.path import subprocess import tempfile def main() -> int: parser = argparse.ArgumentParser() parser.add_argument('--revision', default='HEAD') args = parser.parse_args() licenses = [] with tempfile.TemporaryDirectory() as tmpdir: subprocess.check_call(( 'git', 'clone', '--no-checkout', '--quiet', 'https://github.com/github/choosealicense.com', tmpdir, )) subprocess.check_call(( 'git', '-C', tmpdir, 'checkout', args.revision, '--', '_licenses', )) for filename in os.listdir(os.path.join(tmpdir, '_licenses')): filename = os.path.join(tmpdir, '_licenses', filename) with open(filename) as f: contents = f.read() _, data, license_text = contents.split('---\n', 2) spdx, = ( line[len('spdx-id:'):].strip() for line in data.splitlines() if line.startswith('spdx-id:') ) licenses.append((spdx, license_text)) print('LICENSES = (') for spdx, text in sorted(licenses): print(' (') print(f' {spdx!r},') print(" '''\\") print(text.replace('\t', ' ').replace(' \n', '').strip()) print("''',") print(' ),') print(')') return 0 if __name__ == '__main__': raise SystemExit(main())