Added --image-type option to allow use of either GIF or PNG images.

Job.warning():  New method; use this instead of writing to sys.stderr
                directly.  Ensures warnings are also sent to the log
                file.

Job.log():  New method; write a message to the log file.  Use from
            .message() and .warning().
This commit is contained in:
Fred Drake 1999-09-22 19:55:35 +00:00
parent 191439ab6b
commit 52ea0ce977
1 changed files with 38 additions and 11 deletions

View File

@ -16,6 +16,8 @@ HTML options:
--link Specify the number of levels to include on each page.
--split, -s Specify a section level for page splitting, default: %(max_split_depth)s.
--iconserver, -i Specify location of icons (default: ../).
--image-type Specify the image type to use in HTML output;
values: gif (default), png.
Other options:
--a4 Format for A4 paper.
@ -75,11 +77,13 @@ class Options:
discard_temps = 1
have_temps = 0
icon_server = None
image_type = "gif"
logging = 0
max_link_depth = 3
max_split_depth = 6
paper = "letter"
quiet = 0
runs = 0
style_file = os.path.join(TOPDIR, "html", "style.css")
#
DEFAULT_FORMATS = ("pdf",)
@ -97,11 +101,12 @@ class Options:
raise KeyError, key
def parse(self, args):
opts, args = getopt.getopt(args, "Hi:a:s:lDkq",
opts, args = getopt.getopt(args, "Hi:a:s:lDkqr:",
["all", "postscript", "help", "iconserver=",
"address=", "a4", "l2h-config=", "letter",
"link=", "split=", "logging", "debugging",
"keep", "quiet"] + list(self.ALL_FORMATS))
"keep", "quiet", "runs=", "image-type="]
+ list(self.ALL_FORMATS))
for opt, arg in opts:
if opt == "--all":
self.formats = list(self.ALL_FORMATS)
@ -130,6 +135,10 @@ class Options:
self.discard_temps = 0
elif opt in ("-q", "--quiet"):
self.quiet = 1
elif opt in ("-r", "--runs"):
self.runs = int(arg)
elif opt == "--image-type":
self.image_type = arg
#
# Format specifiers:
#
@ -165,6 +174,8 @@ class Options:
class Job:
latex_runs = 0
def __init__(self, options, path):
self.options = options
self.doctype = get_doctype(path)
@ -191,8 +202,14 @@ class Job:
self.require_temps()
self.build_html(self.doc)
if self.options.icon_server == ".":
pattern = os.path.join(TOPDIR, "html", "icons", "*.gif")
for fn in glob.glob(pattern):
pattern = os.path.join(TOPDIR, "html", "icons",
"*." + self.options.image_type)
imgs = glob.glob(pattern)
if not imgs:
self.warning(
"Could not locate support images of type %s."
% `self.options.image_type`)
for fn in imgs:
new_fn = os.path.join(self.doc, os.path.basename(fn))
shutil.copyfile(fn, new_fn)
if "text" in formats:
@ -218,7 +235,6 @@ class Job:
os.environ["TEXINPUTS"] = string.join(texinputs, os.pathsep)
self.message("TEXINPUTS=" + os.environ["TEXINPUTS"])
__have_temps = 0
def build_aux(self, binary=None):
if binary is None:
binary = LATEX_BINARY
@ -226,7 +242,7 @@ class Job:
new_index("mod%s.ind" % self.doc, "modindex")
self.run("%s %s" % (binary, self.doc))
self.use_bibtex = check_for_bibtex(self.doc + ".aux")
self.__have_temps = 1
self.latex_runs = 1
def build_dvi(self):
self.use_latex(LATEX_BINARY)
@ -297,7 +313,7 @@ class Job:
texfile = fn
break
if not texfile:
sys.stderr.write("Could not locate %s.tex; aborting.\n" % self.doc)
self.warning("Could not locate %s.tex; aborting." % self.doc)
sys.exit(1)
# remove leading ./ (or equiv.); might avoid problems w/ dvips
if texfile[:2] == os.curdir + os.sep:
@ -331,7 +347,7 @@ class Job:
% (LYNX_BINARY, indexfile, self.doc))
def require_temps(self, binary=None):
if not self.__have_temps:
if not self.latex_runs:
self.build_aux(binary=binary)
def write_l2h_aux_init_file(self):
@ -348,9 +364,12 @@ class Job:
'print "\nInitializing from file: %s\";\n\n'
% string_to_perl(fn))
l2hoption(fp, "ICONSERVER", options.icon_server)
l2hoption(fp, "IMAGE_TYPE", options.image_type)
l2hoption(fp, "ADDRESS", options.address)
l2hoption(fp, "MAX_LINK_DEPTH", options.max_link_depth)
l2hoption(fp, "MAX_SPLIT_DEPTH", options.max_split_depth)
# this line needed in case $IMAGE_TYPE changed
fp.write("adjust_icon_information();\n")
fp.write("1;\n")
fp.close()
@ -380,8 +399,8 @@ class Job:
rc = os.system("(%s) </dev/null >>%s 2>&1"
% (command, self.log_filename))
if rc:
sys.stderr.write(
"Session transcript and error messages are in %s.\n"
self.warning(
"Session transcript and error messages are in %s."
% self.log_filename)
sys.exit(rc)
@ -389,8 +408,16 @@ class Job:
msg = "+++ " + msg
if not self.options.quiet:
print msg
self.log(msg + "\n")
def warning(self, msg):
msg = "*** %s\n" % msg
sys.stderr.write(msg)
self.log(msg)
def log(self, msg):
fp = open(self.log_filename, "a")
fp.write(msg + "\n")
fp.write(msg)
fp.close()