Source code for AutoArchive._application.archiving._command_executor

# _command_executor.py
#
# Project: AutoArchive
# License: GNU GPLv3
#
# Copyright (C) 2003 - 2016 Róbert Čerňanský



""":class:`_CommandExecutor` class."""



__all__ = ["_CommandExecutor"]



# {{{ INCLUDES

import shlex

from AutoArchive._infrastructure.ui import VerbosityLevels
from AutoArchive._infrastructure.configuration import Options

# }}} INCLUDES



# {{{ CLASSES

[docs]class _CommandExecutor: def __init__(self, configuration, externalCommandExecutor, componentUi): self.__configuration = configuration self.__externalCommandExecutor = externalCommandExecutor self.__componentUi = componentUi
[docs] def executeBeforeCommand(self, archiveSpec): self.__executeCommand(archiveSpec[Options.COMMAND_BEFORE_BACKUP])
[docs] def executeAfterCommand(self, archiveSpec): self.__executeCommand(archiveSpec[Options.COMMAND_AFTER_BACKUP])
[docs] def executeBeforeAllCommand(self): self.__executeCommand(self.__configuration[Options.COMMAND_BEFORE_ALL_BACKUPS])
[docs] def executeAfterAllCommand(self): self.__executeCommand(self.__configuration[Options.COMMAND_AFTER_ALL_BACKUPS])
def __executeCommand(self, commandString): if commandString is not None and commandString != "": command = shlex.split(commandString) self.__informVerboseUser(commandString) self.__externalCommandExecutor.commandMessage += self.__onCommandMessage self.__externalCommandExecutor.execute(command[0], command[1:] if len(command) > 1 else None) self.__externalCommandExecutor.commandMessage -= self.__onCommandMessage def __onCommandMessage(self, command, message, isError): if isError: self.__componentUi.showWarning(message) elif self.__componentUi.verbosity != VerbosityLevels.Quiet: self.__componentUi.presentLine(message) def __informVerboseUser(self, commandString): if self.__componentUi.verbosity == VerbosityLevels.Verbose: self.__componentUi.showVerbose(str.format("Executing command '{}'", commandString))
# }}} CLASSES