Реализовал класс который предоставляет ссылки на готове к сборке конфигурации
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.SettingsLineParser import SettingsLineParser
|
||||||
|
from parser.SettingsParser.SettingsMerger import SettingsMerger
|
||||||
|
|
||||||
|
|
||||||
class SettingsParser:
|
class SettingsParser:
|
||||||
|
|
@ -11,7 +12,6 @@ class SettingsParser:
|
||||||
lines = content.splitlines()
|
lines = content.splitlines()
|
||||||
for line in lines:
|
for line in lines:
|
||||||
stripped = line.strip(' \t\n\r')
|
stripped = line.strip(' \t\n\r')
|
||||||
print (line, stripped)
|
|
||||||
|
|
||||||
if len(stripped) == 0:
|
if len(stripped) == 0:
|
||||||
continue
|
continue
|
||||||
|
|
@ -27,33 +27,6 @@ class SettingsParser:
|
||||||
|
|
||||||
self.mergeSetting(setting)
|
self.mergeSetting(setting)
|
||||||
|
|
||||||
def mergeSetting(self, setting):
|
def mergeSetting(self, settingDescription):
|
||||||
value = setting['value']
|
merger = SettingsMerger()
|
||||||
segments = setting['segments']
|
merger.merge(self.settings, settingDescription)
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
@ -9,5 +9,8 @@ ios.steps = 'IosSteps.txt'
|
||||||
android.steps = 'AndroidSteps.txt'
|
android.steps = 'AndroidSteps.txt'
|
||||||
|
|
||||||
# config settings
|
# config settings
|
||||||
|
ios.appstore.build_ready = 'true'
|
||||||
ios.appstore.app_name = 'CoolApp'
|
ios.appstore.app_name = 'CoolApp'
|
||||||
|
|
||||||
|
ios.staging.build_ready = 'true'
|
||||||
ios.staging.app_name = 'CoolApp staging'
|
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