summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/langstats.py
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2013-06-08 23:56:33 +0200
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2013-06-09 16:54:59 +0200
commit6b3c4beba4135681f0484d41ac096e1599939bd4 (patch)
tree274beced5c3fb3d59d8a935fb12b887a1ee35cac /rbutil/rbutilqt/langstats.py
parent43d8d6fece984b5ee3d4121a8982ac4919225d68 (diff)
downloadrockbox-6b3c4beba4135681f0484d41ac096e1599939bd4.tar.gz
rockbox-6b3c4beba4135681f0484d41ac096e1599939bd4.tar.bz2
rockbox-6b3c4beba4135681f0484d41ac096e1599939bd4.zip
Rework langstat.
- Generally improve code and make it compliant to PEP8. - Make it work with Python3 as well. Change-Id: I9e99999c59dc501664c36dd38fcb85fb60d6d9e6
Diffstat (limited to 'rbutil/rbutilqt/langstats.py')
-rwxr-xr-xrbutil/rbutilqt/langstats.py106
1 files changed, 56 insertions, 50 deletions
diff --git a/rbutil/rbutilqt/langstats.py b/rbutil/rbutilqt/langstats.py
index 0dae9b93a6..76f47450bd 100755
--- a/rbutil/rbutilqt/langstats.py
+++ b/rbutil/rbutilqt/langstats.py
@@ -26,12 +26,10 @@ import string
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"))
+sys.path.append(os.path.abspath(os.path.join(
+ os.path.dirname(os.path.realpath(__file__)), "../../utils/common")))
import gitscraper
@@ -63,11 +61,11 @@ gitpaths = [langbase]
def printhelp():
- print "Usage:", sys.argv[0], "[options]"
- print "Print translation statistics suitable for pasting in the wiki."
- print "Options:"
- print " --pretty: display pretty output instead of wiki-style"
- print " --help: show this help"
+ print("Usage:", sys.argv[0], "[options]")
+ print("Print translation statistics suitable for pasting in the wiki.")
+ print("Options:")
+ print(" --pretty: display pretty output instead of wiki-style")
+ print(" --help: show this help")
def main():
@@ -77,34 +75,36 @@ def main():
sys.exit(0)
if len(sys.argv) > 1:
if sys.argv[1] == '--pretty':
- pretty = 1
+ pretty = True
else:
- pretty = 0
+ pretty = False
# get gitpaths to temporary folder
workfolder = tempfile.mkdtemp() + "/"
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"])
+ 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()
+ 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()
- lines = re.split(r"\n", output[0])
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE,
+ cwd=projectfolder).communicate()
+ lines = re.split(r"\n", output[0].decode())
re_updating = re.compile(r"^Updating.*")
re_generated = re.compile(r"Generated.*")
re_ignored = re.compile(r"Ignored.*")
re_qmlang = re.compile(r"'.*/rbutil_(.*)\.qm'")
re_qmbase = re.compile(r"'.*/(rbutil_.*)\.qm'")
- re_genout = re.compile(r"[^0-9]([0-9]+) .*[^0-9]([0-9]+) .*[^0-9]([0-9]+) ")
+ re_genout = re.compile(
+ r"[^0-9]([0-9]+) .*[^0-9]([0-9]+) .*[^0-9]([0-9]+) ")
re_ignout = re.compile(r"([0-9]+) ")
# print header
@@ -114,25 +114,27 @@ def main():
if titlemax < cur:
titlemax = cur
- if pretty == 1:
+ if pretty:
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 |"
- print delim
- print "|" + " " * ((len(head) / 2 - len(tree) / 2) - 1) + str(tree) \
- + " " * ((len(head) / 2 - len(tree) / 2) - 1) + "|"
- print delim
- print head
- print delim
+ head = ("| {:%s} | {:6}|{:5}|{:5}|{:5}|{:5}| {:26}| {:16}|"
+ % titlemax).format("Language", "Code", "Trans", "Fin", "Unfin",
+ "Untr", "Updated", "Done")
+ print(delim)
+ print(("| {:^%s} |" % (len(head) - 4)).format(tree))
+ print(delim)
+ print(head)
+ print(delim)
else:
- 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* |"
+ r = "%s (%s)" % (str(tree),
+ gitscraper.get_file_timestamp(repo, tree, "."))
+ print("| *Translation status as of revision %s* ||||||||" % r)
+ print("| *Language* | *Language Code* | *Translations* "
+ "| *Finished* | *Unfinished* | *Untranslated* | *Updated* "
+ "| *Done* |")
# scan output
i = 0
@@ -140,20 +142,20 @@ def main():
line = lines[i]
if re_updating.search(line):
lang = re_qmlang.findall(line)
- tsfile = "rbutil/rbutilqt/lang/" + re_qmbase.findall(line)[0] + ".ts"
+ tsfile = "rbutil/rbutilqt/lang/%s.ts" % re_qmbase.findall(line)[0]
tsdate = filesprops[1][tsfile]
line = lines[i + 1]
if re_generated.search(line):
values = re_genout.findall(line)
- translations = string.atoi(values[0][0])
- finished = string.atoi(values[0][1])
- unfinished = string.atoi(values[0][2])
+ translations = int(values[0][0])
+ finished = int(values[0][1])
+ unfinished = int(values[0][2])
line = lines[i + 2]
if not line.strip():
line = lines[i + 3]
if re_ignored.search(line):
- ignored = string.atoi(re_ignout.findall(line)[0])
+ ignored = int(re_ignout.findall(line)[0])
else:
ignored = 0
if lang[0] in langs:
@@ -161,34 +163,38 @@ def main():
else:
name = '(unknown)'
- percent = (float(finished + unfinished) * 100 / float(translations + ignored))
+ percent = (finished + unfinished) * 100. / (translations + ignored)
bar = "#" * int(percent / 10)
if (percent % 10) > 5:
bar += "+"
bar += " " * (10 - len(bar))
- if pretty == 1:
+ if pretty:
fancylang = lang[0] + " " * (5 - len(lang[0]))
else:
fancylang = lang[0]
- status = [fancylang, translations, finished, unfinished, ignored, tsdate, percent, bar]
- if pretty == 1:
- thisname = name + (titlemax - len(name)) * " "
- print "| " + thisname + " | %5s | %3s | %3s | %3s | %3s | %25s | %3i%% %s |" % tuple(status)
+ if pretty:
+ print(("| {:%i} | {:5} | {:3} | {:3} | {:3} | {:3} | {:25} | "
+ "{:3}%% {} |"
+ % titlemax).format(
+ name, fancylang, translations, finished, unfinished,
+ ignored, tsdate, int(percent), bar))
else:
if percent > 90:
- color = '%%GREEN%%'
+ color = r'%GREEN%'
else:
if percent > 50:
- color = '%%ORANGE%%'
+ color = r'%ORANGE%'
else:
- color = '%%RED%%'
+ color = r'%RED%'
- text = "| " + name + " | %s | %s | %s | %s | %s | %s | " + color + "%3i%%%%ENDCOLOR%% %s |"
- print text % tuple(status)
+ print("| %s | %s | %s | %s | %s | %s | %s | %s %i%% "
+ "%%ENDCOLOR%% %s |" %
+ (name, fancylang, translations, finished, unfinished,
+ ignored, tsdate, color, percent, bar))
i += 1
- if pretty == 1:
- print delim
+ if pretty:
+ print(delim)
shutil.rmtree(workfolder)