X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Fauxiliar%2Fcheck_translation.py;h=861e5eb95d9cfef63503c984bafeea19164e9451;hb=HEAD;hp=090b1fbe8a73811af2dd98c0d2c74f2078ca6aa3;hpb=38d7d319eabc906e82fb42002678c6d42a23b6f7;p=lilypond.git diff --git a/scripts/auxiliar/check_translation.py b/scripts/auxiliar/check_translation.py index 090b1fbe8a..861e5eb95d 100755 --- a/scripts/auxiliar/check_translation.py +++ b/scripts/auxiliar/check_translation.py @@ -1,9 +1,25 @@ #!/usr/bin/env python +# This file is part of LilyPond, the GNU music typesetter. +# +# LilyPond is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# LilyPond is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LilyPond. If not, see . + import __main__ import optparse import os import sys +import re import langdefs import buildlib @@ -18,7 +34,10 @@ def dir_lang (file, lang, lang_dir_index): path_components[lang_dir_index] = lang return os.path.join (*path_components) -def do_file (file_name, lang_codes, buildlib): +# ugh, this is complicated; where has the good old 'git rev-parse' gone? +vc_revision_parse = 'git log -1 --pretty=format:%%H %s' + +def do_file (file_name, lang_codes): if verbose: sys.stderr.write ('%s...\n' % file_name) split_file_name = file_name.split ('/') @@ -33,9 +52,27 @@ def do_file (file_name, lang_codes, buildlib): check_lang = lang if check_lang == C: raise Exception ('cannot determine language for ' + file_name) - - original = dir_lang (file_name, '', lang_dir_index) - translated_contents = open (file_name).read () + else: + if os.path.splitext (file_name)[1] == '.texidoc': + original = file_name.replace (os.path.join (check_lang, 'texidocs'), 'snippets', 1) + original = original.replace ('.texidoc', '.ly', 1) + else: + original = dir_lang (file_name, '', lang_dir_index) + translated_contents = open (file_name).read () + + ## experimental feature + if not touch_committishes in (current_revision, 'HEAD'): + (changes_in_original, error) = \ + buildlib.check_translated_doc (original, + file_name, + translated_contents, + upper_revision=touch_committishes) + if not error and not changes_in_original in ('', '\n'): + translated_contents = \ + buildlib.revision_re.sub ('GIT committish: ' + current_revision, + translated_contents, 1) + f = open (file_name, 'w').write (translated_contents) + return (diff_string, error) \ = buildlib.check_translated_doc (original, file_name, @@ -61,30 +98,38 @@ def do_file (file_name, lang_codes, buildlib): def usage (): sys.stdout.write (r''' Usage: -check-translation [--language=LANG] [--verbose] [--update] FILE... - -This script is licensed under the GNU GPL. +check-translation [--language=LANG] [--verbose] [--update] [-t COMMIT] FILE... ''') def do_options (): - global lang, verbose, update_mode, use_colors + global lang, verbose, update_mode, touch_committishes, use_colors - p = optparse.OptionParser (usage="check-translation [--language=LANG] [--verbose] FILE...", - description="This script is licensed under the GNU GPL.") + p = optparse.OptionParser (usage=\ +"check-translation [--language=LANG] [--verbose] [--update] [-t COMMIT] FILE...", + description="") p.add_option ("--language", action='store', - default='site', - dest="language") + default=C, + dest="language", + metavar='LL', + help="assume document language ISO 639 code LL by default") p.add_option ("--no-color", action='store_false', default=True, dest="color", - help="do not print ANSI-cooured output") + help="do not print ANSI-colored output") p.add_option ("--verbose", action='store_true', default=False, dest="verbose", help="print details, including executed shell commands") + p.add_option ('-t', + action='store', + default='HEAD', + dest="touch_committishes", + metavar='COMMIT', + help='[EXPERIMENTAL] update committishes of all files that were up to \ +date at commit COMMIT') p.add_option ('-u', "--update", action='store_true', default=False, @@ -96,22 +141,28 @@ def do_options (): lang = options.language use_colors = options.color update_mode = options.update_mode + touch_committishes = options.touch_committishes return files def main (): - global update_mode, text_editor + global update_mode, text_editor, touch_committishes, current_revision files = do_options () if 'EDITOR' in os.environ: text_editor = os.environ['EDITOR'] else: update_mode = False - buildlib.verbose = verbose + (parsed_revision, error) = buildlib.read_pipe (vc_revision_parse % touch_committishes) + if error: + sys.stderr.write ('warning: %s' % error) + else: + touch_committishes = parsed_revision.strip () + current_revision = buildlib.read_pipe (vc_revision_parse % 'HEAD')[0] for i in files: - do_file (i, langdefs.LANGDICT.keys (), buildlib) + do_file (i, langdefs.LANGDICT.keys ()) if __name__ == '__main__': main ()