предварительная обработка строк в файле настроек такая же как в файле шагов – обработка комментариев и удаление ведущих пробельных символов
This commit is contained in:
parent
6354c67bc3
commit
ee6442ecd0
|
|
@ -8,12 +8,12 @@ class TestCommentRemover(unittest.TestCase):
|
||||||
|
|
||||||
def test_startsWithComment(self):
|
def test_startsWithComment(self):
|
||||||
line = '# this line is comment'
|
line = '# this line is comment'
|
||||||
newLine = self.commentRemover.processText(line, self.commentRemover)
|
newLine = self.commentRemover.processText(line, None)
|
||||||
|
|
||||||
self.assertEqual('', newLine)
|
self.assertEqual('', newLine)
|
||||||
|
|
||||||
def test_containsComment(self):
|
def test_containsComment(self):
|
||||||
line = 'this line contains # a comment'
|
line = 'this line contains # a comment'
|
||||||
newLine = self.commentRemover.processText(line, self.commentRemover)
|
newLine = self.commentRemover.processText(line, None)
|
||||||
|
|
||||||
self.assertEqual('this line contains ', newLine)
|
self.assertEqual('this line contains ', newLine)
|
||||||
|
|
@ -3,7 +3,10 @@ from parsers.SettingsParser.SettingsMerger import SettingsMerger
|
||||||
|
|
||||||
|
|
||||||
class SettingsParser:
|
class SettingsParser:
|
||||||
def __init__(self, settings=None):
|
def __init__(self, compositeLineProcessor, settings=None):
|
||||||
|
assert compositeLineProcessor is not None
|
||||||
|
|
||||||
|
self.compositeLineProcessor = compositeLineProcessor
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
|
|
||||||
if not self.settings:
|
if not self.settings:
|
||||||
|
|
@ -14,14 +17,14 @@ class SettingsParser:
|
||||||
|
|
||||||
lines = content.splitlines()
|
lines = content.splitlines()
|
||||||
for line in lines:
|
for line in lines:
|
||||||
stripped = line.strip(' \t\n\r')
|
processedLine = self.compositeLineProcessor.processText(line, None)
|
||||||
|
|
||||||
if len(stripped) == 0:
|
if len(processedLine) == 0:
|
||||||
continue
|
|
||||||
if stripped.startswith("#"):
|
|
||||||
continue
|
continue
|
||||||
|
else:
|
||||||
|
self.processLine(processedLine)
|
||||||
|
|
||||||
self.processLine(stripped)
|
self.processLine(processedLine)
|
||||||
|
|
||||||
def processLine(self, line):
|
def processLine(self, line):
|
||||||
assert line is not None
|
assert line is not None
|
||||||
|
|
|
||||||
|
|
@ -26,17 +26,17 @@ scriptDir = os.path.dirname(scriptFilePath)
|
||||||
|
|
||||||
|
|
||||||
class TaskRunner:
|
class TaskRunner:
|
||||||
def __init__(self, settingsProvider, fileContentProvider, buildConfigProvider):
|
def __init__(self, settingsProvider, fileContentProvider, buildConfigProvider, linePreprocessor):
|
||||||
assert settingsProvider is not None
|
assert settingsProvider is not None
|
||||||
assert fileContentProvider is not None
|
assert fileContentProvider is not None
|
||||||
assert buildConfigProvider is not None
|
assert buildConfigProvider is not None
|
||||||
|
assert linePreprocessor is not None
|
||||||
|
|
||||||
self.settingsProvider = settingsProvider
|
self.settingsProvider = settingsProvider
|
||||||
self.fileContentProvider = fileContentProvider
|
self.fileContentProvider = fileContentProvider
|
||||||
self.configsProvider = buildConfigProvider
|
self.configsProvider = buildConfigProvider
|
||||||
|
self.linePreprocessor = linePreprocessor
|
||||||
|
|
||||||
lineStripper = Stripper()
|
|
||||||
commentRemover = CommentRemover()
|
|
||||||
|
|
||||||
macroProcessor = MacroProcessor()
|
macroProcessor = MacroProcessor()
|
||||||
self.valueProvider = ValueProvider()
|
self.valueProvider = ValueProvider()
|
||||||
|
|
@ -52,9 +52,6 @@ class TaskRunner:
|
||||||
self.textPreprocessor.addProcessor(macroResolver)
|
self.textPreprocessor.addProcessor(macroResolver)
|
||||||
self.textPreprocessor.addProcessor(textInclude)
|
self.textPreprocessor.addProcessor(textInclude)
|
||||||
|
|
||||||
self.linePreprocessor = TextConveyorPreprocessor()
|
|
||||||
self.linePreprocessor.addProcessor(commentRemover)
|
|
||||||
self.linePreprocessor.addProcessor(lineStripper)
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
rawSettings = self.settingsProvider.fetchSettings()
|
rawSettings = self.settingsProvider.fetchSettings()
|
||||||
|
|
@ -83,8 +80,16 @@ if __name__ == "__main__":
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
overrideArgs = parser.parse_known_args()[1]
|
overrideArgs = parser.parse_known_args()[1]
|
||||||
|
|
||||||
|
# компоную препроцессор для индивидуальной обработки строк (удаление комментариев и ведущих пробельных символов)
|
||||||
|
lineStripper = Stripper()
|
||||||
|
commentRemover = CommentRemover()
|
||||||
|
linePreprocessor = TextConveyorPreprocessor()
|
||||||
|
linePreprocessor.addProcessor(commentRemover)
|
||||||
|
linePreprocessor.addProcessor(lineStripper)
|
||||||
|
|
||||||
# TODO: перенести в корень комапановки
|
# TODO: перенести в корень комапановки
|
||||||
fromFileSettingsProvider = FromFileSettingsProvider()
|
settingsPath = 'scripts/settings.txt'
|
||||||
|
fromFileSettingsProvider = FromFileSettingsProvider(settingsPath, linePreprocessor)
|
||||||
overrideWithCmdSetProvider = CmdArgsOverriderSettingsProvider(fromFileSettingsProvider, overrideArgs)
|
overrideWithCmdSetProvider = CmdArgsOverriderSettingsProvider(fromFileSettingsProvider, overrideArgs)
|
||||||
|
|
||||||
fContentProvider = FileContentProvider()
|
fContentProvider = FileContentProvider()
|
||||||
|
|
@ -96,5 +101,5 @@ if __name__ == "__main__":
|
||||||
resolvedBuildConfigProvider = ResolvedBuildConfigProvider(predefineBuildConfigProvider)
|
resolvedBuildConfigProvider = ResolvedBuildConfigProvider(predefineBuildConfigProvider)
|
||||||
|
|
||||||
|
|
||||||
runner = TaskRunner(overrideWithCmdSetProvider, fContentProvider, resolvedBuildConfigProvider)
|
runner = TaskRunner(overrideWithCmdSetProvider, fContentProvider, resolvedBuildConfigProvider, linePreprocessor)
|
||||||
runner.run()
|
runner.run()
|
||||||
|
|
@ -3,14 +3,20 @@ from parsers.SettingsParser.SettingsParser import SettingsParser
|
||||||
|
|
||||||
|
|
||||||
class FromFileSettingsProvider(SettingsProviderBase):
|
class FromFileSettingsProvider(SettingsProviderBase):
|
||||||
def __init__(self):
|
def __init__(self, pathToSettings, compositeLineProcessor):
|
||||||
SettingsProviderBase.__init__(self)
|
SettingsProviderBase.__init__(self)
|
||||||
|
|
||||||
|
assert pathToSettings is not None
|
||||||
|
assert compositeLineProcessor is not None
|
||||||
|
|
||||||
|
self.pathToSettings = pathToSettings
|
||||||
|
self.compositeLineProcessor = compositeLineProcessor
|
||||||
|
|
||||||
def fetchSettings(self):
|
def fetchSettings(self):
|
||||||
settingsFile = open('scripts/settings.txt')
|
settingsFile = open(self.pathToSettings)
|
||||||
content = settingsFile.read()
|
content = settingsFile.read()
|
||||||
|
|
||||||
parser = SettingsParser()
|
parser = SettingsParser(self.compositeLineProcessor)
|
||||||
parser.parse(content)
|
parser.parse(content)
|
||||||
|
|
||||||
return parser.settings
|
return parser.settings
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue