summaryrefslogtreecommitdiffstats
path: root/bin/vendor-licenses
diff options
context:
space:
mode:
Diffstat (limited to 'bin/vendor-licenses')
-rwxr-xr-xbin/vendor-licenses63
1 files changed, 63 insertions, 0 deletions
diff --git a/bin/vendor-licenses b/bin/vendor-licenses
new file mode 100755
index 0000000..83c0c4e
--- /dev/null
+++ b/bin/vendor-licenses
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""Usage:
+
+ ./bin/vendor-licenses > identify/vendor/licenses.py
+"""
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
+import argparse
+import os.path
+import subprocess
+import tempfile
+
+
+def main():
+ 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('# -*- coding: utf-8 -*-')
+ print('from __future__ import absolute_import')
+ print('from __future__ import unicode_literals')
+ print('LICENSES = (')
+ for spdx, text in sorted(licenses):
+ print(' (')
+ print(' {!r},'.format(spdx))
+ print(" '''\\")
+ print(text.replace('\t', ' ').replace(' \n', '').strip())
+ print("''',")
+ print(' ),')
+ print(')')
+
+
+if __name__ == '__main__':
+ exit(main())