#!/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(""" """,) def print_html_footer(self): ofile.write('' + '\n') home = 'https://pythonadventures.wordpress.com/2011/03/26/static-html-filelist-generator/' name = 'Static HTML Filelist Generator' ofile.write('' + '\n') href = "%s" % (home, name) ofile.write(" """,) 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('' + dirname + '/' + '' + '
' + '\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 = "%s" % (rel_path, filename) ofile.write(' ' * 4 + href + '
' + '\n') def start(self): self.print_html_header() for base_dir in self.base_dirs: ofile.write('' + '\n') os.path.walk(base_dir, self.processDirectory, None ) ofile.write('' + '\n') ofile.write('
' + '\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()