diff --git a/scripts/Core/LineConveyor/LineConveyor.py b/scripts/Core/LineConveyor/LineConveyor.py new file mode 100644 index 0000000..3231185 --- /dev/null +++ b/scripts/Core/LineConveyor/LineConveyor.py @@ -0,0 +1,16 @@ +class LineConveyor: + def __init__(self): + self.processors = [] + + def addProcessor(self, processor): + assert processor is not None + + self.processors.append(processor) + + def processLine(self, line): + assert line is not None + + for processor in self.processors: + line = processor.processLine(line) + + return line diff --git a/scripts/Core/StepsRunner.py b/scripts/Core/StepsRunner.py index b805fc7..d106fcc 100644 --- a/scripts/Core/StepsRunner.py +++ b/scripts/Core/StepsRunner.py @@ -12,8 +12,11 @@ from commands.ValueProvider import ValueProvider class StepsRunner: - def __init__(self, config): + def __init__(self, config, compositeLineProcessor): assert config is not None + assert compositeLineProcessor is not None + + self.lineConveyor = compositeLineProcessor self.valueProvider = ValueProvider(config) @@ -36,14 +39,12 @@ class StepsRunner: lines = content.splitlines() for line in lines: - stripped = line.strip(' \t\n\r') + processedLine = self.lineConveyor.processLine(line) - if len(stripped) == 0: - continue - if stripped.startswith("#"): + if len(processedLine) == 0: continue else: - self.processLine(stripped) + self.processLine(processedLine) def processLine(self, line): if self.shCommandBuilder.isShCommand(line): diff --git a/scripts/taskRunner.py b/scripts/taskRunner.py index 7485576..57494de 100644 --- a/scripts/taskRunner.py +++ b/scripts/taskRunner.py @@ -1,4 +1,7 @@ import os +from Core.LineConveyor.CommentRemover import CommentRemover +from Core.LineConveyor.LineConveyor import LineConveyor +from Core.LineConveyor.Stripper import Stripper from utils.BuildConfigProvider import BuildConfigProvider from utils.FromFileSettingsProvider import FromFileSettingsProvider @@ -14,14 +17,18 @@ from Core.StepsRunner import StepsRunner class TaskRunner: def __init__(self): - pass + self.configsProvider = BuildConfigProvider() + self.settingsProvider = FromFileSettingsProvider() + + lineStripper = Stripper() + commentRemover = CommentRemover() + self.lineConveyor = LineConveyor() + self.lineConveyor.addProcessor(lineStripper) + self.lineConveyor.addProcessor(commentRemover) def run(self): - settingsProvider = FromFileSettingsProvider() - settings = settingsProvider.fetchSettings() - - configsProvider = BuildConfigProvider() - buildReadyConfigs = configsProvider.getConfigs(settings) + settings = self.settingsProvider.fetchSettings() + buildReadyConfigs = self.configsProvider.getConfigs(settings) for bc in buildReadyConfigs: self.runConfig(bc) @@ -29,7 +36,7 @@ class TaskRunner: def runConfig(self, config): content = self.getStepsContent(config) - stepsRunner = StepsRunner(config) + stepsRunner = StepsRunner(config, self.lineConveyor) stepsRunner.run(content) def getStepsContent(self, config):