Putting names at the top of files is is not recommended. Collective wisdom for
[opensuse:osc.git] / osc / oscerr.py
1 #!/usr/bin/python
2
3 # Copyright (C) 2008 Novell Inc.  All rights reserved.
4 # This program is free software; it may be used, copied, modified
5 # and distributed under the terms of the GNU General Public Licence,
6 # either version 2, or (at your option) any later version.
7
8
9
10 class OscBaseError(Exception):
11     def __init__(self, args=()):
12         Exception.__init__(self)
13         self.args = args
14     def __str__(self):
15         return ''.join(self.args)
16
17 class UserAbort(OscBaseError):
18     """Exception raised when the user requested abortion"""
19
20 class ConfigError(OscBaseError):
21     """Exception raised when there is an error in the config file"""
22     def __init__(self, msg, file):
23         OscBaseError.__init__(self)
24         self.msg = msg
25         self.file = file
26
27 class ConfigMissingApiurl(ConfigError):
28     """Exception raised when a apiurl does not exist in the config file"""
29     def __init__(self, msg, file, url):
30         ConfigError.__init__(self, msg, file)
31         self.url = url
32
33 class APIError(OscBaseError):
34     """Exception raised when there is an error in the output from the API"""
35     def __init__(self, msg):
36         OscBaseError.__init__(self)
37         self.msg = msg
38
39 class NoConfigfile(OscBaseError):
40     """Exception raised when osc's configfile cannot be found"""
41     def __init__(self, fname, msg):
42         OscBaseError.__init__(self)
43         self.file = fname
44         self.msg = msg
45
46 class WrongArgs(OscBaseError):
47     """Exception raised by the cli for wrong arguments usage"""
48
49 class WrongOptions(OscBaseError):
50     """Exception raised by the cli for wrong option usage"""
51     #def __str__(self):
52     #    s = 'Sorry, wrong options.'
53     #    if self.args:
54     #        s += '\n' + self.args
55     #    return s
56
57 class NoWorkingCopy(OscBaseError):
58     """Exception raised when directory is neither a project dir nor a package dir"""
59
60 class WorkingCopyWrongVersion(OscBaseError):
61     """Exception raised when working copy's .osc/_osclib_version doesn't match"""
62
63 class WorkingCopyOutdated(OscBaseError):
64     """Exception raised when the working copy is outdated.
65     It takes a tuple with three arguments: path to wc, 
66     revision that it has, revision that it should have.
67     """
68     def __str__(self):
69         return ('Working copy \'%s\' is out of date (rev %s vs rev %s).\n'
70                'Looks as if you need to update it first.' \
71                     % (self[0], self[1], self[2]))
72
73
74 class LinkExpandError(OscBaseError):
75     """Exception raised when source link expansion fails"""
76
77 class OscIOError(OscBaseError):
78     def __init__(self, e, msg):
79         OscBaseError.__init__(self)
80         self.e = e
81         self.msg = msg
82
83 class SignalInterrupt(Exception):
84     """Exception raised on SIGTERM and SIGHUP."""
85
86 class PackageError(OscBaseError):
87     """Base class for all Package related exceptions"""
88     def __init__(self, prj, pac):
89         OscBaseError.__init__(self)
90         self.prj = prj
91         self.pac = pac
92
93 class PackageExists(PackageError):
94     """
95     Exception raised when a local object already exists 
96     """
97     def __init__(self, prj, pac, msg):
98         PackageError.__init__(self, prj, pac)
99         self.msg = msg
100
101 class PackageMissing(PackageError):
102     """
103     Exception raised when a local object doesn't exist
104     """
105     def __init__(self, prj, pac, msg):
106         PackageError.__init__(self, prj, pac)
107         self.msg = msg