def main(arguments): assert arguments is not None _FORMAT_CSV = "csv" _FORMAT_RST = "rst" _FORMATS = [_FORMAT_CSV, _FORMAT_RST] _DEFAULT_FORMAT = _FORMAT_CSV _DEFAULT_SHEET = 1 parser = argparse.ArgumentParser(description='convert ODS file to other formats') parser.add_argument( "-f", "--format", metavar="FORMAT", default=_DEFAULT_FORMAT, choices=sorted(_FORMATS), dest="format", help="target format: %s (default: %s)" % (_tools.human_readable_list(_FORMATS), _DEFAULT_FORMAT)) parser.add_argument( "-1", "--heading", action="store_true", dest="firstRowIsHeading", help="render first row as heading") parser.add_argument( "-s", "--sheet", metavar="SHEET", default=_DEFAULT_SHEET, type=int, dest="sheet", help="sheet to convert (default: %d)" % _DEFAULT_SHEET) parser.add_argument('source_ods_path', metavar='ODS-FILE', help='the ODS file to convert') parser.add_argument('target_path', metavar='TARGET-FILE', nargs='?', help='the target file to write') args = parser.parse_args(arguments) # Additional command line argument validation. if args.sheet < 1: parser.error("option --sheet is %d but must be at least 1" % args.sheet) if (args.format == _FORMAT_CSV) and args.firstRowIsHeading: parser.error("option --heading can not be used with --format=csv") if args.target_path is None: assert args.format in _FORMATS suffix = '.' + args.format args.target_path = _tools.with_suffix(args.source_ods_path, suffix) _log.info("convert %r to %r using format %r", args.source_ods_path, args.target_path, args.format) try: if args.format == _FORMAT_CSV: to_csv(args.source_ods_path, args.target_path, sheet=args.sheet) elif args.format == _FORMAT_RST: to_rst( args.source_ods_path, args.target_path, first_row_is_heading=args.firstRowIsHeading, sheet=args.sheet) else: # pragma: no cover raise NotImplementedError("format=%r" % args.format) except (EnvironmentError, OSError) as error: _log.error("cannot convert ods: %s", error) sys.exit(1) except Exception as error: _log.exception("cannot convert ods: %s", error) sys.exit(1)
def _test_can_derive_suffix(self, expected_path, path_to_test, suffix_to_test): actualPath = _tools.with_suffix(path_to_test, suffix_to_test) self.assertEqual(expected_path, actualPath)
def main(arguments): assert arguments is not None _FORMAT_CSV = "csv" _FORMAT_RST = "rst" _FORMATS = [_FORMAT_CSV, _FORMAT_RST] _DEFAULT_FORMAT = _FORMAT_CSV _DEFAULT_SHEET = 1 parser = argparse.ArgumentParser( description='convert ODS file to other formats') parser.add_argument( "-f", "--format", metavar="FORMAT", default=_DEFAULT_FORMAT, choices=sorted(_FORMATS), dest="format", help="target format: %s (default: %s)" % (_tools.human_readable_list(_FORMATS), _DEFAULT_FORMAT)) parser.add_argument("-1", "--heading", action="store_true", dest="firstRowIsHeading", help="render first row as heading") parser.add_argument("-s", "--sheet", metavar="SHEET", default=_DEFAULT_SHEET, type=int, dest="sheet", help="sheet to convert (default: %d)" % _DEFAULT_SHEET) parser.add_argument('source_ods_path', metavar='ODS-FILE', help='the ODS file to convert') parser.add_argument('target_path', metavar='TARGET-FILE', nargs='?', help='the target file to write') args = parser.parse_args(arguments) # Additional command line argument validation. if args.sheet < 1: parser.error("option --sheet is %d but must be at least 1" % args.sheet) if (args.format == _FORMAT_CSV) and args.firstRowIsHeading: parser.error("option --heading can not be used with --format=csv") if args.target_path is None: assert args.format in _FORMATS suffix = '.' + args.format args.target_path = _tools.with_suffix(args.source_ods_path, suffix) _log.info("convert %r to %r using format %r", args.source_ods_path, args.target_path, args.format) try: if args.format == _FORMAT_CSV: toCsv(args.source_ods_path, args.target_path, sheet=args.sheet) elif args.format == _FORMAT_RST: toRst(args.source_ods_path, args.target_path, firstRowIsHeading=args.firstRowIsHeading, sheet=args.sheet) else: # pragma: no cover raise NotImplementedError("format=%r" % args.format) except EnvironmentError as error: _log.error("cannot convert ods: %s", error) sys.exit(1) except Exception as error: _log.exception("cannot convert ods: %s", error) sys.exit(1)