def prepare_patch(random_str, repo_path, package_name, patch_content, branch_name):
    """
    This is for saving patch file, adding it to git and pushing back to ABF.
    :param random_str:
    :param repo_path: git URL to clone from (ssh, https)
    :param package_name: package name to open spec file from
    :param patch_content: text to write to patch file
    :return: nothing
    """
    settings = json.loads(load_settings())
    login = settings["abf_login"]
    password = settings["abf_password"]
    new_repo_path = repo_path[:8] + login + ":" + password + "@" + repo_path[8:]
    print(random_str)
    print(branch_name)
    call("cd " + path.expanduser('~') + "/ && git clone " + new_repo_path + " " + random_str +
         " && cd " + random_str + " && git checkout " + branch_name, shell=True)
    call("ls " + path.expanduser('~') + "/" + random_str, shell=True)
    call("touch " + path.expanduser('~') + "/" + random_str + "/" + random_str + ".patch", shell=True)
    with codecs.open("" + path.expanduser('~') + "/" + random_str + "/" + random_str + ".patch", "w",
                     "utf-8-sig") as temp:
        for file in json.loads(patch_content):
            temp.write("+++" + file["path"] + "\n" + "@@ -0,0 +1,3 @@" + "\n")
            for line in file["strings"]:
                temp.write(line["variable_name"] + "[ru]=" + line["value"]["ru"] + "\n")
    for file in json.loads(patch_content):
        with open("" + path.expanduser('~') + "/" + random_str + "/" + "somecontainment", "w") as concrete:
            concrete.write(file["containment"])
    call("cd " + path.expanduser('~') + "/" + random_str + "/ && git add " + random_str + ".patch", shell=True)
    call("sed -i \"1iPatch: " + random_str + ".patch\" " + path.expanduser(
        '~') + "/" + random_str + "/" + package_name + ".spec", shell=True)
Esempio n. 2
0
 def import_packages(self, json_data):
     data = json.loads(json_data)
     settings = json.loads(load_settings())
     translatable_strings = [f["name"] for f in settings["variables"]]
     group = settings["abf_projects_group"]
     if data["type"] == "files":
         values = data["values"]
         print(values)
         print(type(values))
         return json.dumps({"packages": [full_project_info(group, f, translatable_strings) for f in values]})
     elif data["type"] == "dir":
         values = data["values"]
         return json.dumps(
             {"packages": [full_project_info(group, f, translatable_strings) for f in os.listdir(values) if
                           ".rpm" == f[-4:] and ".src.rpm" != f[-8:]]})
     elif data["type"] == "custom":
         with_list = from_file_with_list(data["values"])
         return json.dumps(
             {"packages": [full_project_info(group, f, translatable_strings) for f in with_list if
                           ".rpm" == f[-4:]]})
     elif data["type"] == "repo":
         values_ = data["values"][0]
         files = mirror_repo_to_tmp(values_)
         f_ = {"packages": [full_project_info(group, f, translatable_strings) for f in files if
                            ".rpm" == f[-4:] and ".src.rpm" != f[-8:]]}
         result = json.dumps(f_)
         return result
Esempio n. 3
0
def prepare_patch(random_str, repo_path, package_name, patch_content, branch_name):
    """
    This is for saving patch file, adding it to git and pushing back to ABF.
    :param random_str:
    :param repo_path: git URL to clone from (ssh, https)
    :param package_name: package name to open spec file from
    :param patch_content: text to write to patch file
    :return: nothing
    """
    settings = json.loads(load_settings())
    login = settings["abf_login"]
    password = settings["abf_password"]
    new_repo_path = repo_path[:8] + login + ":" + password + "@" + repo_path[8:]
    print(random_str + " - " + package_name)
    call("cd " + path.expanduser('~') + "/ && git clone " + new_repo_path + " " + random_str +
         " && cd " + random_str + " && git checkout " + branch_name, shell=True, stdout=PIPE, stderr=PIPE)
    call("ls " + path.expanduser('~') + "/" + random_str, shell=True, stdout=PIPE)
    call("touch " + path.expanduser('~') + "/" + random_str + "/" + random_str + ".patch", shell=True, stdout=PIPE)

    with open("" + path.expanduser('~') + "/" + random_str + "/" + random_str + ".patch", "w") as concrete:
        for file in json.loads(patch_content):
            containment1 = [e + '\n' for e in file["containment"].split('\n') if e != ""]
            containment2 = containment1[:]
            for line in file["strings"]:
                containment2.append(line["variable_name"] + "[ru]=" + line["value"]["ru"] + "\n")
            for line in unified_diff(containment1, containment2, fromfile=file["path"], tofile=file["path"]):
                concrete.write(line)
    call("cd " + path.expanduser('~') + "/" + random_str + "/ && git add " + random_str + ".patch", shell=True,
         stdout=PIPE)
    call("sed -i \"1iPatch: " + random_str + ".patch\" " + path.expanduser(
        '~') + "/" + random_str + "/" + package_name + ".spec", shell=True, stdout=PIPE)
 def commit_translations_patch(self, translations):
     print(translations)
     asd = json.loads(translations)
     settings = json.loads(load_settings())
     branch = [b["name"] for b in settings["branches"] if b["active"]][0]
     random_str = uuid.uuid4().hex.capitalize()
     prepare_patch(random_str, asd["git"], asd["package_name"], json.dumps(asd["desktop_files"]), branch)
     return json.dumps({"status": "ok"})
Esempio n. 5
0
from settings_keeper import load_settings

print(load_settings())
Esempio n. 6
0
 def get_settings(self):
     return load_settings()
Esempio n. 7
0
 def get_translation(self, text):
     yandex_api_key = json.loads(load_settings())["yandex_api_key"]
     return json.dumps({"value": translate(yandex_api_key, "en-ru", text)})
Esempio n. 8
0
import uuid

import argparse

from yaml_importer import from_file_with_list

parser = argparse.ArgumentParser(description='Translate some packages')
parser.add_argument('--git-branch', dest="git_branch", default="master")
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--prepare', dest='target', action='store_const', const='prepare')
group.add_argument('--translate', dest='target', action='store_const', const='translate')
group.add_argument('--commit', dest='target', action='store_const', const='commit')
parser.add_argument('file', metavar='filename.yml', type=str,
                    help='an integer for the accumulator')
args = parser.parse_args()
settings = json.loads(settings_keeper.load_settings())
project_group = settings["abf_projects_group"]
yandex_api_key = settings["yandex_api_key"]

assert translate(yandex_api_key, "en-ru",
                 "Lazy cat jumps over talking dog") == "Ленивый кот перепрыгивает через говорящая собака"

project_info = [full_project_info(project_group, f, ["Name", "Comment"]) for f in from_file_with_list(args.file)]

for one in project_info:
    random_str = uuid.uuid4().hex.capitalize()
    for f in one["desktop_files"]:
        for i in f["strings"]:
            if args.target in ['translate', 'commit']:
                i["value"]["ru"] = translate(yandex_api_key, "en-ru", i["value"]["en"])
            else:
import uuid

import argparse

from yaml_importer import from_file_with_list

parser = argparse.ArgumentParser(description='Translate some packages')
parser.add_argument('--git-branch')
group = parser.add_mutually_exclusive_group()
group.add_argument('--prepare', dest='target', action='store_const', const='prepare')
group.add_argument('--translate', dest='target', action='store_const', const='translate')
group.add_argument('--commit', dest='target', action='store_const', const='commit')
parser.add_argument('file', metavar='filename.yml', type=str,
                    help='an integer for the accumulator')
args = parser.parse_args()
settings = settings_keeper.load_settings()
project_group = settings["abf_projects_group"]
yandex_api_key = settings["yandex_api_key"]

assert translate(yandex_api_key, "en-ru",
                 "Lazy cat jumps over talking dog") == "Ленивый кот перепрыгивает через говорящая собака"

for f in from_file_with_list(args.file):
    print(full_project_info(project_group, f, ["Name", "Comment"]))
project_info = [full_project_info(project_group, f, ["Name", "Comment"]) for f in filter_input(inner)]
print(json.dumps(project_info))
translated_files = ""

for one in project_info:
    for f in one["desktop_files"]:
        print(str(f["path"]))