49 строки
1.6 KiB
Python
Исполняемый файл
49 строки
1.6 KiB
Python
Исполняемый файл
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
from argparse import ArgumentParser
|
|
from generateStructure import *
|
|
from parseLines import *
|
|
from readModuleSrc import *
|
|
from Structure import *
|
|
|
|
DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
|
|
|
|
# Импорт из общей для всех генераторов директории.
|
|
sys.path.append(f"{DIR}/../common")
|
|
from modulePaths import *
|
|
from readFile import *
|
|
|
|
parser = ArgumentParser(prog='generate v3')
|
|
parser.add_argument('module', type=str,
|
|
help='the name of the module to generate')
|
|
parser.add_argument('-i', '--input', type=str,
|
|
help='The path and name of the input file')
|
|
parser.add_argument('-o', '--output', type=str,
|
|
help='The path of the output files')
|
|
parser.add_argument('-s', '--source', type=str,
|
|
help='The path of the source files')
|
|
|
|
args = parser.parse_args()
|
|
(PATH, MODULE) = modulePaths(args.module)
|
|
|
|
print(f"Generating platform for module '{PATH}'...")
|
|
|
|
FILE_IN = args.input or f"{DIR}/../../../Modules/{PATH}/{MODULE}.yml"
|
|
DIR_OUT = args.output or f"{DIR}/../../../Modules/{PATH}/src/"
|
|
FILE_OUT = os.path.join(DIR_OUT, f"{MODULE}.Generated.swift")
|
|
|
|
# Читаем файл и разбираем его на ключи-значения.
|
|
lines = readFile(FILE_IN)
|
|
structure = Structure()
|
|
parseLines(lines, structure)
|
|
ORIG_SRC = args.source or f"{DIR}/../../../Modules/{structure.src.name}/src"
|
|
structure.orig = readModuleSrc(ORIG_SRC, readFile)
|
|
|
|
# Генерируем код.
|
|
output = generateStructure(structure)
|
|
|
|
# Сохраняем файл.
|
|
with open(FILE_OUT, "w") as file:
|
|
file.write(output)
|