def merge(arguments): # Determine final argument values. pot_fn = arguments.pot_fn merge_fn = arguments.merge_fn merge2_fn = arguments.merge2_fn if merge2_fn == merge_fn: merge2_fn = False if not pot_fn: short_usage(1, u"No pot file specified as target with --pot.") if not merge_fn: short_usage(1, u"No potfile specified as source with --merge.") try: orig_ctl = catalog.MessageCatalog(filename=pot_fn) merge_ctl = catalog.MessageCatalog(filename=merge_fn) if merge2_fn: merge2_ctl = catalog.MessageCatalog(filename=merge2_fn) except IOError as e: short_usage(0, 'I/O Error: %s' % e) # merge orig_ctl.add_missing(merge_ctl, '', 1) if merge2_fn: orig_ctl.add_missing(merge2_ctl, '', 1) orig_ctl.mime_header['POT-Creation-Date'] = catalog.now() file = open(pot_fn, 'w') writer = catalog.POWriter(file, orig_ctl) writer.write(msgstrToComment=True)
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) def merge_parser(subparsers): """Argument parser for merge command. merge --pot <filename> --merge <filename> [--merge2 <filename>] """ description = """ Given a pot-file via the --pot option and a second pot-file with the --merge <filename> option, I try to merge these msgids into the target-pot file. If a msgid already
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) def merge(): try: opts, files = getopt.getopt(sys.argv[2:], 'sm:p:', ('pot=', 'merge=', 'merge2=')) except: usage(1) pot_fn = None merge_fn = None for opt, arg in opts:
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)