| Index: grit/tool/diff_structures.py
|
| ===================================================================
|
| --- grit/tool/diff_structures.py (revision 0)
|
| +++ grit/tool/diff_structures.py (revision 0)
|
| @@ -0,0 +1,114 @@
|
| +#!/usr/bin/python2.4
|
| +# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +'''The 'grit sdiff' tool.
|
| +'''
|
| +
|
| +import os
|
| +import getopt
|
| +import tempfile
|
| +
|
| +from grit.node import structure
|
| +from grit.tool import interface
|
| +
|
| +from grit import constants
|
| +from grit import util
|
| +
|
| +# Builds the description for the tool (used as the __doc__
|
| +# for the DiffStructures class).
|
| +_class_doc = """\
|
| +Allows you to view the differences in the structure of two files,
|
| +disregarding their translateable content. Translateable portions of
|
| +each file are changed to the string "TTTTTT" before invoking the diff program
|
| +specified by the P4DIFF environment variable.
|
| +
|
| +Usage: grit sdiff [-t TYPE] [-s SECTION] [-e ENCODING] LEFT RIGHT
|
| +
|
| +LEFT and RIGHT are the files you want to diff. SECTION is required
|
| +for structure types like 'dialog' to identify the part of the file to look at.
|
| +ENCODING indicates the encoding of the left and right files (default 'cp1252').
|
| +TYPE can be one of the following, defaults to 'tr_html':
|
| +"""
|
| +for gatherer in structure._GATHERERS:
|
| + _class_doc += " - %s\n" % gatherer
|
| +
|
| +
|
| +class DiffStructures(interface.Tool):
|
| + __doc__ = _class_doc
|
| +
|
| + def __init__(self):
|
| + self.section = None
|
| + self.left_encoding = 'cp1252'
|
| + self.right_encoding = 'cp1252'
|
| + self.structure_type = 'tr_html'
|
| +
|
| + def ShortDescription(self):
|
| + return 'View differences without regard for translateable portions.'
|
| +
|
| + def Run(self, global_opts, args):
|
| + (opts, args) = getopt.getopt(args, 's:e:t:',
|
| + ['left_encoding=', 'right_encoding='])
|
| + for key, val in opts:
|
| + if key == '-s':
|
| + self.section = val
|
| + elif key == '-e':
|
| + self.left_encoding = val
|
| + self.right_encoding = val
|
| + elif key == '-t':
|
| + self.structure_type = val
|
| + elif key == '--left_encoding':
|
| + self.left_encoding = val
|
| + elif key == '--right_encoding':
|
| + self.right_encoding == val
|
| +
|
| + if len(args) != 2:
|
| + print "Incorrect usage - 'grit help sdiff' for usage details."
|
| + return 2
|
| +
|
| + if 'P4DIFF' not in os.environ:
|
| + print "Environment variable P4DIFF not set; defaulting to 'windiff'."
|
| + diff_program = 'windiff'
|
| + else:
|
| + diff_program = os.environ['P4DIFF']
|
| +
|
| + left_trans = self.MakeStaticTranslation(args[0], self.left_encoding)
|
| + try:
|
| + try:
|
| + right_trans = self.MakeStaticTranslation(args[1], self.right_encoding)
|
| +
|
| + os.system('%s %s %s' % (diff_program, left_trans, right_trans))
|
| + finally:
|
| + os.unlink(right_trans)
|
| + finally:
|
| + os.unlink(left_trans)
|
| +
|
| + def MakeStaticTranslation(self, original_filename, encoding):
|
| + """Given the name of the structure type (self.structure_type), the filename
|
| + of the file holding the original structure, and optionally the "section" key
|
| + identifying the part of the file to look at (self.section), creates a
|
| + temporary file holding a "static" translation of the original structure
|
| + (i.e. one where all translateable parts have been replaced with "TTTTTT")
|
| + and returns the temporary file name. It is the caller's responsibility to
|
| + delete the file when finished.
|
| +
|
| + Args:
|
| + original_filename: 'c:\\bingo\\bla.rc'
|
| +
|
| + Return:
|
| + 'c:\\temp\\werlkjsdf334.tmp'
|
| + """
|
| + original = structure._GATHERERS[self.structure_type].FromFile(
|
| + original_filename, extkey=self.section, encoding=encoding)
|
| + original.Parse()
|
| + translated = original.Translate(constants.CONSTANT_LANGUAGE, False)
|
| +
|
| + fname = tempfile.mktemp()
|
| + fhandle = file(fname, 'w')
|
| + writer = util.WrapOutputStream(fhandle)
|
| + writer.write("Original filename: %s\n=============\n\n" % original_filename)
|
| + writer.write(translated) # write in UTF-8
|
| + fhandle.close()
|
| +
|
| + return fname
|
|
|
| Property changes on: grit/tool/diff_structures.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|