outputDir = os.getcwd() outputDir = os.path.abspath(outputDir) if stylesheetFile: try: sf = open(stylesheetFile, "rb") stylesheet = sf.read() sf.close() except IOError: sys.stderr.write("The CSS stylesheet '%s' does not exist\n" % stylesheetFile) sys.stderr.write("Disabling CSS usage.\n") stylesheet = None else: stylesheet = None indexGenerator = IndexGenerator(outputDir, colors, stylesheet) if qtHelpCreation: if qtHelpOutputDir: if not os.path.isdir(qtHelpOutputDir): try: os.makedirs(qtHelpOutputDir) except EnvironmentError: sys.stderr.write("Could not create QtHelp output directory %s." % qtHelpOutputDir) sys.exit(2) else: qtHelpOutputDir = os.getcwd() qtHelpOutputDir = os.path.abspath(qtHelpOutputDir) qtHelpGenerator = QtHelpGenerator( outputDir,
def main(): """ Main entry point into the application. """ import getopt try: opts, args = getopt.getopt(sys.argv[1:], "c:ehio:Rrt:Vx:", [ "exclude=", "extension=", "help", "noindex", "noempty", "outdir=", "recursive", "style-sheet=", "version", "exclude-file=", "eol=", "body-color=", "body-background-color=", "l1header-color=", "l1header-background-color=", "l2header-color=", "l2header-background-color=", "cfheader-color=", "cfheader-background-color=", "link-color=", "create-qhp", "qhp-outdir=", "qhp-namespace=", "qhp-virtualfolder=", "qhp-filtername=", "qhp-filterattribs=", "qhp-title=", "create-qhc", ]) except getopt.error: usage() excludeDirs = [ "CVS", ".svn", "_svn", ".ropeproject", "_ropeproject", ".eric6project", "_eric6project", "dist", "build", "doc", "docs" ] excludePatterns = [] outputDir = "doc" recursive = False doIndex = True noempty = False newline = None stylesheetFile = "" colors = eric6docDefaultColors.copy() qtHelpCreation = False qtHelpOutputDir = "help" qtHelpNamespace = "" qtHelpFolder = "source" qtHelpFilterName = "unknown" qtHelpFilterAttribs = "" qtHelpTitle = "" qtHelpCreateCollection = False for k, v in opts: if k in ["-o", "--outdir"]: outputDir = v elif k in ["-R", "-r", "--recursive"]: recursive = True elif k in ["-x", "--exclude"]: excludeDirs.append(v) elif k == "--exclude-file": excludePatterns.append(v) elif k in ["-i", "--noindex"]: doIndex = False elif k in ["-e", "--noempty"]: noempty = True elif k in ["-h", "--help"]: usage() elif k in ["-V", "--version"]: version() elif k in ["-c", "--style-sheet"]: stylesheetFile = v elif k in ["-t", "--extension"]: if not v.startswith("."): v = ".{0}".format(v) supportedExtensions.append(v) elif k == "--eol": if v.lower() == "cr": newline = '\r' elif v.lower() == "lf": newline = '\n' elif v.lower() == "crlf": newline = '\r\n' elif k == "--body-color": colors['BodyColor'] = v elif k == "--body-background-color": colors['BodyBgColor'] = v elif k == "--l1header-color": colors['Level1HeaderColor'] = v elif k == "--l1header-background-color": colors['Level1HeaderBgColor'] = v elif k == "--l2header-color": colors['Level2HeaderColor'] = v elif k == "--l2header-background-color": colors['Level2HeaderBgColor'] = v elif k == "--cfheader-color": colors['CFColor'] = v elif k == "--cfheader-background-color": colors['CFBgColor'] = v elif k == "--link-color": colors['LinkColor'] = v elif k == "--create-qhp": qtHelpCreation = True elif k == "--qhp-outdir": qtHelpOutputDir = v elif k == "--qhp-namespace": qtHelpNamespace = v elif k == "--qhp-virtualfolder": qtHelpFolder = v elif k == "--qhp-filtername": qtHelpFilterName = v elif k == "--qhp-filterattribs": qtHelpFilterAttribs = v elif k == "--qhp-title": qtHelpTitle = v elif k == "--create-qhc": qtHelpCreateCollection = True if not args: usage() if qtHelpCreation and \ (qtHelpNamespace == "" or qtHelpFolder == "" or '/' in qtHelpFolder or qtHelpTitle == ""): usage() if qtHelpCreation: from PyQt5.QtCore import QCoreApplication app = QCoreApplication(sys.argv) # __IGNORE_WARNING__ input = output = 0 basename = "" if outputDir: if not os.path.isdir(outputDir): try: os.makedirs(outputDir) except EnvironmentError: sys.stderr.write( "Could not create output directory {0}.".format(outputDir)) sys.exit(2) else: outputDir = os.getcwd() outputDir = os.path.abspath(outputDir) if stylesheetFile: try: sf = open(stylesheetFile, "r", encoding="utf-8") stylesheet = sf.read() sf.close() except IOError: sys.stderr.write( "The CSS stylesheet '{0}' does not exist\n".format( stylesheetFile)) sys.stderr.write("Disabling CSS usage.\n") stylesheet = None else: stylesheet = None indexGenerator = IndexGenerator(outputDir, colors, stylesheet) if qtHelpCreation: if qtHelpOutputDir: if not os.path.isdir(qtHelpOutputDir): try: os.makedirs(qtHelpOutputDir) except EnvironmentError: sys.stderr.write( "Could not create QtHelp output directory {0}.".format( qtHelpOutputDir)) sys.exit(2) else: qtHelpOutputDir = os.getcwd() qtHelpOutputDir = os.path.abspath(qtHelpOutputDir) qtHelpGenerator = QtHelpGenerator(outputDir, qtHelpOutputDir, qtHelpNamespace, qtHelpFolder, qtHelpFilterName, qtHelpFilterAttribs, qtHelpTitle, qtHelpCreateCollection) for arg in args: if os.path.isdir(arg): if os.path.exists( os.path.join(arg, Utilities.joinext("__init__", ".py"))): basename = os.path.dirname(arg) if arg == '.': sys.stderr.write("The directory '.' is a package.\n") sys.stderr.write( "Please repeat the call giving its real name.\n") sys.stderr.write("Ignoring the directory.\n") continue else: basename = arg if basename: basename = "{0}{1}".format(basename, os.sep) if recursive and not os.path.islink(arg): names = [arg] + Utilities.getDirs(arg, excludeDirs) else: names = [arg] else: basename = "" names = [arg] for filename in names: inpackage = False if os.path.isdir(filename): files = [] for ext in supportedExtensions: files.extend( glob.glob( os.path.join(filename, Utilities.joinext("*", ext)))) initFile = os.path.join(filename, Utilities.joinext("__init__", ext)) if initFile in files: inpackage = True files.remove(initFile) files.insert(0, initFile) else: if Utilities.isWindowsPlatform() and glob.has_magic(filename): files = glob.glob(filename) else: files = [filename] for file in files: skipIt = False for pattern in excludePatterns: if fnmatch.fnmatch(os.path.basename(file), pattern): skipIt = True break if skipIt: continue try: module = Utilities.ModuleParser.readModule( file, basename=basename, inpackage=inpackage, extensions=supportedExtensions) moduleDocument = ModuleDocument(module, colors, stylesheet) doc = moduleDocument.genDocument() except IOError as v: sys.stderr.write("{0} error: {1}\n".format(file, v[1])) continue except ImportError as v: sys.stderr.write("{0} error: {1}\n".format(file, v)) continue input = input + 1 f = Utilities.joinext( os.path.join(outputDir, moduleDocument.name()), ".html") # remember for index file generation indexGenerator.remember(file, moduleDocument, basename) # remember for QtHelp generation if qtHelpCreation: qtHelpGenerator.remember(file, moduleDocument, basename) if (noempty or file.endswith('__init__.py')) \ and moduleDocument.isEmpty(): continue # generate output try: out = open(f, "w", encoding="utf-8", newline=newline) out.write(doc) out.close() except IOError as v: sys.stderr.write("{0} error: {1}\n".format(file, v[1])) else: sys.stdout.write("{0} ok\n".format(f)) output = output + 1 sys.stdout.flush() sys.stderr.flush() # write index files if doIndex: indexGenerator.writeIndices(basename, newline=newline) # generate the QtHelp files if qtHelpCreation: qtHelpGenerator.generateFiles(newline=newline) sys.exit(0)
def main(): """ Main entry point into the application. """ import getopt try: opts, args = getopt.getopt( sys.argv[1:], "c:ehio:Rrt:Vx:", ["exclude=", "extension=", "help", "noindex", "noempty", "outdir=", "recursive", "style-sheet=", "version", "exclude-file=", "eol=", "body-color=", "body-background-color=", "l1header-color=", "l1header-background-color=", "l2header-color=", "l2header-background-color=", "cfheader-color=", "cfheader-background-color=", "link-color=", "create-qhp", "qhp-outdir=", "qhp-namespace=", "qhp-virtualfolder=", "qhp-filtername=", "qhp-filterattribs=", "qhp-title=", "create-qhc", ]) except getopt.error: usage() excludeDirs = ["CVS", ".svn", "_svn", ".ropeproject", "_ropeproject", ".eric6project", "_eric6project", "dist", "build", "doc", "docs"] excludePatterns = [] outputDir = "doc" recursive = False doIndex = True noempty = False newline = None stylesheetFile = "" colors = eric6docDefaultColors.copy() qtHelpCreation = False qtHelpOutputDir = "help" qtHelpNamespace = "" qtHelpFolder = "source" qtHelpFilterName = "unknown" qtHelpFilterAttribs = "" qtHelpTitle = "" qtHelpCreateCollection = False for k, v in opts: if k in ["-o", "--outdir"]: outputDir = v elif k in ["-R", "-r", "--recursive"]: recursive = True elif k in ["-x", "--exclude"]: excludeDirs.append(v) elif k == "--exclude-file": excludePatterns.append(v) elif k in ["-i", "--noindex"]: doIndex = False elif k in ["-e", "--noempty"]: noempty = True elif k in ["-h", "--help"]: usage() elif k in ["-V", "--version"]: version() elif k in ["-c", "--style-sheet"]: stylesheetFile = v elif k in ["-t", "--extension"]: if not v.startswith("."): v = ".{0}".format(v) supportedExtensions.append(v) elif k == "--eol": if v.lower() == "cr": newline = '\r' elif v.lower() == "lf": newline = '\n' elif v.lower() == "crlf": newline = '\r\n' elif k == "--body-color": colors['BodyColor'] = v elif k == "--body-background-color": colors['BodyBgColor'] = v elif k == "--l1header-color": colors['Level1HeaderColor'] = v elif k == "--l1header-background-color": colors['Level1HeaderBgColor'] = v elif k == "--l2header-color": colors['Level2HeaderColor'] = v elif k == "--l2header-background-color": colors['Level2HeaderBgColor'] = v elif k == "--cfheader-color": colors['CFColor'] = v elif k == "--cfheader-background-color": colors['CFBgColor'] = v elif k == "--link-color": colors['LinkColor'] = v elif k == "--create-qhp": qtHelpCreation = True elif k == "--qhp-outdir": qtHelpOutputDir = v elif k == "--qhp-namespace": qtHelpNamespace = v elif k == "--qhp-virtualfolder": qtHelpFolder = v elif k == "--qhp-filtername": qtHelpFilterName = v elif k == "--qhp-filterattribs": qtHelpFilterAttribs = v elif k == "--qhp-title": qtHelpTitle = v elif k == "--create-qhc": qtHelpCreateCollection = True if not args: usage() if qtHelpCreation and \ (qtHelpNamespace == "" or qtHelpFolder == "" or '/' in qtHelpFolder or qtHelpTitle == ""): usage() if qtHelpCreation: from PyQt5.QtCore import QCoreApplication app = QCoreApplication(sys.argv) # __IGNORE_WARNING__ input = output = 0 basename = "" if outputDir: if not os.path.isdir(outputDir): try: os.makedirs(outputDir) except EnvironmentError: sys.stderr.write( "Could not create output directory {0}.".format(outputDir)) sys.exit(2) else: outputDir = os.getcwd() outputDir = os.path.abspath(outputDir) if stylesheetFile: try: sf = open(stylesheetFile, "r", encoding="utf-8") stylesheet = sf.read() sf.close() except IOError: sys.stderr.write( "The CSS stylesheet '{0}' does not exist\n".format( stylesheetFile)) sys.stderr.write("Disabling CSS usage.\n") stylesheet = None else: stylesheet = None indexGenerator = IndexGenerator(outputDir, colors, stylesheet) if qtHelpCreation: if qtHelpOutputDir: if not os.path.isdir(qtHelpOutputDir): try: os.makedirs(qtHelpOutputDir) except EnvironmentError: sys.stderr.write( "Could not create QtHelp output directory {0}.".format( qtHelpOutputDir)) sys.exit(2) else: qtHelpOutputDir = os.getcwd() qtHelpOutputDir = os.path.abspath(qtHelpOutputDir) qtHelpGenerator = QtHelpGenerator(outputDir, qtHelpOutputDir, qtHelpNamespace, qtHelpFolder, qtHelpFilterName, qtHelpFilterAttribs, qtHelpTitle, qtHelpCreateCollection) for arg in args: if os.path.isdir(arg): if os.path.exists(os.path.join( arg, Utilities.joinext("__init__", ".py"))): basename = os.path.dirname(arg) if arg == '.': sys.stderr.write("The directory '.' is a package.\n") sys.stderr.write( "Please repeat the call giving its real name.\n") sys.stderr.write("Ignoring the directory.\n") continue else: basename = arg if basename: basename = "{0}{1}".format(basename, os.sep) if recursive and not os.path.islink(arg): names = [arg] + Utilities.getDirs(arg, excludeDirs) else: names = [arg] else: basename = "" names = [arg] for filename in names: inpackage = False if os.path.isdir(filename): files = [] for ext in supportedExtensions: files.extend(glob.glob(os.path.join( filename, Utilities.joinext("*", ext)))) initFile = os.path.join( filename, Utilities.joinext("__init__", ext)) if initFile in files: inpackage = True files.remove(initFile) files.insert(0, initFile) else: if Utilities.isWindowsPlatform() and glob.has_magic(filename): files = glob.glob(filename) else: files = [filename] for file in files: skipIt = False for pattern in excludePatterns: if fnmatch.fnmatch(os.path.basename(file), pattern): skipIt = True break if skipIt: continue try: module = Utilities.ModuleParser.readModule( file, basename=basename, inpackage=inpackage, extensions=supportedExtensions) moduleDocument = ModuleDocument(module, colors, stylesheet) doc = moduleDocument.genDocument() except IOError as v: sys.stderr.write("{0} error: {1}\n".format(file, v[1])) continue except ImportError as v: sys.stderr.write("{0} error: {1}\n".format(file, v)) continue input = input + 1 f = Utilities.joinext(os.path.join( outputDir, moduleDocument.name()), ".html") # remember for index file generation indexGenerator.remember(file, moduleDocument, basename) # remember for QtHelp generation if qtHelpCreation: qtHelpGenerator.remember(file, moduleDocument, basename) if (noempty or file.endswith('__init__.py')) \ and moduleDocument.isEmpty(): continue # generate output try: out = open(f, "w", encoding="utf-8", newline=newline) out.write(doc) out.close() except IOError as v: sys.stderr.write("{0} error: {1}\n".format(file, v[1])) else: sys.stdout.write("{0} ok\n".format(f)) output = output + 1 sys.stdout.flush() sys.stderr.flush() # write index files if doIndex: indexGenerator.writeIndices(basename, newline=newline) # generate the QtHelp files if qtHelpCreation: qtHelpGenerator.generateFiles(newline=newline) sys.exit(0)