summaryrefslogtreecommitdiff
path: root/extensions/SyntaxHighlight_GeSHi/pygments/create_pygmentize_bundle
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/SyntaxHighlight_GeSHi/pygments/create_pygmentize_bundle')
-rw-r--r--extensions/SyntaxHighlight_GeSHi/pygments/create_pygmentize_bundle68
1 files changed, 68 insertions, 0 deletions
diff --git a/extensions/SyntaxHighlight_GeSHi/pygments/create_pygmentize_bundle b/extensions/SyntaxHighlight_GeSHi/pygments/create_pygmentize_bundle
new file mode 100644
index 00000000..9f638b9c
--- /dev/null
+++ b/extensions/SyntaxHighlight_GeSHi/pygments/create_pygmentize_bundle
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+ Create a standalone, executable 'pygmentize' bundle.
+ Author: Ori Livneh
+
+"""
+import sys
+reload(sys)
+sys.setdefaultencoding('utf-8')
+
+import hashlib
+import io
+import os
+import stat
+import textwrap
+import urllib2
+import xmlrpclib
+import zipfile
+
+
+PYGMENTIZE_LAUNCHER = textwrap.dedent(b'''\
+ #!/usr/bin/env python
+
+ import sys
+ import pygments.cmdline
+ try:
+ sys.exit(pygments.cmdline.main(sys.argv))
+ except KeyboardInterrupt:
+ sys.exit(1)
+''')
+
+
+print('Querying PyPI for the latest Pygments release...')
+pypi = xmlrpclib.ServerProxy('https://pypi.python.org/pypi')
+latest_version = pypi.package_releases('Pygments')[0]
+for release in pypi.release_urls('Pygments', latest_version):
+ if (release['packagetype'] == 'bdist_wheel' and
+ release['python_version'].startswith('2')):
+ url = release['url']
+ md5_digest = release['md5_digest']
+ break
+ else:
+ raise RuntimeError('No suitable package found.')
+
+print('Retreiving version %s (%s)...' % (latest_version, url))
+req = urllib2.urlopen(url)
+buf = io.BytesIO(req.read())
+
+print('Verifying...')
+if hashlib.md5(buf.getvalue()).hexdigest() != md5_digest:
+ raise RuntimeError('MD5 checksum mismatch.')
+
+print('Creating executable ZIP bundle...')
+with zipfile.ZipFile(buf, 'a') as zf:
+ zf.writestr('__main__.py', PYGMENTIZE_LAUNCHER)
+
+data = buf.getvalue()
+script_dir = os.path.dirname(os.path.abspath(__file__))
+file_path = os.path.join(script_dir, 'pygmentize')
+with open(file_path, 'w') as f:
+ f.write('#!/usr/bin/env python\n')
+ f.write(data)
+
+file_st = os.stat(file_path)
+os.chmod(file_path, file_st.st_mode | stat.S_IEXEC)
+
+print('Done. Wrote %s bytes to %s' % (len(data), file_path))