cryptonas/bin/gen_pyindex.py

96 lines
3.1 KiB
Python
Raw Normal View History

#!/usr/bin/env python
#
# index_gen.py
# Laszlo Szathmary, 2011 (jabba.laci@gmail.com)
#
# Project's home page:
# https://pythonadventures.wordpress.com/2011/03/26/static-html-filelist-generator/
#
# Version: 0.1
# Date: 2011-03-26 (yyyy-mm-dd)
#
# This free software is copyleft licensed under the same terms as Python, or,
# at your option, under version 2 of the GPL license.
#
# James Crofts July 2011:
# Now under the GNU General Public License, version 2
#
# Modified to exclude hidden directories such as .svn, .git, etc.
# Added support for multiple directories as arguments
# Other modifications for use in CryptoNAS development
import os
import os.path
import sys
import re
ofile = None
class SimpleHtmlFilelistGenerator:
# start from this directory
base_dirs = None
exclude_re = None
def __init__(self, dirs):
self.base_dirs = dirs
# Ignore "hidden" filenames, .pyc files, and help and documentation locations
self.exclude_re = re.compile("(\..*)|(.*\.pyc)|(.*~)|(intl)|(help)")
def print_html_header(self):
ofile.write("""<html>
<body>
""",)
def print_html_footer(self):
ofile.write('<code>' + '\n')
home = 'https://pythonadventures.wordpress.com/2011/03/26/static-html-filelist-generator/'
name = 'Static HTML Filelist Generator'
ofile.write('</code>' + '\n')
href = "<a href=\"%s\">%s</a>" % (home, name)
ofile.write("<!--<p><i><sub>This page was generated with Jabba Laci's %s.</sub></p>" % href)
ofile.write("""-->
</body>
</html>
""",)
def processDirectory ( self, args, dirname, filenames):
#For each name in filenames, if it matches exclude_re, delete it from the list in-place
ofile.write('<strong>' + dirname + '/' + '</strong>' + '<br>' + '\n')
for filename in sorted(filenames):
if self.exclude_re.match(filename):
del filenames[filenames.index(filename)]
continue
rel_path = os.path.join(dirname, filename)
if rel_path in [sys.argv[0], './index.html']:
continue # exclude this generator script and the generated index.html
if os.path.isfile(rel_path):
href = "<a href=\"%s\" target=main>%s</a>" % (rel_path, filename)
ofile.write('&nbsp;' * 4 + href + '<br>' + '\n')
def start(self):
self.print_html_header()
for base_dir in self.base_dirs:
ofile.write('<code>' + '\n')
os.path.walk(base_dir, self.processDirectory, None )
ofile.write('</code>' + '\n')
ofile.write('<hr>' + '\n')
self.print_html_footer()
# class SimpleHtmlFilelistGenerator
if __name__ == "__main__":
#base_dirs = ['']
# Hard-coded directory names
base_dirs = ['src/cryptobox/', 'plugins']
# Support giving multiple directories as arguments
# if len(sys.argv) > 1:
# base_dirs = sys.argv[1:]
ofile = open('doc/browse-py/pyindex.html', 'w')
gen = SimpleHtmlFilelistGenerator(base_dirs)
gen.start()
print "If there were no errors, doc/browse-py/pyindex.html should now exist"
ofile.close()