Mercurial > kallithea
changeset 8315:93dabafa567e
scripts/i18n: add command 'normalized-diff'
Add a command 'normalized-diff' that takes two (po) files and diff normalized
copies of them.
author | Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> |
---|---|
date | Thu, 07 Nov 2019 01:52:16 +0100 |
parents | ae9d205f4407 |
children | 46e78e583ed3 |
files | scripts/i18n scripts/i18n_utils.py |
diffstat | 2 files changed, 26 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/i18n Thu Dec 19 00:14:27 2019 +0100 +++ b/scripts/i18n Thu Nov 07 01:52:16 2019 +0100 @@ -14,6 +14,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +import sys + import click import i18n_utils @@ -48,6 +50,12 @@ for po_file in po_files: i18n_utils._normalize_po_file(po_file, strip=True) +@cli.command() +@click.argument('file1') +@click.argument('file2') +def normalized_diff(file1, file2): + """Compare two files while transparently normalizing them.""" + sys.exit(i18n_utils._normalized_diff(file1, file2, strip=True)) if __name__ == '__main__': cli()
--- a/scripts/i18n_utils.py Thu Dec 19 00:14:27 2019 +0100 +++ b/scripts/i18n_utils.py Thu Nov 07 01:52:16 2019 +0100 @@ -15,7 +15,9 @@ import os import re +import shutil import subprocess +import tempfile do_debug = False # set from scripts/i18n --debug @@ -165,3 +167,19 @@ normalized_content = _normalize_po(raw_content) dest.write(normalized_content) os.rename(po_tmp, po_file) + +def _normalized_diff(file1, file2, strip=False): + # Create temporary copies of both files + temp1 = tempfile.NamedTemporaryFile(prefix=os.path.basename(file1)) + temp2 = tempfile.NamedTemporaryFile(prefix=os.path.basename(file2)) + debug('normalized_diff: %s -> %s / %s -> %s' % (file1, temp1.name, file2, temp2.name)) + shutil.copyfile(file1, temp1.name) + shutil.copyfile(file2, temp2.name) + # Normalize them in place + _normalize_po_file(temp1.name, strip=strip) + _normalize_po_file(temp2.name, strip=strip) + # Now compare + try: + runcmd(['diff', '-u', temp1.name, temp2.name]) + except subprocess.CalledProcessError as e: + return e.returncode