Merge branch 'BS-21'

This commit is contained in:
rzaitov 2013-11-05 15:26:13 +04:00
commit 7f2b3fdeba
8 changed files with 64 additions and 13 deletions

View File

@ -1,4 +1,5 @@
sh echo hello from '{@author}'
sh echo version: '{@version}'
restore from backup
create backup for 'BuildSample'

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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()

View File

@ -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

View File

@ -0,0 +1 @@
__author__ = 'rzaitov'