Merge branch 'BS-18'
This commit is contained in:
commit
eda1151342
|
|
@ -3,11 +3,6 @@ from parser.CopyParser.CopyLineParser import CopyLineParser
|
|||
|
||||
|
||||
class CopyCommandBuilder:
|
||||
def __init__(self, pathProvider):
|
||||
assert pathProvider is not None
|
||||
|
||||
self.__pathProvider = pathProvider
|
||||
|
||||
def isCopy(self, line):
|
||||
assert line is not None
|
||||
|
||||
|
|
@ -19,5 +14,5 @@ class CopyCommandBuilder:
|
|||
parser = CopyLineParser()
|
||||
cpArg = parser.parseLine(line)
|
||||
|
||||
command = CopyCommand(self.__pathProvider, cpArg)
|
||||
command = CopyCommand(cpArg)
|
||||
return command
|
||||
|
|
|
|||
|
|
@ -3,11 +3,6 @@ from parser.BackupParser.CreateBackupParser import CreateBackupParser
|
|||
|
||||
|
||||
class CreateBackupCommandBuilder:
|
||||
def __init__(self, pathProvider):
|
||||
assert pathProvider is not None
|
||||
|
||||
self.__pathProvider = pathProvider
|
||||
|
||||
def isCreateBackup(self, line):
|
||||
assert line is not None
|
||||
|
||||
|
|
@ -20,5 +15,5 @@ class CreateBackupCommandBuilder:
|
|||
parser = CreateBackupParser()
|
||||
backupArguments = parser.parseLine(line)
|
||||
|
||||
command = CreateBackupCommand(self.__pathProvider, backupArguments)
|
||||
command = CreateBackupCommand(backupArguments)
|
||||
return command
|
||||
|
|
|
|||
|
|
@ -3,10 +3,6 @@ from parser.BackupParser.DeleteBackupParser import DeleteBackupParser
|
|||
|
||||
|
||||
class DeleteBackupCommandBuilder:
|
||||
def __init__(self, pathProvider):
|
||||
assert pathProvider is not None
|
||||
self.__pathProvider = pathProvider
|
||||
|
||||
def isDeleteBackup(self, line):
|
||||
assert line is not None
|
||||
|
||||
|
|
@ -21,5 +17,5 @@ class DeleteBackupCommandBuilder:
|
|||
parser = DeleteBackupParser()
|
||||
parser.parseLine(line)
|
||||
|
||||
command = DeleteBackupCommand(self.__pathProvider)
|
||||
command = DeleteBackupCommand()
|
||||
return command
|
||||
|
|
|
|||
|
|
@ -3,13 +3,11 @@ from parser.InsideParser.InsideSetParser import InsideSetParser
|
|||
|
||||
|
||||
class PatchCsprojCommandBuilder:
|
||||
def __init__(self, config, pathProvider, valueProvider):
|
||||
def __init__(self, config, valueProvider):
|
||||
assert config is not None
|
||||
assert pathProvider is not None
|
||||
assert valueProvider is not None
|
||||
|
||||
self.__config = config
|
||||
self.__pathProvider = pathProvider
|
||||
self.__valueProvider = valueProvider
|
||||
|
||||
def getCommandFor(self, line):
|
||||
|
|
@ -18,12 +16,20 @@ class PatchCsprojCommandBuilder:
|
|||
parser = InsideSetParser(self.__valueProvider, 'csproj')
|
||||
result = parser.parseLine(line)
|
||||
|
||||
relPath = result[0]
|
||||
csprojPath = result[0]
|
||||
key = result[1]
|
||||
value = self.__valueProvider.getValueFor(result[2])
|
||||
|
||||
csprojAbsPath = self.__pathProvider.resolveAbsPath(relPath)
|
||||
slnConfig = self.__config['sln_config']
|
||||
|
||||
command = PatchCsprojCommand(csprojAbsPath, key, value, slnConfig)
|
||||
command = PatchCsprojCommand(csprojPath, key, value, slnConfig)
|
||||
return command
|
||||
|
||||
def isPatchCsproj(self, line):
|
||||
assert line is not None
|
||||
|
||||
parser = InsideSetParser(self.__valueProvider, 'csproj')
|
||||
isValid = parser.isValidLine(line)
|
||||
|
||||
return isValid
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,6 @@ from parser.BackupParser.RestoreBackupParser import RestoreBackupParser
|
|||
|
||||
|
||||
class RestoreBackupCommandBuilder:
|
||||
def __init__(self, pathProvider):
|
||||
assert pathProvider is not None
|
||||
self.__pathProvider = pathProvider
|
||||
|
||||
def isRestoreBackup(self, line):
|
||||
assert line is not None
|
||||
|
||||
|
|
@ -21,5 +17,5 @@ class RestoreBackupCommandBuilder:
|
|||
parser = RestoreBackupParser()
|
||||
parser.parseLine(line)
|
||||
|
||||
command = RestoreBackupCommand(self.__pathProvider)
|
||||
command = RestoreBackupCommand()
|
||||
return command
|
||||
|
|
|
|||
|
|
@ -1 +1,22 @@
|
|||
restore from backup
|
||||
create backup for 'BuildSample'
|
||||
|
||||
inside 'BuildSample/BuildSample.sln' remove NotCompileApp project
|
||||
|
||||
inside 'BuildSample/BuildSample/CoolApp.csproj' set OutputPath to 'Output'
|
||||
inside 'BuildSample/BuildSample/Info.plist' set CFBundleVersion to '1.2.3'
|
||||
inside 'BuildSample/BuildSample/Info.plist' set CFBundleDisplayName to 'CoolApp'
|
||||
|
||||
copy 'BuildSample/BuildSample/Profiles/8F606DAE-F9C9-4A19-8EFF-34B990D76C28.mobileprovision' to '~/Library/MobileDevice/Provisioning Profiles/BuildScript.mobileprovision'
|
||||
|
||||
clean 'BuildSample/BuildSample.sln' for 'Release|iPhone'
|
||||
build 'BuildSample/BuildSample.sln' for 'Release|iPhone'
|
||||
|
||||
create dirs 'Output/Appstore/Artifacts'
|
||||
copy 'BuildSample/BuildSample/Output/BuildSample-1.2.3.ipa' to 'Output/Appstore/Artifacts'
|
||||
sh cp -a BuildSample/BuildSample/Output/ Output/Appstore/
|
||||
|
||||
restore from backup
|
||||
delete backup
|
||||
|
||||
sh echo hello from Rustam
|
||||
|
|
@ -1,9 +1,35 @@
|
|||
from CommandBuilders.CleanBuildCommandBuilder import CleanBuildCommandBuilder
|
||||
from CommandBuilders.CopyCommandBuilder import CopyCommandBuilder
|
||||
from CommandBuilders.CreateBackupCommandBuilder import CreateBackupCommandBuilder
|
||||
from CommandBuilders.DeleteBackupCommandBuilder import DeleteBackupCommandBuilder
|
||||
from CommandBuilders.MakeDirsCommandBuilder import MakeDirsCommandBuilder
|
||||
from CommandBuilders.PatchCsprojCommandBuilder import PatchCsprojCommandBuilder
|
||||
from CommandBuilders.PatchInfoplistCommandBuilder import PatchInfoplistCommandBuilder
|
||||
from CommandBuilders.RemoveProjectCommandBuilder import RemoveProjectCommandBuilder
|
||||
from CommandBuilders.RestoreBackupCommandBuilder import RestoreBackupCommandBuilder
|
||||
from CommandBuilders.ShCommandBuilder import ShCommandBuilder
|
||||
from commands.ValueProvider import ValueProvider
|
||||
|
||||
|
||||
class StepsRunner:
|
||||
def __init__(self):
|
||||
def __init__(self, config):
|
||||
assert config is not None
|
||||
|
||||
self.valueProvider = ValueProvider(config)
|
||||
|
||||
self.shCommandBuilder = ShCommandBuilder()
|
||||
self.removeProjectBuilder = RemoveProjectCommandBuilder()
|
||||
self.createBackupBuilder = CreateBackupCommandBuilder()
|
||||
self.restoreFromBackupBuilder = RestoreBackupCommandBuilder()
|
||||
self.deleteBackupBuilder = DeleteBackupCommandBuilder()
|
||||
self.createDirs = MakeDirsCommandBuilder()
|
||||
self.patchCsproj = PatchCsprojCommandBuilder(config, self.valueProvider)
|
||||
self.patchInfoPlist = PatchInfoplistCommandBuilder(self.valueProvider)
|
||||
self.copyBuilder = CopyCommandBuilder()
|
||||
|
||||
buildUtilPath = config['build_tool']
|
||||
self.cleanBuilder = CleanBuildCommandBuilder(buildUtilPath, 'clean')
|
||||
self.buildBuilder = CleanBuildCommandBuilder(buildUtilPath, 'build')
|
||||
|
||||
def run(self, content):
|
||||
assert content is not None
|
||||
|
|
@ -23,5 +49,36 @@ class StepsRunner:
|
|||
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()
|
||||
elif self.patchCsproj.isPatchCsproj(line):
|
||||
cmd = self.patchCsproj.getCommandFor(line)
|
||||
cmd.execute()
|
||||
elif self.patchInfoPlist.isPatchInfoPlist(line):
|
||||
cmd = self.patchInfoPlist.getCommandFor(line)
|
||||
cmd.execute()
|
||||
elif self.copyBuilder.isCopy(line):
|
||||
cmd =self.copyBuilder.getCommandFor(line)
|
||||
cmd.execute()
|
||||
elif self.restoreFromBackupBuilder.isRestoreBackup(line):
|
||||
cmd = self.restoreFromBackupBuilder.getCommandFor(line)
|
||||
cmd.execute()
|
||||
elif self.deleteBackupBuilder.isDeleteBackup(line):
|
||||
cmd =self.deleteBackupBuilder.getCommandFor(line)
|
||||
cmd.execute()
|
||||
else:
|
||||
raise Exception('unrecognised step')
|
||||
msg = "unrecognised step. Line: '{0}'".format(line)
|
||||
raise Exception(msg)
|
||||
|
|
@ -2,11 +2,9 @@ import shutil
|
|||
import os
|
||||
|
||||
class CopyCommand:
|
||||
def __init__(self, pathProvider, copyArguments):
|
||||
assert pathProvider is not None
|
||||
def __init__(self, copyArguments):
|
||||
assert copyArguments is not None
|
||||
|
||||
self.__pathProvider = pathProvider
|
||||
self.__copyArguments = copyArguments
|
||||
|
||||
def execute(self):
|
||||
|
|
@ -17,9 +15,6 @@ class CopyCommand:
|
|||
|
||||
def __expandPath(self, path):
|
||||
path = os.path.expanduser(path)
|
||||
if not os.path.isabs(path):
|
||||
path = self.__pathProvider.resolveAbsPath(path)
|
||||
|
||||
return path
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,14 @@
|
|||
import shutil
|
||||
|
||||
class CreateBackupCommand:
|
||||
def __init__(self, pathProvider, createBackupArguments):
|
||||
assert pathProvider is not None
|
||||
assert createBackupArguments is not None
|
||||
def __init__(self, backupArguments):
|
||||
assert backupArguments is not None
|
||||
|
||||
self.__pathProvider = pathProvider
|
||||
self.__createBackupArguments = createBackupArguments
|
||||
self.__backupArguments = backupArguments
|
||||
|
||||
def execute(self):
|
||||
src = self.__pathProvider.resolveAbsPath(self.__createBackupArguments.getSourceFolderName())
|
||||
dst = self.__pathProvider.resolveAbsPath(self.__createBackupArguments.getBackupFolderName())
|
||||
src = self.__backupArguments.getSourceFolderName()
|
||||
dst = self.__backupArguments.getBackupFolderName()
|
||||
|
||||
shutil.rmtree(dst, ignore_errors=True)
|
||||
shutil.copytree(src, dst, symlinks=False)
|
||||
|
|
|
|||
|
|
@ -2,14 +2,7 @@ import os
|
|||
import shutil
|
||||
|
||||
class DeleteBackupCommand:
|
||||
def __init__(self, pathProvider):
|
||||
assert pathProvider is not None
|
||||
|
||||
self.__pathProvider = pathProvider
|
||||
|
||||
def execute(self):
|
||||
baseDir = self.__pathProvider.resolveAbsPath('.')
|
||||
|
||||
dirs = [self.__pathProvider.resolveAbsPath(name) for name in os.listdir(baseDir) if os.path.isdir(os.path.join(baseDir, name)) & name.startswith('backup.')]
|
||||
dirs = [name for name in os.listdir('.') if os.path.isdir(os.path.join('.', name)) & name.startswith('backup.')]
|
||||
for dir in dirs:
|
||||
shutil.rmtree(dir)
|
||||
|
|
@ -3,18 +3,11 @@ import shutil
|
|||
|
||||
|
||||
class RestoreBackupCommand:
|
||||
def __init__(self, pathProvider):
|
||||
assert pathProvider is not None
|
||||
|
||||
self.__pathProvider = pathProvider
|
||||
|
||||
def execute(self):
|
||||
baseDir = self.__pathProvider.resolveAbsPath('.')
|
||||
|
||||
dirPairs = [(name, "backup.{0}".format(name)) for name in os.listdir(baseDir) if os.path.isdir(self.__pathProvider.resolveAbsPath(name)) and not name.startswith('backup.')]
|
||||
dirPairs = [(name, "backup.{0}".format(name)) for name in os.listdir('.') if os.path.isdir(name) and not name.startswith('backup.')]
|
||||
|
||||
for pair in dirPairs:
|
||||
absPair = (self.__pathProvider.resolveAbsPath(pair[0]), self.__pathProvider.resolveAbsPath(pair[1]))
|
||||
absPair = (pair[0], pair[1])
|
||||
if not os.path.exists(absPair[1]):
|
||||
continue
|
||||
|
||||
|
|
|
|||
|
|
@ -16,4 +16,5 @@ class RestoreBackupParser(LineParser):
|
|||
assert line is not None
|
||||
|
||||
isValid = line.startswith('restore from backup')
|
||||
return isValid
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ ios.steps = 'scripts/IosSteps.txt'
|
|||
# config settings
|
||||
ios.appstore.build_ready = 'true'
|
||||
ios.appstore.app_name = 'CoolApp'
|
||||
ios.appstore.sln_config = 'Release|iPhone'
|
||||
|
||||
ios.staging.build_ready = 'true'
|
||||
#ios.staging.build_ready = 'true'
|
||||
ios.staging.app_name = 'CoolApp staging'
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class TaskRunner:
|
|||
def runConfig(self, config):
|
||||
content = self.getStepsContent(config)
|
||||
|
||||
stepsRunner = StepsRunner()
|
||||
stepsRunner = StepsRunner(config)
|
||||
stepsRunner.run(content)
|
||||
|
||||
def getStepsContent(self, config):
|
||||
|
|
|
|||
Loading…
Reference in New Issue