1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-09-20 17:26:15 +02:00
github.com_openSUSE_osc/osc/oscerr.py

184 lines
5.6 KiB
Python

# Copyright (C) 2008 Novell Inc. All rights reserved.
# This program is free software; it may be used, copied, modified
# and distributed under the terms of the GNU General Public Licence,
# either version 2, or (at your option) any later version.
class OscBaseError(Exception):
def __init__(self, args=()):
Exception.__init__(self)
self.args = args
def __str__(self):
return ''.join(self.args)
class UserAbort(OscBaseError):
"""Exception raised when the user requested abortion"""
class ConfigError(OscBaseError):
"""Exception raised when there is an error in the config file"""
def __init__(self, msg, fname):
OscBaseError.__init__(self)
self.msg = msg
self.file = fname
def __str__(self):
return "Error in config file {}\n {}".format(self.file, self.msg)
class ConfigMissingApiurl(ConfigError):
"""Exception raised when a apiurl does not exist in the config file"""
def __init__(self, msg, fname, url):
ConfigError.__init__(self, msg, fname)
self.url = url
class ConfigMissingCredentialsError(ConfigError):
def __init__(self, msg, fname, url):
ConfigError.__init__(self, msg, fname)
self.url = url
class APIError(OscBaseError):
"""Exception raised when there is an error in the output from the API"""
def __init__(self, msg):
OscBaseError.__init__(self)
self.msg = msg
class NoConfigfile(OscBaseError):
"""Exception raised when osc's configfile cannot be found"""
def __init__(self, fname, msg):
OscBaseError.__init__(self)
self.file = fname
self.msg = msg
def __str__(self):
return "Config file cannot be found: {}\n {}".format(self.file, self.msg)
class ExtRuntimeError(OscBaseError):
"""Exception raised when there is a runtime error of an external tool"""
def __init__(self, msg, fname):
OscBaseError.__init__(self)
self.msg = msg
self.file = fname
class ServiceRuntimeError(OscBaseError):
"""Exception raised when the execution of a source service failed"""
def __init__(self, msg):
OscBaseError.__init__(self)
self.msg = msg
class WrongArgs(OscBaseError):
"""Exception raised by the cli for wrong arguments usage"""
class WrongOptions(OscBaseError):
"""Exception raised by the cli for wrong option usage"""
#def __str__(self):
# s = 'Sorry, wrong options.'
# if self.args:
# s += '\n' + self.args
# return s
class NoWorkingCopy(OscBaseError):
"""Exception raised when directory is neither a project dir nor a package dir"""
class NotMissing(OscBaseError):
"""Exception raised when link target should not exist, but it does"""
class WorkingCopyWrongVersion(OscBaseError):
"""Exception raised when working copy's .osc/_osclib_version doesn't match"""
class WorkingCopyOutdated(OscBaseError):
"""Exception raised when the working copy is outdated.
It takes a tuple with three arguments: path to wc,
revision that it has, revision that it should have.
"""
def __str__(self):
return ('Working copy \'%s\' is out of date (rev %s vs rev %s).\n'
'Looks as if you need to update it first.' \
% (self.args[0], self.args[1], self.args[2]))
class PackageError(OscBaseError):
"""Base class for all Package related exceptions"""
def __init__(self, prj, pac):
OscBaseError.__init__(self)
self.prj = prj
self.pac = pac
class WorkingCopyInconsistent(PackageError):
"""Exception raised when the working copy is in an inconsistent state"""
def __init__(self, prj, pac, dirty_files, msg):
PackageError.__init__(self, prj, pac)
self.dirty_files = dirty_files
self.msg = msg
class LinkExpandError(PackageError):
"""Exception raised when source link expansion fails"""
def __init__(self, prj, pac, msg):
PackageError.__init__(self, prj, pac)
self.msg = msg
class OscIOError(OscBaseError):
def __init__(self, e, msg):
OscBaseError.__init__(self)
self.e = e
self.msg = msg
class OscValueError(OscBaseError):
"""
Invalid argument value (of correct type).
"""
pass
class OscInvalidRevision(OscValueError):
"""
Invalid revision value.
"""
def __str__(self):
return "Invalid revision value: {}".format("".join(self.args))
class PackageNotInstalled(OscBaseError):
"""
Exception raised when a package is not installed on local system
"""
def __init__(self, pkg):
OscBaseError.__init__(self, (pkg,))
def __str__(self):
return 'Package %s is required for this operation' % self.args
class SignalInterrupt(Exception):
"""Exception raised on SIGTERM and SIGHUP."""
class PackageExists(PackageError):
"""
Exception raised when a local object already exists
"""
def __init__(self, prj, pac, msg):
PackageError.__init__(self, prj, pac)
self.msg = msg
class PackageMissing(PackageError):
"""
Exception raised when a local object doesn't exist
"""
def __init__(self, prj, pac, msg):
PackageError.__init__(self, prj, pac)
self.msg = msg
class PackageFileConflict(PackageError):
"""
Exception raised when there's a file conflict.
Conflict doesn't mean an unsuccessfull merge in this context.
"""
def __init__(self, prj, pac, file, msg):
PackageError.__init__(self, prj, pac)
self.file = file
self.msg = msg
class PackageInternalError(PackageError):
def __init__(self, prj, pac, msg):
PackageError.__init__(self, prj, pac)
self.msg = msg
# vim: sw=4 et