|
- #!/usr/bin/env python3
- import os
- import sys
- from argparse import ArgumentParser
- from generation.generateStructure import *
- from generation.shortenName import *
- from generation.Result import *
- from parsing.parseLines import *
- from parsing.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 v2')
- 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")
- FILE_OUT_V1 = os.path.join(DIR_OUT, f"{MODULE}.SectionGenerated.swift")
- MODULE_SRC = args.source or f"{DIR}/../../../Modules/{PATH}/src"
-
- # Удаляем первую версию генерированного файла при его наличии.
- if os.path.isfile(FILE_OUT_V1):
- os.remove(FILE_OUT_V1)
-
- # Читаем файл и разбираем его на ключи-значения.
- lines = readFile(FILE_IN)
- structure = Structure()
- parseLines(lines, structure)
-
- # Генерируем код.
- result = Result(DIR, PATH, MODULE, readFile, shortenName, MODULE_SRC, structure)
- generateStructure(result)
-
- # Сохраняем файл.
- with open(FILE_OUT, "w") as file:
- file.write(result.file)
|