Реализовал класс который предоставляет ссылки на готове к сборке конфигурации
This commit is contained in:
parent
5dc42a9245
commit
88647c5d52
|
|
@ -0,0 +1,13 @@
|
|||
import os
|
||||
from parser.SettingsParser.SettingsParser import SettingsParser
|
||||
|
||||
|
||||
class FromFileSettingsProvider:
|
||||
def fetchSettings(self):
|
||||
settingsFile = open('settings.txt')
|
||||
content = settingsFile.read()
|
||||
|
||||
parser = SettingsParser()
|
||||
parser.parse(content)
|
||||
|
||||
return parser.settings
|
||||
|
|
@ -0,0 +1 @@
|
|||
__author__ = 'rzaitov'
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
from SettingsProvider.FromFileSettingsProvider import FromFileSettingsProvider
|
||||
from utils.configs.BuildConfigProvider import BuildConfigProvider
|
||||
|
||||
settingsProvider = FromFileSettingsProvider()
|
||||
settings = settingsProvider.fetchSettings()
|
||||
|
||||
buildReadyConfigs = []
|
||||
configsProvider = BuildConfigProvider()
|
||||
configsProvider.getBuildReadyConfigs(settings, buildReadyConfigs)
|
||||
|
||||
for bc in buildReadyConfigs:
|
||||
print bc
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
class SettingsMerger:
|
||||
def merge(self, globalSettings, settingDescription):
|
||||
value = settingDescription['value']
|
||||
segments = settingDescription['segments']
|
||||
|
||||
propPath = segments[0:-1]
|
||||
propName = segments[-1]
|
||||
|
||||
settingsDict = self.getSettingsDictByPath(globalSettings, propPath)
|
||||
self.overrideGuard(settingsDict, propName, propPath)
|
||||
|
||||
settingsDict[propName] = value
|
||||
|
||||
def getSettingsDictByPath(self, globalSettings, pathToSettingsDict):
|
||||
|
||||
settingsDict = globalSettings
|
||||
for segment in pathToSettingsDict:
|
||||
|
||||
if segment not in settingsDict:
|
||||
settingsDict[segment] = {}
|
||||
|
||||
settingsDict = settingsDict[segment]
|
||||
|
||||
return settingsDict
|
||||
|
||||
def overrideGuard(self, dict, key, path):
|
||||
if key in dict:
|
||||
pathStr = '.'.joun(path)
|
||||
msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dict[key], pathStr)
|
||||
raise Exception(msg)
|
||||
|
||||
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
from parser.SettingsParser.SettingsLineParser import SettingsLineParser
|
||||
from parser.SettingsParser.SettingsMerger import SettingsMerger
|
||||
|
||||
|
||||
class SettingsParser:
|
||||
|
|
@ -11,7 +12,6 @@ class SettingsParser:
|
|||
lines = content.splitlines()
|
||||
for line in lines:
|
||||
stripped = line.strip(' \t\n\r')
|
||||
print (line, stripped)
|
||||
|
||||
if len(stripped) == 0:
|
||||
continue
|
||||
|
|
@ -27,33 +27,6 @@ class SettingsParser:
|
|||
|
||||
self.mergeSetting(setting)
|
||||
|
||||
def mergeSetting(self, setting):
|
||||
value = setting['value']
|
||||
segments = setting['segments']
|
||||
|
||||
propPath = segments[0:-1]
|
||||
propName = segments[-1]
|
||||
|
||||
settingsDict = self.getSettingsDictByPath(propPath)
|
||||
self.overrideGuard(settingsDict, propName, propPath)
|
||||
|
||||
settingsDict[propName] = value
|
||||
|
||||
def getSettingsDictByPath(self, pathToSettingsDict):
|
||||
|
||||
settingsDict = self.settings
|
||||
for segment in pathToSettingsDict:
|
||||
|
||||
if segment not in settingsDict:
|
||||
settingsDict[segment] = {}
|
||||
|
||||
settingsDict = settingsDict[segment]
|
||||
|
||||
return settingsDict
|
||||
|
||||
def overrideGuard(self, dict, key, path):
|
||||
if key in dict:
|
||||
pathStr = '.'.joun(path)
|
||||
msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dict[key], pathStr)
|
||||
raise Exception(msg)
|
||||
|
||||
def mergeSetting(self, settingDescription):
|
||||
merger = SettingsMerger()
|
||||
merger.merge(self.settings, settingDescription)
|
||||
|
|
@ -9,5 +9,8 @@ ios.steps = 'IosSteps.txt'
|
|||
android.steps = 'AndroidSteps.txt'
|
||||
|
||||
# config settings
|
||||
ios.appstore.build_ready = 'true'
|
||||
ios.appstore.app_name = 'CoolApp'
|
||||
|
||||
ios.staging.build_ready = 'true'
|
||||
ios.staging.app_name = 'CoolApp staging'
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
class BuildConfigProvider:
|
||||
def getBuildReadyConfigs(self, settingsDict, buildReadyList):
|
||||
assert settingsDict is not None
|
||||
assert buildReadyList is not None
|
||||
|
||||
for key in settingsDict:
|
||||
value = settingsDict[key]
|
||||
|
||||
if type(value) is dict:
|
||||
self.getBuildReadyConfigs(value, buildReadyList)
|
||||
|
||||
elif key == 'build_ready' and value == 'true':
|
||||
buildReadyList.append(settingsDict)
|
||||
break
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
__author__ = 'rzaitov'
|
||||
Loading…
Reference in New Issue