d
This commit is contained in:
13
Utilities/platform/4/FeatureToggle.py
Normal file
13
Utilities/platform/4/FeatureToggle.py
Normal 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]
|
||||
11
Utilities/platform/4/Mode.py
Normal file
11
Utilities/platform/4/Mode.py
Normal 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
|
||||
7
Utilities/platform/4/Structure.py
Normal file
7
Utilities/platform/4/Structure.py
Normal 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
28
Utilities/platform/4/generate
Executable 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)
|
||||
28
Utilities/platform/4/generateFeatureToggle.py
Normal file
28
Utilities/platform/4/generateFeatureToggle.py
Normal 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)
|
||||
20
Utilities/platform/4/parseLines.py
Normal file
20
Utilities/platform/4/parseLines.py
Normal 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)
|
||||
8
Utilities/platform/4/readKeyValue.py
Normal file
8
Utilities/platform/4/readKeyValue.py
Normal file
@@ -0,0 +1,8 @@
|
||||
def readKeyValue(line):
|
||||
parts = line.split(": ")
|
||||
# Ключ со значением.
|
||||
if len(parts) == 2:
|
||||
return (parts[0], parts[1])
|
||||
|
||||
# Не является ключом со значением.
|
||||
return None
|
||||
Reference in New Issue
Block a user