mirror of
https://github.com/openSUSE/osc.git
synced 2024-12-27 18:26:15 +01:00
cba4b58bbe
* Adapt do_config to use the new credentials manager implementation and add a --change-password option which can be used to change the password. * Adapt config_set_option to follow the change in do_config. * Split selection of the credentials manager descriptor to reuse it in do_config and interactive_config_setup. * Introduce new ConfigMissingCredentialsError which is raised in case of missing credentials (user or password). In this case the user will be asked to enter the new credentials.
162 lines
5.1 KiB
Python
162 lines
5.1 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
|
|
|
|
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
|
|
|
|
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 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
|