diff --git a/scripts/CommandBuilders/CreateBackupCommandBuilder.py b/scripts/CommandBuilders/CreateBackupCommandBuilder.py new file mode 100644 index 0000000..f1f7f17 --- /dev/null +++ b/scripts/CommandBuilders/CreateBackupCommandBuilder.py @@ -0,0 +1,24 @@ +from commands.CreateBackupCommand import CreateBackupCommand +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 + + parser = CreateBackupParser() + return parser.isValidLine(line) + + def getCommandFor(self, line): + assert line is not None + + parser = CreateBackupParser() + backupArguments = parser.parseLine(line) + + command = CreateBackupCommand(self.__pathProvider, backupArguments) + return command diff --git a/scripts/ManualTests/create_backup_test.py b/scripts/ManualTests/create_backup_test.py new file mode 100644 index 0000000..8362787 --- /dev/null +++ b/scripts/ManualTests/create_backup_test.py @@ -0,0 +1,12 @@ +from CommandBuilders.CreateBackupCommandBuilder import CreateBackupCommandBuilder +from ManualTests.path_provider import PathProvider + +line = "create backup for 'BuildSample'" + +baseDir = '../' +path_provider = PathProvider(baseDir) + +cmdBuilder = CreateBackupCommandBuilder(path_provider) +command = cmdBuilder.getCommandFor(line) + +command.execute() \ No newline at end of file diff --git a/scripts/commands/CreateBackupCommand.py b/scripts/commands/CreateBackupCommand.py new file mode 100644 index 0000000..59d5ab9 --- /dev/null +++ b/scripts/commands/CreateBackupCommand.py @@ -0,0 +1,16 @@ +import shutil + +class CreateBackupCommand: + def __init__(self, pathProvider, createBackupArguments): + assert pathProvider is not None + assert createBackupArguments is not None + + self.__pathProvider = pathProvider + self.__createBackupArguments = createBackupArguments + + def execute(self): + src = self.__pathProvider.resolveAbsPath(self.__createBackupArguments.getSourceFolderName()) + dst = self.__pathProvider.resolveAbsPath(self.__createBackupArguments.getBackupFolderName()) + + shutil.rmtree(dst, ignore_errors=True) + shutil.copytree(src, dst, symlinks=False) diff --git a/scripts/parser/BackupParser/CreateBackupArguments.py b/scripts/parser/BackupParser/CreateBackupArguments.py index 0a43b19..fbeea2b 100644 --- a/scripts/parser/BackupParser/CreateBackupArguments.py +++ b/scripts/parser/BackupParser/CreateBackupArguments.py @@ -1,3 +1,11 @@ class CreateBackupArguments: def __init__(self): self.folderName = None + + def getSourceFolderName(self): + return self.folderName + + def getBackupFolderName(self): + return "backup.{0}".format(self.folderName) + + diff --git a/scripts/run_manual_tests.py b/scripts/run_manual_tests.py index dab7faf..d37be40 100644 --- a/scripts/run_manual_tests.py +++ b/scripts/run_manual_tests.py @@ -1,3 +1,5 @@ #import ManualTests.csproj_test #import ManualTests.info_plist_test -import ManualTests.copy_test \ No newline at end of file +#import ManualTests.copy_test + +import ManualTests.create_backup_test \ No newline at end of file