# SPDX-License-Identifier: AGPL-3.0-or-later

import subprocess

from plinth.errors import PlinthError


class BorgError(PlinthError):
    """Generic borg errors."""


class BorgRepositoryDoesNotExistError(BorgError):
    """Borg access to a repository works but the repository does not exist."""


class SshError(subprocess.CalledProcessError):
    """Error when running an SSH command."""


class SshfsError(PlinthError):
    """Generic sshfs errors."""


class BorgRepositoryExists(BorgError):
    """A repository at target location already exists during initialization."""


class BorgUnencryptedRepository(BorgError):
    """Attempt to provide password on an unencrypted repository."""


class BorgArchiveExists(BorgError):
    """A archive with the given name already exists in the repository."""


class BorgArchiveDoesNotExist(BorgError):
    """Specified archive does not exist in the repository."""


class BorgBusy(BorgError):
    """Borg could not acquire lock being busy with another operation."""


class BorgNoSpace(BorgError):
    """There is not enough space left on the device to perform operation."""
