import os, shutil, sys

def publish(dirname, lxml_path, release):
    if not os.path.exists(dirname):
        os.mkdir(dirname)

    doc_dir = os.path.join(lxml_path, 'doc')
    script = os.path.join(doc_dir, 'rest2html.py')
    pubkey = os.path.join(doc_dir, 'pubkey.asc')
    stylesheet_url = 'style.css'

    shutil.copy(pubkey, dirname)

    for name in ['main.txt', 'intro.txt', 'api.txt', 'compatibility.txt',
                 'extensions.txt', 'element_classes.txt', 'sax.txt',
                 'build.txt', 'FAQ.txt', 'performance.txt', 'resolvers.txt',
                 'capi.txt', 'objectify.txt']:
        path = os.path.join(doc_dir, name)
        outname = os.path.splitext(name)[0] + '.html'
        outpath = os.path.join(dirname, outname)

        rest2html(script, path, outpath, stylesheet_url)
    # also convert INSTALL.txt and CHANGES.txt
    rest2html(script,
              os.path.join(lxml_path, 'INSTALL.txt'),
              os.path.join(dirname, 'installation.html'),
              stylesheet_url)
    rest2html(script,
              os.path.join(lxml_path, 'CHANGES.txt'),
              os.path.join(dirname, 'changes-%s.html' % release),
              stylesheet_url)
    os.rename(os.path.join(dirname, 'main.html'),
              os.path.join(dirname, 'index.html'))

def rest2html(script, source_path, dest_path, stylesheet_url):
    command = ('%s %s --stylesheet=%s --link-stylesheet %s > %s' %
               (sys.executable, script, stylesheet_url, source_path, dest_path))
    os.system(command)

if __name__ == '__main__':
    publish(sys.argv[1], sys.argv[2], sys.argv[3])


syntax highlighted by Code2HTML, v. 0.9.1