Blame lib/dbtexmf/dblatex/grubber/dvips.py

Packit Service 76cb02
# This file is part of Rubber and thus covered by the GPL
Packit Service 76cb02
# (c) Emmanuel Beffara, 2002--2006
Packit Service 76cb02
"""
Packit Service 76cb02
PostScript generation through dvips with Rubber.
Packit Service 76cb02
Packit Service 76cb02
This module has specific support for Omega: when the name of the main compiler
Packit Service 76cb02
is "Omega" (instead of "TeX" for instance), then "odvips" is used instead of
Packit Service 76cb02
"dvips".
Packit Service 76cb02
"""
Packit Service 76cb02
Packit Service 76cb02
import sys
Packit Service 76cb02
import os
Packit Service 76cb02
from os.path import *
Packit Service 76cb02
import subprocess
Packit Service 76cb02
Packit Service cd7d79
from dbtexmf.dblatex.grubber.msg import _ , msg
Packit Service cd7d79
from dbtexmf.dblatex.grubber.plugins import TexModule
Packit Service cd7d79
from dbtexmf.dblatex.grubber.maker import Depend
Packit Service 76cb02
Packit Service 76cb02
class Dep (Depend):
Packit Service 76cb02
    def __init__ (self, doc, target, source, node):
Packit Service 76cb02
        self.doc = doc
Packit Service 76cb02
        self.env = doc.env
Packit Service 76cb02
        self.source = source
Packit Service 76cb02
        self.target = target
Packit Service 76cb02
        Depend.__init__(self, doc.env, prods=[target], sources={source: node})
Packit Service 76cb02
        self.options = []
Packit Service 76cb02
        if self.doc.engine == "Omega":
Packit Service 76cb02
            self.cmdexec = "odvips"
Packit Service 76cb02
        else:
Packit Service 76cb02
            self.cmdexec = "dvips"
Packit Service 76cb02
            self.options.append("-R0")
Packit Service 76cb02
Packit Service 76cb02
    def run (self):
Packit Service 76cb02
        cmd = [self.cmdexec]
Packit Service 76cb02
        msg.progress(_("running %s on %s") % (cmd[0], self.source))
Packit Service 76cb02
        for opt in self.doc.paper.split():
Packit Service 76cb02
            cmd.extend(["-t", opt])
Packit Service 76cb02
        cmd.extend(self.options + ["-o", self.target, self.source])
Packit Service 76cb02
        msg.debug(" ".join(cmd))
Packit Service 76cb02
        rc = subprocess.call(cmd, stdout=msg.stdout)
Packit Service 76cb02
        if rc != 0:
Packit Service 76cb02
            msg.error(_("%s failed on %s") % (cmd[0], self.source))
Packit Service 76cb02
            return 1
Packit Service 76cb02
        return 0
Packit Service 76cb02
Packit Service 76cb02
class Module (TexModule):
Packit Service 76cb02
    def __init__ (self, doc, dict):
Packit Service 76cb02
        self.doc = doc
Packit Service 76cb02
        lastdep = doc.env.dep_last()
Packit Service 76cb02
        dvi = lastdep.prods[0]
Packit Service 76cb02
        root, ext = os.path.splitext(dvi)
Packit Service 76cb02
        if ext != ".dvi":
Packit Service 76cb02
            msg.error(_("I can't use dvips when not producing a DVI"))
Packit Service 76cb02
            sys.exit(2)
Packit Service 76cb02
        ps = root + ".ps"
Packit Service 76cb02
        self.dep = Dep(doc, ps, dvi, lastdep)
Packit Service 76cb02
        doc.env.dep_append(self.dep)
Packit Service 76cb02
Packit Service 76cb02
    def do_options (self, *args):
Packit Service 76cb02
        self.dep.options.extend(args)
Packit Service 76cb02