okapi-batch-runner/okapi-batch-runner.py
2021-01-04 04:03:36 +01:00

70 lines
2.1 KiB
Python

import subprocess
import sys
import os
import re
import io
import glob
import configparser
import xml.etree.ElementTree as ET
from pathlib import Path
def select_item(welcome_text, items):
print(welcome_text+"\n")
for i, item in enumerate(items):
print('{}. {}'.format(i + 1, item))
try:
selected = input("\nSelect an option by typing its number (1-{}): ".format(len(items)))
result = items[int(selected) - 1]
return result
except KeyboardInterrupt:
print('User requested to exit')
exit()
except ValueError:
print('Error! Please enter only one number')
exit()
except IndexError:
print('Error! Please enter one number between 1-{}'.format(len(items)))
exit()
def get_filter(path):
return "filter"
config = configparser.ConfigParser()
config.read(os.path.join(sys.path[0],"config.ini"))
rainbow = config["Options"]["rainbow_exec"]
work_directory = sys.argv[1:]
list_projects = os.listdir(os.path.join(sys.path[0],"projects"))
project_folder = os.path.join(sys.path[0],"projects",select_item("Available projects:",list_projects))
project = os.path.join(project_folder,"project.rnb")
list_pipelines = [os.path.basename(x) for x in glob.glob(os.path.join(sys.path[0],"projects",project_folder,"*.pln"))]
pipeline = os.path.join(project_folder,select_item("Available pipelines:",list_pipelines))
project_config = configparser.ConfigParser()
project_config.read(os.path.join(project_folder,"project.ini"))
files = []
for directory in work_directory:
if any(Path(directory).rglob('*.*')):
for translationfile in Path(directory).rglob('*.*'):
filter = get_filter(translationfile)
if (filter != ""):
files.append((translationfile,filter))
project_tree = ET.parse(project)
root = project_tree.getroot()
elem = root.find("./fileSet[@id='1']")
for item in files:
new=ET.Element("fi",attrib={"fs":item[1]})
new.text=str(item[0])
elem.append(new)
project_tree.write("testproject.rnb",encoding="UTF-8",xml_declaration=True)
#subprocess.run([rainbow,"-p",project,"-pln",pipeline,"-np"])