Этот коммит содержится в:
Михаил Капелько
2024-01-29 18:09:14 +03:00
родитель a0f8e2d31e
Коммит 49cee91239
106 изменённых файлов: 112 добавлений и 12 удалений

13
Utilities/_platform/4/FeatureToggle.py Обычный файл
Просмотреть файл

@@ -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]

11
Utilities/_platform/4/Mode.py Обычный файл
Просмотреть файл

@@ -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

7
Utilities/_platform/4/Structure.py Обычный файл
Просмотреть файл

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

28
Utilities/_platform/4/generate Исполняемый файл
Просмотреть файл

@@ -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)

Просмотреть файл

@@ -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)

20
Utilities/_platform/4/parseLines.py Обычный файл
Просмотреть файл

@@ -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)

8
Utilities/_platform/4/readKeyValue.py Обычный файл
Просмотреть файл

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