BuildScript/scripts/taskRunner.py

61 lines
1.7 KiB
Python

import os
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
scriptFilePath = os.path.abspath(__file__)
scriptDir = os.path.dirname(scriptFilePath)
baseDir = os.path.join(scriptDir, os.pardir)
os.chdir(baseDir)
from Core.StepsRunner import StepsRunner
class TaskRunner:
def __init__(self):
self.configsProvider = BuildConfigProvider()
self.settingsProvider = FromFileSettingsProvider()
lineStripper = Stripper()
commentRemover = CommentRemover()
macroProcessor = MacroProcessor()
self.valueProvider = ValueProvider()
macroResolver = MacroResolver(macroProcessor, self.valueProvider)
self.lineConveyor = LineConveyor()
self.lineConveyor.addProcessor(lineStripper)
self.lineConveyor.addProcessor(commentRemover)
self.lineConveyor.addProcessor(macroResolver)
def run(self):
settings = self.settingsProvider.fetchSettings()
buildReadyConfigs = self.configsProvider.getConfigs(settings)
for bc in buildReadyConfigs:
self.valueProvider.setConfig(bc)
self.runConfig(bc)
def runConfig(self, config):
content = self.getStepsContent(config)
stepsRunner = StepsRunner(config, self.lineConveyor, self.valueProvider)
stepsRunner.run(content)
def getStepsContent(self, config):
pathToSteps = config['steps']
stepsFile = open(pathToSteps)
content = stepsFile.read()
return content
runner = TaskRunner()
runner.run()