def filetype(path, mode="r"): filename = os.path.expanduser(path) filename = os.path.abspath(filename) f = None try: f = open(filename, mode) except Exception as e: message = _gt("can't open '%s': %s") raise ArgumentTypeError(message % (path, e)) finally: if f: f.close() _, ext = os.path.splitext(filename) if ext.lower() != ".odt": message = _gt("not an odt file '%s'") raise ArgumentTypeError(message % path) return filename
def parse_cmdline(argv=None): """Parse command line options""" if argv is None: argv = sys.argv else: sys.argv.extend(argv) program_version = "v%s" % __version__ program_build_date = str(__updated__) program_version_message = "%%(prog)s %s (%s)" % (program_version, program_build_date) program_shortdesc = _gt("odt2epub is an odt to epub converter.") # Setup argument parser parser = ArgumentParser(prog="odt2epub", description=program_shortdesc, formatter_class=RawDescriptionHelpFormatter) group = parser.add_mutually_exclusive_group() group.add_argument( "-v", "--verbose", dest="verbose", action="count", help=_gt("set verbosity level [default: %(default)s]"), default=1, ) group.add_argument("-q", "--quiet", action="store_true", help=_gt("suppress non-error messages")) parser.add_argument("-V", "--version", action="version", version=program_version_message) parser.add_argument("-l", "--license", action=_LicenseAction) parser.add_argument("--inline-css", action="store_true", help=_gt("inline generated css")) parser.add_argument("--keep-css-class", action="store_true", help=_gt("keep css class")) parser.add_argument( "--map-style", action="append", help=_gt("keep odt style, providing a tuple (odt style, css style)") ) parser.add_argument( "--insert-split-marker", action="store_true", help=_gt("insert sigil split marker before headers") ) parser.add_argument(dest="odtfilename", help=_gt("odt file to convert"), metavar="<odt filename>", type=filetype) # Process arguments return parser.parse_args()