BuildScript/scripts/StepRunner/StepsRunner.py

56 lines
1.9 KiB
Python

from CommandBuilders.CleanBuildCommandBuilder import CleanBuildCommandBuilder
from CommandBuilders.CreateBackupCommandBuilder import CreateBackupCommandBuilder
from CommandBuilders.MakeDirsCommandBuilder import MakeDirsCommandBuilder
from CommandBuilders.RemoveProjectCommandBuilder import RemoveProjectCommandBuilder
from CommandBuilders.ShCommandBuilder import ShCommandBuilder
class StepsRunner:
def __init__(self, config):
assert config is not None
self.shCommandBuilder = ShCommandBuilder()
self.removeProjectBuilder = RemoveProjectCommandBuilder()
self.createBackupBuilder = CreateBackupCommandBuilder()
self.createDirs = MakeDirsCommandBuilder()
buildUtilPath = config['build_tool']
self.cleanBuilder = CleanBuildCommandBuilder(buildUtilPath, 'clean')
self.buildBuilder = CleanBuildCommandBuilder(buildUtilPath, 'build')
def run(self, content):
assert content is not None
lines = content.splitlines()
for line in lines:
stripped = line.strip(' \t\n\r')
if len(stripped) == 0:
continue
if stripped.startswith("#"):
continue
else:
self.processLine(stripped)
def processLine(self, line):
if self.shCommandBuilder.isShCommand(line):
cmd = self.shCommandBuilder.getCommandFor(line)
cmd.execute()
elif self.removeProjectBuilder.isRemoveProject(line):
cmd = self.removeProjectBuilder.getCommandFor(line)
cmd.execute()
elif self.cleanBuilder.isCleanBuild(line):
cmd = self.cleanBuilder.getCommandFor(line)
cmd.execute()
elif self.buildBuilder.isCleanBuild(line):
cmd = self.buildBuilder.getCommandFor(line)
cmd.execute()
elif self.createBackupBuilder.isCreateBackup(line):
cmd = self.createBackupBuilder.getCommandFor(line)
cmd.execute()
elif self.createDirs.isMakeDirsCommand(line):
cmd = self.createDirs.getCommandFor(line)
cmd.execute()
else:
msg = "unrecognised step. Line: '{0}'".format(line)
raise Exception(msg)