Merge branch 'BS-21'
This commit is contained in:
commit
7f2b3fdeba
|
|
@ -1,4 +1,5 @@
|
||||||
sh echo hello from '{@author}'
|
sh echo hello from '{@author}'
|
||||||
|
sh echo version: '{@version}'
|
||||||
|
|
||||||
restore from backup
|
restore from backup
|
||||||
create backup for 'BuildSample'
|
create backup for 'BuildSample'
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ class SettingsLineParser(LineParser):
|
||||||
propPathRegexp = r"^(?P<prop_path>[\w.]+)"
|
propPathRegexp = r"^(?P<prop_path>[\w.]+)"
|
||||||
valueRegexp = "'(?P<value>.*)'"
|
valueRegexp = "'(?P<value>.*)'"
|
||||||
|
|
||||||
regexpSource = propPathRegexp + self.keywordToken('=') + valueRegexp
|
regexpSource = propPathRegexp + r'\s*=\s*' + valueRegexp
|
||||||
regexp = re.compile(regexpSource, re.UNICODE)
|
regexp = re.compile(regexpSource, re.UNICODE)
|
||||||
|
|
||||||
match = regexp.match(line)
|
match = regexp.match(line)
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ class SettingsMerger:
|
||||||
propName = segments[-1]
|
propName = segments[-1]
|
||||||
|
|
||||||
settingsDict = self.getSettingsDictByPath(globalSettings, propPath)
|
settingsDict = self.getSettingsDictByPath(globalSettings, propPath)
|
||||||
self.overrideGuard(settingsDict, propName, propPath)
|
#self.overrideGuard(settingsDict, propName, propPath)
|
||||||
|
|
||||||
settingsDict[propName] = value
|
settingsDict[propName] = value
|
||||||
|
|
||||||
|
|
@ -26,10 +26,10 @@ class SettingsMerger:
|
||||||
|
|
||||||
return settingsDict
|
return settingsDict
|
||||||
|
|
||||||
def overrideGuard(self, dictionary, key, path):
|
#def overrideGuard(self, dictionary, key, path):
|
||||||
if key in dictionary:
|
# if key in dictionary:
|
||||||
pathStr = '.'.join(path)
|
# pathStr = '.'.join(path)
|
||||||
msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dictionary[key], pathStr)
|
# msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dictionary[key], pathStr)
|
||||||
raise Exception(msg)
|
# raise Exception(msg)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,11 @@ from parser.SettingsParser.SettingsMerger import SettingsMerger
|
||||||
|
|
||||||
|
|
||||||
class SettingsParser:
|
class SettingsParser:
|
||||||
def __init__(self):
|
def __init__(self, settings=None):
|
||||||
self.settings = {}
|
self.settings = settings
|
||||||
|
|
||||||
|
if not self.settings:
|
||||||
|
self.settings = {}
|
||||||
|
|
||||||
def parse(self, content):
|
def parse(self, content):
|
||||||
assert content is not None
|
assert content is not None
|
||||||
|
|
@ -21,6 +24,7 @@ class SettingsParser:
|
||||||
self.processLine(stripped)
|
self.processLine(stripped)
|
||||||
|
|
||||||
def processLine(self, line):
|
def processLine(self, line):
|
||||||
|
assert line is not None
|
||||||
|
|
||||||
parser = SettingsLineParser()
|
parser = SettingsLineParser()
|
||||||
setting = parser.parseLine(line)
|
setting = parser.parseLine(line)
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
import os
|
import os
|
||||||
|
import argparse
|
||||||
from Core.LineConveyor.CommentRemover import CommentRemover
|
from Core.LineConveyor.CommentRemover import CommentRemover
|
||||||
from Core.LineConveyor.LineConveyor import LineConveyor
|
from Core.LineConveyor.LineConveyor import LineConveyor
|
||||||
from Core.LineConveyor.MacroResolver import MacroResolver
|
from Core.LineConveyor.MacroResolver import MacroResolver
|
||||||
from Core.LineConveyor.Stripper import Stripper
|
from Core.LineConveyor.Stripper import Stripper
|
||||||
from commands.ValueProvider import ValueProvider
|
from commands.ValueProvider import ValueProvider
|
||||||
from utils.BuildConfigProvider import BuildConfigProvider
|
from utils.BuildConfigProvider import BuildConfigProvider
|
||||||
from utils.FromFileSettingsProvider import FromFileSettingsProvider
|
|
||||||
from utils.MacroProcessor import MacroProcessor
|
from utils.MacroProcessor import MacroProcessor
|
||||||
|
from utils.SettingsProvider.CmdArgsOverriderSettingsProvider import CmdArgsOverriderSettingsProvider
|
||||||
|
from utils.SettingsProvider.FromFileSettingsProvider import FromFileSettingsProvider
|
||||||
|
|
||||||
scriptFilePath = os.path.abspath(__file__)
|
scriptFilePath = os.path.abspath(__file__)
|
||||||
|
|
||||||
|
|
@ -19,9 +22,11 @@ from Core.StepsRunner import StepsRunner
|
||||||
|
|
||||||
|
|
||||||
class TaskRunner:
|
class TaskRunner:
|
||||||
def __init__(self):
|
def __init__(self, settingsProvider):
|
||||||
|
assert settingsProvider is not None
|
||||||
|
|
||||||
|
self.settingsProvider = settingsProvider
|
||||||
self.configsProvider = BuildConfigProvider()
|
self.configsProvider = BuildConfigProvider()
|
||||||
self.settingsProvider = FromFileSettingsProvider()
|
|
||||||
|
|
||||||
lineStripper = Stripper()
|
lineStripper = Stripper()
|
||||||
commentRemover = CommentRemover()
|
commentRemover = CommentRemover()
|
||||||
|
|
@ -56,5 +61,12 @@ class TaskRunner:
|
||||||
content = stepsFile.read()
|
content = stepsFile.read()
|
||||||
return content
|
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()
|
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