Mercurial > hg
comparison mercurial/repo.py @ 5259:65dc707606ed
Push capability checking into protocol-level code.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Mon, 27 Aug 2007 14:48:08 -0700 |
parents | 63b9d2deed48 |
children | 08d6e8754388 |
comparison
equal
deleted
inserted
replaced
5258:b534c502bfb3 | 5259:65dc707606ed |
---|---|
7 # of the GNU General Public License, incorporated herein by reference. | 7 # of the GNU General Public License, incorporated herein by reference. |
8 | 8 |
9 class RepoError(Exception): | 9 class RepoError(Exception): |
10 pass | 10 pass |
11 | 11 |
12 class NoCapability(RepoError): | |
13 pass | |
14 | |
12 class repository(object): | 15 class repository(object): |
13 def capable(self, name): | 16 def capable(self, name): |
14 '''tell whether repo supports named capability. | 17 '''tell whether repo supports named capability. |
15 return False if not supported. | 18 return False if not supported. |
16 if boolean capability, return True. | 19 if boolean capability, return True. |
17 if string capability, return string.''' | 20 if string capability, return string.''' |
21 if name in self.capabilities: | |
22 return True | |
18 name_eq = name + '=' | 23 name_eq = name + '=' |
19 for cap in self.capabilities: | 24 for cap in self.capabilities: |
20 if name == cap: | |
21 return True | |
22 if cap.startswith(name_eq): | 25 if cap.startswith(name_eq): |
23 return cap[len(name_eq):] | 26 return cap[len(name_eq):] |
24 return False | 27 return False |
28 | |
29 def requirecap(self, name, purpose): | |
30 '''raise an exception if the given capability is not present''' | |
31 if not self.capable(name): | |
32 raise NoCapability(_('cannot %s; remote repository does not ' | |
33 'support the %r capability') % | |
34 (purpose, name)) |