Merge branch 'BS-21'
This commit is contained in:
commit
7f2b3fdeba
|
|
@ -1,4 +1,5 @@
|
|||
sh echo hello from '{@author}'
|
||||
sh echo version: '{@version}'
|
||||
|
||||
restore from backup
|
||||
create backup for 'BuildSample'
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class SettingsLineParser(LineParser):
|
|||
propPathRegexp = r"^(?P<prop_path>[\w.]+)"
|
||||
valueRegexp = "'(?P<value>.*)'"
|
||||
|
||||
regexpSource = propPathRegexp + self.keywordToken('=') + valueRegexp
|
||||
regexpSource = propPathRegexp + r'\s*=\s*' + valueRegexp
|
||||
regexp = re.compile(regexpSource, re.UNICODE)
|
||||
|
||||
match = regexp.match(line)
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ class SettingsMerger:
|
|||
propName = segments[-1]
|
||||
|
||||
settingsDict = self.getSettingsDictByPath(globalSettings, propPath)
|
||||
self.overrideGuard(settingsDict, propName, propPath)
|
||||
#self.overrideGuard(settingsDict, propName, propPath)
|
||||
|
||||
settingsDict[propName] = value
|
||||
|
||||
|
|
@ -26,10 +26,10 @@ class SettingsMerger:
|
|||
|
||||
return settingsDict
|
||||
|
||||
def overrideGuard(self, dictionary, key, path):
|
||||
if key in dictionary:
|
||||
pathStr = '.'.join(path)
|
||||
msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dictionary[key], pathStr)
|
||||
raise Exception(msg)
|
||||
#def overrideGuard(self, dictionary, key, path):
|
||||
# if key in dictionary:
|
||||
# pathStr = '.'.join(path)
|
||||
# msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dictionary[key], pathStr)
|
||||
# raise Exception(msg)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,11 @@ from parser.SettingsParser.SettingsMerger import SettingsMerger
|
|||
|
||||
|
||||
class SettingsParser:
|
||||
def __init__(self):
|
||||
self.settings = {}
|
||||
def __init__(self, settings=None):
|
||||
self.settings = settings
|
||||
|
||||
if not self.settings:
|
||||
self.settings = {}
|
||||
|
||||
def parse(self, content):
|
||||
assert content is not None
|
||||
|
|
@ -21,6 +24,7 @@ class SettingsParser:
|
|||
self.processLine(stripped)
|
||||
|
||||
def processLine(self, line):
|
||||
assert line is not None
|
||||
|
||||
parser = SettingsLineParser()
|
||||
setting = parser.parseLine(line)
|
||||
|
|
|
|||
|
|
@ -1,12 +1,15 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import argparse
|
||||
from Core.LineConveyor.CommentRemover import CommentRemover
|
||||
from Core.LineConveyor.LineConveyor import LineConveyor
|
||||
from Core.LineConveyor.MacroResolver import MacroResolver
|
||||
from Core.LineConveyor.Stripper import Stripper
|
||||
from commands.ValueProvider import ValueProvider
|
||||
from utils.BuildConfigProvider import BuildConfigProvider
|
||||
from utils.FromFileSettingsProvider import FromFileSettingsProvider
|
||||
from utils.MacroProcessor import MacroProcessor
|
||||
from utils.SettingsProvider.CmdArgsOverriderSettingsProvider import CmdArgsOverriderSettingsProvider
|
||||
from utils.SettingsProvider.FromFileSettingsProvider import FromFileSettingsProvider
|
||||
|
||||
scriptFilePath = os.path.abspath(__file__)
|
||||
|
||||
|
|
@ -19,9 +22,11 @@ from Core.StepsRunner import StepsRunner
|
|||
|
||||
|
||||
class TaskRunner:
|
||||
def __init__(self):
|
||||
def __init__(self, settingsProvider):
|
||||
assert settingsProvider is not None
|
||||
|
||||
self.settingsProvider = settingsProvider
|
||||
self.configsProvider = BuildConfigProvider()
|
||||
self.settingsProvider = FromFileSettingsProvider()
|
||||
|
||||
lineStripper = Stripper()
|
||||
commentRemover = CommentRemover()
|
||||
|
|
@ -56,5 +61,12 @@ class TaskRunner:
|
|||
content = stepsFile.read()
|
||||
return content
|
||||
|
||||
runner = TaskRunner()
|
||||
parser = argparse.ArgumentParser()
|
||||
overrideArgs = parser.parse_known_args()[1]
|
||||
|
||||
# TODO: перенести в корень комапановки
|
||||
fromFileSettingsProvider = FromFileSettingsProvider()
|
||||
settingsProvider = CmdArgsOverriderSettingsProvider(fromFileSettingsProvider, overrideArgs)
|
||||
|
||||
runner = TaskRunner(settingsProvider)
|
||||
runner.run()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
import select
|
||||
from parser.SettingsParser.SettingsParser import SettingsParser
|
||||
|
||||
|
||||
class CmdArgsOverriderSettingsProvider:
|
||||
def __init__(self, settingsProvider, settingLines):
|
||||
assert settingsProvider is not None
|
||||
|
||||
self.inner = settingsProvider
|
||||
self.overrideSettings = settingLines
|
||||
|
||||
def fetchSettings(self):
|
||||
settings = self.inner.fetchSettings()
|
||||
|
||||
if self.overrideSettings:
|
||||
for s in self.overrideSettings:
|
||||
line = self.normalizeLine(s)
|
||||
settingParser = SettingsParser(settings)
|
||||
settingParser.processLine(line)
|
||||
|
||||
return settings
|
||||
|
||||
|
||||
def normalizeLine(self, line):
|
||||
assert line is not None
|
||||
assert '=' in line
|
||||
|
||||
index = line.find('=')
|
||||
path = line[0:index]
|
||||
value = line[index + 1:]
|
||||
|
||||
normalizedLine = "{0} = '{1}'".format(path, value)
|
||||
return normalizedLine
|
||||
|
|
@ -0,0 +1 @@
|
|||
__author__ = 'rzaitov'
|
||||
Loading…
Reference in New Issue