##// END OF EJS Templates
scripts/i18n: add command 'normalized-diff'...
Thomas De Schampheleire -
r8184:93dabafa default
parent child Browse files
Show More
@@ -14,6 +14,8 b''
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
16
17 import sys
18
17 import click
19 import click
18
20
19 import i18n_utils
21 import i18n_utils
@@ -48,6 +50,12 b' def normalize_po_files(po_files):'
48 for po_file in po_files:
50 for po_file in po_files:
49 i18n_utils._normalize_po_file(po_file, strip=True)
51 i18n_utils._normalize_po_file(po_file, strip=True)
50
52
53 @cli.command()
54 @click.argument('file1')
55 @click.argument('file2')
56 def normalized_diff(file1, file2):
57 """Compare two files while transparently normalizing them."""
58 sys.exit(i18n_utils._normalized_diff(file1, file2, strip=True))
51
59
52 if __name__ == '__main__':
60 if __name__ == '__main__':
53 cli()
61 cli()
@@ -15,7 +15,9 b' from __future__ import print_function'
15
15
16 import os
16 import os
17 import re
17 import re
18 import shutil
18 import subprocess
19 import subprocess
20 import tempfile
19
21
20
22
21 do_debug = False # set from scripts/i18n --debug
23 do_debug = False # set from scripts/i18n --debug
@@ -165,3 +167,19 b' def _normalize_po_file(po_file, strip=Fa'
165 normalized_content = _normalize_po(raw_content)
167 normalized_content = _normalize_po(raw_content)
166 dest.write(normalized_content)
168 dest.write(normalized_content)
167 os.rename(po_tmp, po_file)
169 os.rename(po_tmp, po_file)
170
171 def _normalized_diff(file1, file2, strip=False):
172 # Create temporary copies of both files
173 temp1 = tempfile.NamedTemporaryFile(prefix=os.path.basename(file1))
174 temp2 = tempfile.NamedTemporaryFile(prefix=os.path.basename(file2))
175 debug('normalized_diff: %s -> %s / %s -> %s' % (file1, temp1.name, file2, temp2.name))
176 shutil.copyfile(file1, temp1.name)
177 shutil.copyfile(file2, temp2.name)
178 # Normalize them in place
179 _normalize_po_file(temp1.name, strip=strip)
180 _normalize_po_file(temp2.name, strip=strip)
181 # Now compare
182 try:
183 runcmd(['diff', '-u', temp1.name, temp2.name])
184 except subprocess.CalledProcessError as e:
185 return e.returncode
General Comments 0
You need to be logged in to leave comments. Login now