mirror of
https://github.com/etlegacy/LegacyTransifexBot.git
synced 2024-11-22 04:11:06 +00:00
Fix prfromtransifex.py script.
As expected the script still had a lot of bugs. This fixes various syntax and logical flaws.
This commit is contained in:
parent
c658a41775
commit
b31a39a3e6
2 changed files with 54 additions and 43 deletions
|
@ -3,6 +3,8 @@
|
||||||
user = MumbleTransifexBot
|
user = MumbleTransifexBot
|
||||||
; Github password of bot
|
; Github password of bot
|
||||||
password =
|
password =
|
||||||
|
; Email used for commits
|
||||||
|
email = mumbletransifexbot@mumble.info
|
||||||
|
|
||||||
[transifex]
|
[transifex]
|
||||||
; Modes: default fetches all string, reviewed only reviewed ones
|
; Modes: default fetches all string, reviewed only reviewed ones
|
||||||
|
@ -10,7 +12,6 @@ mode = default
|
||||||
; Minimum number of percent needed for a translation to be included
|
; Minimum number of percent needed for a translation to be included
|
||||||
minpercent = 0
|
minpercent = 0
|
||||||
|
|
||||||
|
|
||||||
[workingrepo]
|
[workingrepo]
|
||||||
owner = MumbleTransifexBot
|
owner = MumbleTransifexBot
|
||||||
repo = mumble
|
repo = mumble
|
||||||
|
@ -44,7 +45,7 @@ commit = Transifex translation update
|
||||||
Minimum percent translated: %(minpercent)s
|
Minimum percent translated: %(minpercent)s
|
||||||
Matched %(langcount)d languages
|
Matched %(langcount)d languages
|
||||||
|
|
||||||
[misc]
|
[misc]
|
||||||
; File to store language bookkeeping data in
|
; File to store language bookkeeping data in
|
||||||
; Will be re-written and commited to the repository
|
; Will be re-written and commited to the repository
|
||||||
; if changes occur.
|
; if changes occur.
|
||||||
|
|
82
prfromtransifex.py
Normal file → Executable file
82
prfromtransifex.py
Normal file → Executable file
|
@ -39,13 +39,14 @@ import ConfigParser
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from logging import basicConfig, getLogger, DEBUG, INFO, WARNING, ERROR, debug, error, info, warning, exception
|
from logging import basicConfig, getLogger, DEBUG, INFO, WARNING, ERROR, debug, error, info, warning, exception
|
||||||
from github import Github
|
from github import Github
|
||||||
from plumbum.cmd import git, tx, cd
|
from plumbum.cmd import git, tx
|
||||||
from plumbum import ProcessExecutionError
|
from plumbum import ProcessExecutionError, local
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
def getExistingPullRequest(g, user, repo):
|
def getExistingPullRequest(g, user, repo):
|
||||||
s = g.search("type:pr is:open repo:%(repo)s author:%(user)s" % {'user': user,
|
s = g.search_issues("type:pr is:open repo:%(repo)s author:%(user)s" % {'user': user,
|
||||||
'repo': repo})
|
'repo': repo})
|
||||||
pullrequests = s.get_page(0)
|
pullrequests = s.get_page(0)
|
||||||
total = len(pullrequests)
|
total = len(pullrequests)
|
||||||
|
@ -95,6 +96,7 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
user = cfg.get('github', 'user')
|
user = cfg.get('github', 'user')
|
||||||
password = cfg.get('github', 'password')
|
password = cfg.get('github', 'password')
|
||||||
|
email = cfg.get('github', 'email')
|
||||||
|
|
||||||
mode = cfg.get('transifex', 'mode')
|
mode = cfg.get('transifex', 'mode')
|
||||||
minpercent = cfg.get('transifex', 'minpercent')
|
minpercent = cfg.get('transifex', 'minpercent')
|
||||||
|
@ -118,17 +120,24 @@ if __name__ == "__main__":
|
||||||
translationstemplate = cfg.get('misc', 'template')
|
translationstemplate = cfg.get('misc', 'template')
|
||||||
additionaltsfiles = cfg.get('misc', 'additionaltsfiles')
|
additionaltsfiles = cfg.get('misc', 'additionaltsfiles')
|
||||||
|
|
||||||
if args.setup:
|
if args.setup or not os.path.exists(wr_path):
|
||||||
info("Setting up git repo")
|
info("Setting up git repo")
|
||||||
debug(git["clone", wr_url, wr_path]())
|
debug(git["clone", wr_url, wr_path]())
|
||||||
debug(git["remote", "add", "target", tr_url]())
|
with local.cwd(wr_path):
|
||||||
|
debug(git["config", "user.name", user]())
|
||||||
|
debug(git["config", "user.email", email]())
|
||||||
|
debug(git["remote", "add", "target", tr_url]())
|
||||||
|
|
||||||
info("Done")
|
info("Done")
|
||||||
sys.exit(0)
|
|
||||||
|
if args.setup:
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
info("Checking for pending PR")
|
info("Checking for pending PR")
|
||||||
g = Github(user, password)
|
g = Github(user, password)
|
||||||
pr = getExistingPullRequest(user = user,
|
pr = getExistingPullRequest(g,
|
||||||
repo = tr_repo)
|
user = user,
|
||||||
|
repo = tr_owner + "/" + tr_repo)
|
||||||
if pr:
|
if pr:
|
||||||
info("Already have pending PR %d", pr.number)
|
info("Already have pending PR %d", pr.number)
|
||||||
# As long as we have a pending PR we want to make sure we
|
# As long as we have a pending PR we want to make sure we
|
||||||
|
@ -145,42 +154,43 @@ if __name__ == "__main__":
|
||||||
remote = "target"
|
remote = "target"
|
||||||
branch = tr_branch
|
branch = tr_branch
|
||||||
|
|
||||||
info("Updating remote '%s'", remote)
|
with local.cwd(wr_path):
|
||||||
debug(git["fetch", remote]()))
|
info("Updating remote '%s'", remote)
|
||||||
info("Resetting to branch '%s'", branch
|
debug(git["fetch", remote]())
|
||||||
debug(git["reset", remote + "/" + branch, "--hard"]())
|
info("Resetting to branch '%s'", branch)
|
||||||
info("Cleaning repository")
|
debug(git["reset", remote + "/" + branch, "--hard"]())
|
||||||
debug(git["clean", "-f", "-x", "-d"]())
|
info("Cleaning repository")
|
||||||
info("Pulling translations")
|
debug(git["clean", "-f", "-x", "-d"]())
|
||||||
|
info("Pulling translations")
|
||||||
|
|
||||||
txout = tx["pull", "-f", "--mode=" + mode, "--minimum-perc" + minpercent]()
|
txout = tx["pull", "-f", "-a", "--mode=" + mode, "--minimum-perc=" + minpercent]()
|
||||||
debug(txout)
|
debug(txout)
|
||||||
|
|
||||||
tfilepath = os.path.join(wr_path, translationsfile)
|
tfilepath = os.path.join(wr_path, translationsfile)
|
||||||
info("Updating translations listing file '%s'", tfilepath)
|
info("Updating translations listing file '%s'", tfilepath)
|
||||||
paths, files = zip(*re.findall(r"^\s->\s[\w_]+:\s([\w/\_]+/([\w_]+\.ts))$", t, flags=re.MULTILINE))
|
paths, files = zip(*re.findall(r"^\s->\s[\w_]+:\s([\w/\_]+/([\w_]+\.ts))$", txout, flags=re.MULTILINE))
|
||||||
debug(git["add"](*paths))
|
debug(git["add"](*paths))
|
||||||
translations = additionaltsfiles + " ".join(files)"
|
translations = additionaltsfiles + " " + (" ".join(sorted(files)))
|
||||||
|
|
||||||
with open(tfilepath, "w") as f:
|
with open(tfilepath, "w") as f:
|
||||||
f.write(translationstemplate % {'files': translations})
|
f.write(translationstemplate % {'files': translations})
|
||||||
|
|
||||||
debug(git["add"](tfilepath))
|
debug(git["add"](tfilepath))
|
||||||
|
|
||||||
debug("Checking for modifications")
|
debug("Checking for modifications")
|
||||||
changed, changedfiles, _ = git["diff", "--cached", "--name-only", "--exit-code"].run()
|
changed, changedfiles, _ = git["diff", "--cached", "--name-only", "--exit-code"].run(retcode=(0,1))
|
||||||
if not changed:
|
if not changed:
|
||||||
info("No changes to translations, done")
|
info("No changes to translations, done")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
debug("Changed files: %s", " ".join(os.linesep.split(changedfiles)))
|
debug("Changed files: %s", " ".join(os.linesep.split(changedfiles)))
|
||||||
|
|
||||||
info("Things changed & force pushing")
|
info("Things changed & force pushing")
|
||||||
debug(git["commit", "-m", pr_commit % {'mode': mode,
|
debug(git["commit", "-m", pr_commit % {'mode': mode,
|
||||||
'minpercent': minpercent,
|
'minpercent': minpercent,
|
||||||
'langcount': len(files)}]())
|
'langcount': len(files)}]())
|
||||||
|
|
||||||
debug(git["push", "-f", "origin", wr_branch]())
|
debug(git["push", "-f", "origin", wr_branch]())
|
||||||
|
|
||||||
if not pr:
|
if not pr:
|
||||||
info("No existing PR, creating new one")
|
info("No existing PR, creating new one")
|
||||||
|
|
Loading…
Reference in a new issue