[Python-checkins] r42783 - peps/trunk/pep2pyramid.py
sean.reifschneider
python-checkins at python.org
Thu Mar 2 18:40:58 CET 2006
Author: sean.reifschneider
Date: Thu Mar 2 18:40:56 2006
New Revision: 42783
Modified:
peps/trunk/pep2pyramid.py
Log:
Nearly working.
Modified: peps/trunk/pep2pyramid.py
==============================================================================
--- peps/trunk/pep2pyramid.py (original)
+++ peps/trunk/pep2pyramid.py Thu Mar 2 18:40:56 2006
@@ -34,6 +34,8 @@
The optional arguments ``peps`` are either pep numbers or .txt files.
"""
+destDirBase = '/home/jafo/cvs/beta.python.org/build/data/doc/peps/'
+
import sys
import os
import re
@@ -43,6 +45,7 @@
import errno
import random
import time
+import shutil
REQUIRES = {'python': '2.2',
'docutils': '0.2.7'}
@@ -143,36 +146,6 @@
def fixfile(inpath, input_lines, outfile):
- m = re.search(r'pep-(\d+)\.', inpath)
- if not m:
- print "Ugh, can't find PEP number in name"
- sys.exit(1)
- pepIn = m.group(1)
- destDir = '/home/jafo/cvs/beta.python.org/build/data/doc/peps/'
- destDir = os.path.join(destDir, 'pep-%s' % pepIn)
-
- if not os.path.exists(destDir):
- os.mkdir(destDir)
-
- fp = open(os.path.join(destDir, 'content.html'), 'w')
- fp.write('<n:invisible n:data="content" n:render="mapping">\n')
- fp.write('<div id="breadcrumb" n:data="breadcrumb" '
- 'n:render="breadcrumb" />\n')
- fp.write('<n:slot name="text"></n:slot>\n')
- fp.write('</n:invisible>\n')
- fp.close()
-
- fp = open(os.path.join(destDir, 'content.yml'), 'w')
- fp.write('--- !fragment\n')
- fp.write('# Type of template to use\n')
- fp.write('template: content.html\n')
- fp.write('\n')
- fp.write('# The data to pass to the template\n')
- fp.write('local:\n')
- fp.write(' content:\n')
- fp.write(' breadcrumb: !breadcrumb nav.yml nav\n')
- fp.write(' text: !htmlfile body.html\n')
-
from email.Utils import parseaddr
basename = os.path.basename(inpath)
infile = iter(input_lines)
@@ -204,17 +177,6 @@
elif key.lower() == "pep":
pep = value
- if not pepIn:
- raise NotImplementedError('You must have a pep number')
- fp = open(os.path.join(destDir, 'index.yml'), 'w')
- fp.write('--- !fragment\n')
- fp.write('template: index.html\n')
- fp.write('# The data to pass to the template\n')
- fp.write('local:\n')
- fp.write(' title: PEP-%d -- %s\n' % ( int(pepIn), title ))
- fp.write(' content: !fragment content.yml\n')
- fp.close()
-
if pep:
title = "PEP " + pep + " -- " + title
if title:
@@ -288,12 +250,6 @@
print >> outfile, '<hr />'
print >> outfile, '<div class="content">'
need_pre = 1
- outfile.close()
- if pepIn == '0000':
- bodyFile = os.path.join(destDir, '..', 'body.html')
- else:
- bodyFile = os.path.join(destDir, 'body.html')
- outfile = open(bodyFile, 'w')
for line in infile:
if line[0] == '\f':
continue
@@ -342,61 +298,18 @@
application when this module is imported."""
def fix_rst_pep(inpath, input_lines, outfile):
- m = re.search(r'pep-(\d+)\.', inpath)
- if not m:
- print "Ugh, can't find PEP number in name"
- sys.exit(1)
- pepIn = m.group(1)
- destDir = '/home/jafo/cvs/beta.python.org/build/data/doc/peps/'
- destDir = os.path.join(destDir, 'pep-%s' % pepIn)
-
- if not os.path.exists(destDir):
- os.mkdir(destDir)
-
- fp = open(os.path.join(destDir, 'content.html'), 'w')
- fp.write('<n:invisible n:data="content" n:render="mapping">\n')
- fp.write('<div id="breadcrumb" n:data="breadcrumb" '
- 'n:render="breadcrumb" />\n')
- fp.write('<n:slot name="text"></n:slot>\n')
- fp.write('</n:invisible>\n')
- fp.close()
-
- fp = open(os.path.join(destDir, 'content.yml'), 'w')
- fp.write('--- !fragment\n')
- fp.write('# Type of template to use\n')
- fp.write('template: content.html\n')
- fp.write('\n')
- fp.write('# The data to pass to the template\n')
- fp.write('local:\n')
- fp.write(' content:\n')
- fp.write(' breadcrumb: !breadcrumb nav.yml nav\n')
- fp.write(' text: !htmlfile body.html\n')
-
from docutils import core
output = core.publish_string(
source=''.join(input_lines),
source_path=inpath,
- destination_path=os.path.join(destDir, 'body.html'),
+ destination_path=outfile.name,
reader_name='pep',
parser_name='restructuredtext',
writer_name='pep_html',
settings=docutils_settings,
# Allow Docutils traceback if there's an exception:
settings_overrides={'traceback': 1})
-
- fp = open(os.path.join(destDir, 'body.html'), 'w')
- fp.write(output)
- fp.close()
-
- fp = open(os.path.join(destDir, 'index.yml'), 'w')
- fp.write('--- !fragment\n')
- fp.write('template: index.html\n')
- fp.write('# The data to pass to the template\n')
- fp.write('local:\n')
- fp.write(' title: PEP-%d -- UNKNOWN TITLE\n' % ( int(pepIn), ))
- fp.write(' content: !fragment content.yml\n')
-
- fp.close()
+ outfile.write(output)
def get_pep_type(input_lines):
@@ -458,10 +371,87 @@
if verbose:
print inpath, "(%s)" % pep_type, "->", outpath
sys.stdout.flush()
+
+ # set up pyramid stuff
+ m = re.search(r'pep-(\d+)\.', inpath)
+ if not m:
+ print "Ugh, can't find PEP number in file name."
+ sys.exit(1)
+ pepIn = m.group(1)
+ destDir = os.path.join(destDirBase, 'pep-%s' % pepIn)
+
+ needSvn = 0
+ if not os.path.exists(destDir):
+ needSvn = 1
+ os.mkdir(destDir)
+
+ # write content.html
+ foofilename = os.path.join(destDir, 'content.html')
+ fp = open(foofilename, 'w')
+ fp.write('<n:invisible n:data="content" n:render="mapping">\n')
+ fp.write('<div id="breadcrumb" n:data="breadcrumb" '
+ 'n:render="breadcrumb" />\n')
+ fp.write('<n:slot name="text"></n:slot>\n')
+ fp.write('</n:invisible>\n')
+ fp.close()
+ os.chmod(foofilename, 0664)
+
+ # write content.yml
+ foofilename = os.path.join(destDir, 'content.yml')
+ fp = open(foofilename, 'w')
+ fp.write('--- !fragment\n')
+ fp.write('# Type of template to use\n')
+ fp.write('template: content.html\n')
+ fp.write('\n')
+ fp.write('# The data to pass to the template\n')
+ fp.write('local:\n')
+ fp.write(' content:\n')
+ fp.write(' breadcrumb: !breadcrumb nav.yml nav\n')
+ fp.write(' text: !htmlfile body.html\n')
+ os.chmod(foofilename, 0664)
+
+ # find the title
+ thisPepTile = None
+ fp = open(inpath, 'r')
+ for line in fp.readlines():
+ m = re.match('^Title: (.*)$', line)
+ if not m: continue
+ thisPepTitle = m.group(1).strip()
+ break
+ if not thisPepTitle:
+ print 'Unable to find the PEP title.'
+ sys.exit(1)
+
+ # write index.yml
+ foofilename = os.path.join(destDir, 'index.yml')
+ fp = open(foofilename, 'w')
+ fp.write('--- !fragment\n')
+ fp.write('template: index.html\n')
+ fp.write('# The data to pass to the template\n')
+ fp.write('local:\n')
+ fp.write(' title: "PEP-%d -- %s"\n' % ( int(pepIn),
+ thisPepTitle.replace('"', '\\"') ))
+ fp.write(' content: !fragment content.yml\n')
+ fp.close()
+ os.chmod(foofilename, 0664)
+
+ outpath = os.path.join(destDir, 'body.html')
outfile = open(outpath, "w")
PEP_TYPE_DISPATCH[pep_type](inpath, input_lines, outfile)
outfile.close()
os.chmod(outfile.name, 0664)
+
+ # copy pep-0000 body to parent directory as well
+ if re.search(r'-0000\.', inpath):
+ shutil.copyfile(outpath, os.path.join(destDir, '..', 'body.html'))
+
+ # add to SVN if necessary
+ if needSvn:
+ ret = os.system('svn add "%s"' % destDir)
+ if ret != 0 and ret != None:
+ print 'SVN returned "%s", expecting 0 or None' % repr(ret)
+ sys.exit(1)
+
return outpath
def push_pep(htmlfiles, txtfiles, username, verbose, local=0):
More information about the Python-checkins
mailing list