This commit is contained in:
Михаил Капелько
2023-12-28 13:33:48 +03:00
parent 16026a7b47
commit d893364ff4
93 changed files with 2130 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
from readKeyValue import *
class FeatureToggle:
def __init__(self):
self.link = None
def parseLine(self, line):
kv = readKeyValue(line)
# Игнорируем всё, что не является ключом со значением.
if kv is None:
return
self.link = kv[1]

View File

@@ -0,0 +1,11 @@
class Mode:
def __init__(self):
self.reset()
def parseLine(self, line):
if line.startswith("featureToggle:"):
self.reset()
self.isFeatureToggle = True
def reset(self):
self.isFeatureToggle = False

View File

@@ -0,0 +1,7 @@
from FeatureToggle import *
class Structure:
def __init__(self):
self.dir = ""
self.module = ""
self.featureToggle = FeatureToggle()

28
Utilities/platform/4/generate Executable file
View File

@@ -0,0 +1,28 @@
#!/usr/bin/env python3
import os
import sys
from Structure import *
from generateFeatureToggle import *
from parseLines import *
DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
MODULE = sys.argv[1]
# Импорт из общей для всех генераторов директории.
sys.path.append(f"{DIR}/../common")
from readFile import *
print(f"Генерируем сборный модуль '{MODULE}'...")
MODULE_DIR = f"{DIR}/../../../Modules/{MODULE}"
FILE_IN = f"{MODULE_DIR}/{MODULE}.yml"
# Читаем файл и разбираем его на ключи-значения.
lines = readFile(FILE_IN)
structure = Structure()
parseLines(lines, structure)
structure.moduleDir = MODULE_DIR
structure.module = MODULE
# Генерируем модуль FeatureToggle.
generateFeatureToggle(structure)

View File

@@ -0,0 +1,28 @@
from pathlib import Path
def generateFeatureToggle(s):
# Пропускаем генерацию FeatureToggle, если не указана ссылка ivcsdbg
if s.featureToggle.link is None:
return
# Создаём директории модуля.
dirs = f"{s.moduleDir}/{s.module}FeatureToggle/src"
Path(dirs).mkdir(parents=True, exist_ok=True)
# Создаём YML для генератора-3.
content = f"""version: 3
# ВНИМАНИЕ Сгенерировано автоматом из файла {s.module}.yml
# ВНИМАНИЕ Не менять руками!
src: ChatsFeatureToggle
replace:
ChatsFeatureToggle: {s.module}FeatureToggle
ChatsFTCtrl: {s.module}FTCtrl
chats: {s.featureToggle.link}
"""
# Сохраняем YML.
fileName = f"{s.moduleDir}/{s.module}FeatureToggle/{s.module}FeatureToggle.yml"
with open(fileName, "w") as file:
file.write(content)

View File

@@ -0,0 +1,20 @@
from Mode import *
def parseLines(lines, structure):
mode = Mode()
for line in lines:
# Определяем режим строки.
mode.parseLine(line)
ln = line.strip()
# Игнорируем пустую строку.
if len(ln) == 0:
continue
# Игнорируем комментарий.
if ln.startswith("#"):
continue
# featureToggle.
if mode.isFeatureToggle:
structure.featureToggle.parseLine(ln)

View File

@@ -0,0 +1,8 @@
def readKeyValue(line):
parts = line.split(": ")
# Ключ со значением.
if len(parts) == 2:
return (parts[0], parts[1])
# Не является ключом со значением.
return None