def rebuild_pot(): try: opts, files = getopt.getopt( sys.argv[2:], 'mp:c:', ('pot=', 'create=', 'merge=', 'merge2=', 'exclude=')) except: usage(1) pot_fn = None merge_fn = None merge2_fn = None create_domain = None exclude = () for opt, arg in opts: if opt in ('-p', '--pot'): pot_fn = arg if opt in ('-c', '--create'): create_domain = arg if opt in ('-m', '--merge'): merge_fn = arg if opt in ('--merge2'): merge2_fn = arg if opt in ('--exclude'): exclude = tuple(arg.split()) if not pot_fn: short_usage(1, u"No pot file specified as target with --pot.") if merge2_fn == merge_fn: merge2_fn = False path = files merge_ctl = None try: if create_domain is not None: orig_ctl = catalog.MessageCatalog(domain=create_domain) else: orig_ctl = catalog.MessageCatalog(filename=pot_fn) if merge_fn: merge_ctl = catalog.MessageCatalog(filename=merge_fn) if merge2_fn: merge2_ctl = catalog.MessageCatalog(filename=merge2_fn) ptreader = catalog.PTReader(path, create_domain, exclude=exclude) pyreader = catalog.PYReader(path, create_domain, exclude=exclude) gsreader = catalog.GSReader(path, create_domain, exclude=exclude) except IOError, e: short_usage(0, 'I/O Error: %s' % e)
def test_read_py(self): pyr = catalog.PYReader(self.input, 'testing') pyr.read() out = pyr.catalogs['testing'] for key in out: self.assertTrue( key in self.output, 'Failure in py parsing.\nUnexpected msgid: %s' % key) for key in self.output: self.assertTrue( out.get(key, False), 'Failure in py parsing.\nMissing:%s' % self.output.get(key)) self.assertTrue( out.get(key) == self.output.get(key), 'Failure in py parsing.\nGot:%s\nExpected:%s' % (out.get(key), self.output.get(key))) self.assertEqual(len(out), len(self.output))
def rebuild_pot(arguments): merge_ctl = None # Determine final argument values. create_domain = arguments.create_domain exclude = arguments.exclude and tuple(arguments.exclude.split()) or () pot_fn = arguments.pot_fn merge_fn = arguments.merge_fn merge2_fn = arguments.merge2_fn if merge2_fn == merge_fn: merge2_fn = False path = arguments.path try: if create_domain is not None: orig_ctl = catalog.MessageCatalog(domain=create_domain) else: orig_ctl = catalog.MessageCatalog(filename=pot_fn) create_domain = orig_ctl.domain if merge_fn: merge_ctl = catalog.MessageCatalog(filename=merge_fn) if merge2_fn: merge2_ctl = catalog.MessageCatalog(filename=merge2_fn) ptreader = catalog.PTReader(path, create_domain, exclude=exclude) pyreader = catalog.PYReader(path, create_domain, exclude=exclude) gsreader = catalog.GSReader(path, create_domain, exclude=exclude) zcmlreader = catalog.ZCMLReader(path, create_domain, exclude=exclude) except IOError as e: short_usage(0, 'I/O Error: %s' % e) # Read the data. ptreader.read() pyreader.read() gsreader.read() zcmlreader.read() domain = orig_ctl.domain ptctl = pyctl = gsctl = zcmlctl = {} if domain in ptreader.catalogs: ptctl = ptreader.catalogs[domain] for key in orig_ctl.keys(): if key in ptctl: # preserve comments ptctl[key].comments = ptctl[ key].comments + orig_ctl.getComments(key) if domain in pyreader.catalogs: pyctl = pyreader.catalogs[domain] for key in orig_ctl.keys(): if key in pyctl: # preserve comments pyctl[key].comments = pyctl[ key].comments + orig_ctl.getComments(key) if domain in gsreader.catalogs: gsctl = gsreader.catalogs[domain] # XXX Preserve comments? if domain in zcmlreader.catalogs: zcmlctl = zcmlreader.catalogs[domain] # XXX Preserve comments? if not (ptctl or pyctl or gsctl or zcmlctl): short_usage(0, 'No entries for domain "%s".' % domain) ctl = ptctl or pyctl or gsctl or zcmlctl if pyctl and pyctl is not ctl: ctl.merge(pyctl) if gsctl and gsctl is not ctl: ctl.merge(gsctl) if zcmlctl and zcmlctl is not ctl: ctl.merge(zcmlctl) if merge_ctl is not None: # use headers from merge-catalog ctl.commentary_header = merge_ctl.commentary_header ctl.mime_header = merge_ctl.mime_header # merge ctl.add_missing(merge_ctl, mergewarn=True) else: # use headers from orig-catalog ctl.commentary_header = orig_ctl.commentary_header ctl.mime_header = orig_ctl.mime_header if merge2_fn: ctl.add_missing(merge2_ctl, mergewarn=True) ctl.mime_header['POT-Creation-Date'] = catalog.now() file = open(pot_fn, 'w') writer = catalog.POWriter(file, ctl) writer.write(msgstrToComment=True)