Changeset - 419329d436fd
[Not reviewed]
stable
0 1 0
Mads Kiilerich (mads) - 20 months ago 2024-07-20 17:10:24
mads@kiilerich.com
Grafted from: d3e51dcbc874
scripts: update i18n dev script to modern hg

Support for old hg versions is not a concern for dev scripts like this.
1 file changed with 8 insertions and 10 deletions:
0 comments (0 inline, 0 general)
scripts/i18n
Show inline comments
 
@@ -17,12 +17,13 @@
 
import os
 
import shutil
 
import sys
 

	
 
import click
 
import i18n_utils
 
from mercurial import util
 

	
 

	
 
"""
 
Tool for maintenance of .po and .pot files
 

	
 
Normally, the i18n-related files contain for each translatable string a
 
@@ -87,42 +88,39 @@ def normalized_merge(local, base, other,
 
        i18n.executable = /path/to/scripts/i18n
 
        i18n.args = normalized-merge $local $base $other $output
 

	
 
    and then invoke merge/rebase/graft with the additional argument '--tool i18n'.
 
    """
 
    from mercurial import context, simplemerge
 
    from mercurial import ui as uimod
 

	
 
    print('i18n normalized-merge: normalizing and merging %s' % output)
 

	
 
    i18n_utils._normalize_po_file(local, merge_pot_file=merge_pot_file, strip=strip)
 
    i18n_utils._normalize_po_file(base, merge_pot_file=merge_pot_file, strip=strip)
 
    i18n_utils._normalize_po_file(other, merge_pot_file=merge_pot_file, strip=strip)
 
    i18n_utils._normalize_po_file(output, merge_pot_file=merge_pot_file, strip=strip)
 

	
 
    # simplemerge will write markers to 'local' if it fails, keep a copy without markers
 
    localkeep = local + '.keep'
 
    shutil.copyfile(local, localkeep)
 

	
 
    ret = simplemerge.simplemerge(uimod.ui.load(),
 
         context.arbitraryfilectx(local.encode('utf-8')),
 
         context.arbitraryfilectx(base.encode('utf-8')),
 
         context.arbitraryfilectx(other.encode('utf-8')),
 
         label=[b'local', b'other', b'base'],
 
    merged_text, conflicts = simplemerge.simplemerge(
 
         simplemerge.MergeInput(context.arbitraryfilectx(local.encode('utf-8'), b'local')),
 
         simplemerge.MergeInput(context.arbitraryfilectx(base.encode('utf-8'), b'base')),
 
         simplemerge.MergeInput(context.arbitraryfilectx(other.encode('utf-8'), b'other')),
 
         mode='merge',
 
    )
 
    shutil.copyfile(local, output)  # simplemerge wrote to local - either resolved or with conflict markers
 
    if ret:
 
    util.writefile(output, merged_text)  # either resolved or with conflict markers
 
    if conflicts:
 
        shutil.copyfile(localkeep, local)
 
        basekeep = base + '.keep'
 
        otherkeep = other + '.keep'
 
        shutil.copyfile(base, basekeep)
 
        shutil.copyfile(other, otherkeep)
 
        sys.stderr.write("Error: simple merge failed and %s is left with conflict markers. Resolve the conflicts, then use 'hg resolve -m'.\n" % output)
 
        sys.stderr.write('Resolve with e.g.: kdiff3 %s %s %s -o %s\n' % (basekeep, localkeep, otherkeep, output))
 
        sys.exit(ret)
 
        sys.exit(1)
 

	
 
    os.remove(localkeep)
 

	
 
@cli.command()
 
@click.argument('file1')
 
@click.argument('file2')
0 comments (0 inline, 0 general)