diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2012-04-29 11:46:25 +0200 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2012-04-29 11:48:07 +0200 |
commit | 4b256de1ec4c370dd1c3479ce127d109a917bc6a (patch) | |
tree | c2e6933e207a1152e209301d30947e4bd6e800aa /rbutil | |
parent | 91cf4a77687e650ff92e8129424955cea692d875 (diff) |
langstat: update for git.
Use gitscraper for retrieving files from the repository and update output a
bit. Fix some pep8 errors while at it.
Change-Id: Iff05bc916decb28bed99b83d9a32ce344d5c613b
Diffstat (limited to 'rbutil')
-rwxr-xr-x | rbutil/rbutilqt/langstats.py | 139 |
1 files changed, 50 insertions, 89 deletions
diff --git a/rbutil/rbutilqt/langstats.py b/rbutil/rbutilqt/langstats.py index f415237f4f..0dae9b93a6 100755 --- a/rbutil/rbutilqt/langstats.py +++ b/rbutil/rbutilqt/langstats.py @@ -5,7 +5,6 @@ # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # \/ \/ \/ \/ \/ -# $Id$ # # Copyright (c) 2010 Dominik Riebeling # @@ -24,48 +23,44 @@ import subprocess import re import sys import string -import pysvn import tempfile import os import shutil from datetime import date import time +# extend search path for gitscraper +sys.path.append(os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + + "/../../utils/common")) +import gitscraper + langs = { - 'cs' : 'Czech', - 'de' : 'German', - 'fi' : 'Finnish', - 'fr' : 'French', - 'gr' : 'Greek', - 'he' : 'Hebrew', - 'it' : 'Italian', - 'ja' : 'Japanese', - 'nl' : 'Dutch', - 'pl' : 'Polish', - 'pt' : 'Portuguese', - 'pt_BR' : 'Portuguese (Brasileiro)', - 'ru' : 'Russian', - 'tr' : 'Turkish', - 'zh_CN' : 'Chinese', - 'zh_TW' : 'Chinese (trad)' + 'cs': 'Czech', + 'de': 'German', + 'fi': 'Finnish', + 'fr': 'French', + 'gr': 'Greek', + 'he': 'Hebrew', + 'it': 'Italian', + 'ja': 'Japanese', + 'nl': 'Dutch', + 'pl': 'Polish', + 'pt': 'Portuguese', + 'pt_BR': 'Portuguese (Brasileiro)', + 'ru': 'Russian', + 'tr': 'Turkish', + 'zh_CN': 'Chinese', + 'zh_TW': 'Chinese (trad)' } -# modules that are not part of python itself. -try: - import pysvn -except ImportError: - print "Fatal: This script requires the pysvn package to run." - print " See http://pysvn.tigris.org/." - sys.exit(-5) - -svnserver = "svn://svn.rockbox.org/rockbox/trunk/" -langbase = "rbutil/rbutilqt/" +langbase = "rbutil/rbutilqt/" # Paths and files to retrieve from svn. # This is a mixed list, holding both paths and filenames. # Get cpp sources as well for lupdate to work. -svnpaths = [ langbase ] +gitpaths = [langbase] + def printhelp(): print "Usage:", sys.argv[0], "[options]" @@ -75,36 +70,6 @@ def printhelp(): print " --help: show this help" -def gettrunkrev(svnsrv): - '''Get the revision of trunk for svnsrv''' - client = pysvn.Client() - entries = client.info2(svnsrv, recurse=False) - return entries[0][1].rev.number - - -def getsources(svnsrv, filelist, dest): - '''Get the files listed in filelist from svnsrv and put it at dest.''' - client = pysvn.Client() - print "Checking out sources from %s, please wait." % svnsrv - - for elem in filelist: - url = re.subn('/$', '', svnsrv + elem)[0] - destpath = re.subn('/$', '', dest + elem)[0] - # make sure the destination path does exist - d = os.path.dirname(destpath) - if not os.path.exists(d): - os.makedirs(d) - # get from svn - try: - client.export(url, destpath) - except: - print "SVN client error: %s" % sys.exc_value - print "URL: %s, destination: %s" % (url, destpath) - return -1 - print "Checkout finished." - return 0 - - def main(): if len(sys.argv) > 1: if sys.argv[1] == '--help': @@ -116,17 +81,22 @@ def main(): else: pretty = 0 - # get svnpaths to temporary folder + # get gitpaths to temporary folder workfolder = tempfile.mkdtemp() + "/" - getsources(svnserver, svnpaths, workfolder) + repo = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) + tree = gitscraper.get_refs(repo)['refs/remotes/origin/master'] + filesprops = gitscraper.scrape_files(repo, tree, gitpaths, dest=workfolder, + timestamp_files=["rbutil/rbutilqt/lang"]) projectfolder = workfolder + langbase # lupdate translations and drop all obsolete translations - subprocess.Popen(["lupdate-qt4", "-no-obsolete", "rbutilqt.pro"], \ - stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=projectfolder).communicate() + subprocess.Popen(["lupdate-qt4", "-no-obsolete", "rbutilqt.pro"], + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + cwd=projectfolder).communicate() # lrelease translations to get status - output = subprocess.Popen(["lrelease-qt4", "rbutilqt.pro"], stdout=subprocess.PIPE, \ - stderr=subprocess.PIPE, cwd=projectfolder).communicate() + output = subprocess.Popen(["lrelease-qt4", "rbutilqt.pro"], + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + cwd=projectfolder).communicate() lines = re.split(r"\n", output[0]) re_updating = re.compile(r"^Updating.*") @@ -145,38 +115,33 @@ def main(): titlemax = cur if pretty == 1: - delim = "+-" + titlemax * "-" \ - + "-+-------+-----+-----+-----+-----+--------------------+-----------------+" + spaces = [7, 5, 5, 5, 5, 27, 17] + delim = "+--" + titlemax * "-" + for s in spaces: + delim += "+" + "-" * s + delim += "+" head = "| Language" + (titlemax - 8) * " " \ - + " | Code |Trans| Fin |Unfin| Untr| Updated | Done |" + + " | Code |Trans| Fin |Unfin| Untr| Updated | Done |" print delim - print "|" + " " * (len(head) / 2 - 3) + str(gettrunkrev(svnserver)) \ - + " " * (len(head) / 2 - 4) + "|" + print "|" + " " * ((len(head) / 2 - len(tree) / 2) - 1) + str(tree) \ + + " " * ((len(head) / 2 - len(tree) / 2) - 1) + "|" print delim print head print delim else: - print "| *Translation status as of revision " + str(gettrunkrev(svnserver)) + "* ||||||||" + r = str(tree) + " (" + gitscraper.get_file_timestamp(repo, tree, ".") + ")" + print "| *Translation status as of revision " + r + "* ||||||||" print "| *Language* | *Language Code* | *Translations* | *Finished* | " \ "*Unfinished* | *Untranslated* | *Updated* | *Done* |" - client = pysvn.Client() # scan output i = 0 - tslateststamp = 0 - tsoldeststamp = time.time() while i < len(lines): line = lines[i] if re_updating.search(line): lang = re_qmlang.findall(line) - tsfile = "lang/" + re_qmbase.findall(line)[0] + ".ts" - fileinfo = client.info2(svnserver + langbase + tsfile)[0][1] - tsrev = fileinfo.last_changed_rev.number - tsdate = date.fromtimestamp(fileinfo.last_changed_date).isoformat() - if fileinfo.last_changed_date > tslateststamp: - tslateststamp = fileinfo.last_changed_date - if fileinfo.last_changed_date < tsoldeststamp: - tsoldeststamp = fileinfo.last_changed_date + tsfile = "rbutil/rbutilqt/lang/" + re_qmbase.findall(line)[0] + ".ts" + tsdate = filesprops[1][tsfile] line = lines[i + 1] if re_generated.search(line): @@ -191,7 +156,7 @@ def main(): ignored = string.atoi(re_ignout.findall(line)[0]) else: ignored = 0 - if langs.has_key(lang[0]): + if lang[0] in langs: name = langs[lang[0]].strip() else: name = '(unknown)' @@ -205,11 +170,10 @@ def main(): fancylang = lang[0] + " " * (5 - len(lang[0])) else: fancylang = lang[0] - tsversion = str(tsrev) + " (" + tsdate + ")" - status = [fancylang, translations, finished, unfinished, ignored, tsversion, percent, bar] + status = [fancylang, translations, finished, unfinished, ignored, tsdate, percent, bar] if pretty == 1: thisname = name + (titlemax - len(name)) * " " - print "| " + thisname + " | %5s | %3s | %3s | %3s | %3s | %6s | %3i%% %s |" % tuple(status) + print "| " + thisname + " | %5s | %3s | %3s | %3s | %3s | %25s | %3i%% %s |" % tuple(status) else: if percent > 90: color = '%%GREEN%%' @@ -226,11 +190,8 @@ def main(): if pretty == 1: print delim - print "Last language updated on " + date.fromtimestamp(tslateststamp).isoformat() - print "Oldest language update was " + date.fromtimestamp(tsoldeststamp).isoformat() shutil.rmtree(workfolder) if __name__ == "__main__": main() - |