Mercurial > hg
comparison mercurial/util.py @ 37096:895f209b593b
util: use error.Abort instead of local alias
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 24 Mar 2018 14:08:50 +0900 |
parents | e24802ea8dbd |
children | a9ea2b1e5c4b |
comparison
equal
deleted
inserted
replaced
37095:e24802ea8dbd | 37096:895f209b593b |
---|---|
280 | 280 |
281 def __init__(self, digests, s=''): | 281 def __init__(self, digests, s=''): |
282 self._hashes = {} | 282 self._hashes = {} |
283 for k in digests: | 283 for k in digests: |
284 if k not in DIGESTS: | 284 if k not in DIGESTS: |
285 raise Abort(_('unknown digest type: %s') % k) | 285 raise error.Abort(_('unknown digest type: %s') % k) |
286 self._hashes[k] = DIGESTS[k]() | 286 self._hashes[k] = DIGESTS[k]() |
287 if s: | 287 if s: |
288 self.update(s) | 288 self.update(s) |
289 | 289 |
290 def update(self, data): | 290 def update(self, data): |
291 for h in self._hashes.values(): | 291 for h in self._hashes.values(): |
292 h.update(data) | 292 h.update(data) |
293 | 293 |
294 def __getitem__(self, key): | 294 def __getitem__(self, key): |
295 if key not in DIGESTS: | 295 if key not in DIGESTS: |
296 raise Abort(_('unknown digest type: %s') % k) | 296 raise error.Abort(_('unknown digest type: %s') % k) |
297 return nodemod.hex(self._hashes[key].digest()) | 297 return nodemod.hex(self._hashes[key].digest()) |
298 | 298 |
299 def __iter__(self): | 299 def __iter__(self): |
300 return iter(self._hashes) | 300 return iter(self._hashes) |
301 | 301 |
330 self._got += len(content) | 330 self._got += len(content) |
331 return content | 331 return content |
332 | 332 |
333 def validate(self): | 333 def validate(self): |
334 if self._size != self._got: | 334 if self._size != self._got: |
335 raise Abort(_('size mismatch: expected %d, got %d') % | 335 raise error.Abort(_('size mismatch: expected %d, got %d') % |
336 (self._size, self._got)) | 336 (self._size, self._got)) |
337 for k, v in self._digests.items(): | 337 for k, v in self._digests.items(): |
338 if v != self._digester[k]: | 338 if v != self._digester[k]: |
339 # i18n: first parameter is a digest name | 339 # i18n: first parameter is a digest name |
340 raise Abort(_('%s mismatch: expected %s, got %s') % | 340 raise error.Abort(_('%s mismatch: expected %s, got %s') % |
341 (k, v, self._digester[k])) | 341 (k, v, self._digester[k])) |
342 | 342 |
343 try: | 343 try: |
344 buffer = buffer | 344 buffer = buffer |
345 except NameError: | 345 except NameError: |
346 def buffer(sliceable, offset=0, length=None): | 346 def buffer(sliceable, offset=0, length=None): |
1526 cmd = cmd.replace('OUTFILE', outname) | 1526 cmd = cmd.replace('OUTFILE', outname) |
1527 code = os.system(cmd) | 1527 code = os.system(cmd) |
1528 if pycompat.sysplatform == 'OpenVMS' and code & 1: | 1528 if pycompat.sysplatform == 'OpenVMS' and code & 1: |
1529 code = 0 | 1529 code = 0 |
1530 if code: | 1530 if code: |
1531 raise Abort(_("command '%s' failed: %s") % | 1531 raise error.Abort(_("command '%s' failed: %s") % |
1532 (cmd, explainexit(code))) | 1532 (cmd, explainexit(code))) |
1533 return readfile(outname) | 1533 return readfile(outname) |
1534 finally: | 1534 finally: |
1535 try: | 1535 try: |
1536 if inname: | 1536 if inname: |
1537 os.unlink(inname) | 1537 os.unlink(inname) |
1829 # stat of copied file is ambiguous to original one | 1829 # stat of copied file is ambiguous to original one |
1830 advanced = ( | 1830 advanced = ( |
1831 oldstat.stat[stat.ST_MTIME] + 1) & 0x7fffffff | 1831 oldstat.stat[stat.ST_MTIME] + 1) & 0x7fffffff |
1832 os.utime(dest, (advanced, advanced)) | 1832 os.utime(dest, (advanced, advanced)) |
1833 except shutil.Error as inst: | 1833 except shutil.Error as inst: |
1834 raise Abort(str(inst)) | 1834 raise error.Abort(str(inst)) |
1835 | 1835 |
1836 def copyfiles(src, dst, hardlink=None, progress=lambda t, pos: None): | 1836 def copyfiles(src, dst, hardlink=None, progress=lambda t, pos: None): |
1837 """Copy a directory tree using hardlinks if possible.""" | 1837 """Copy a directory tree using hardlinks if possible.""" |
1838 num = 0 | 1838 num = 0 |
1839 | 1839 |
2807 pass | 2807 pass |
2808 | 2808 |
2809 try: | 2809 try: |
2810 return socket.getservbyname(pycompat.sysstr(port)) | 2810 return socket.getservbyname(pycompat.sysstr(port)) |
2811 except socket.error: | 2811 except socket.error: |
2812 raise Abort(_("no port number associated with service '%s'") % port) | 2812 raise error.Abort(_("no port number associated with service '%s'") |
2813 % port) | |
2813 | 2814 |
2814 class url(object): | 2815 class url(object): |
2815 r"""Reliable URL parser. | 2816 r"""Reliable URL parser. |
2816 | 2817 |
2817 This parses URLs and provides attributes for the following | 2818 This parses URLs and provides attributes for the following |
2968 if not self.host: | 2969 if not self.host: |
2969 self.host = None | 2970 self.host = None |
2970 | 2971 |
2971 if (self.host and self.scheme == 'file' and | 2972 if (self.host and self.scheme == 'file' and |
2972 self.host not in ('localhost', '127.0.0.1', '[::1]')): | 2973 self.host not in ('localhost', '127.0.0.1', '[::1]')): |
2973 raise Abort(_('file:// URLs can only refer to localhost')) | 2974 raise error.Abort(_('file:// URLs can only refer to localhost')) |
2974 | 2975 |
2975 self.path = path | 2976 self.path = path |
2976 | 2977 |
2977 # leave the query string escaped | 2978 # leave the query string escaped |
2978 for a in ('user', 'passwd', 'host', 'port', | 2979 for a in ('user', 'passwd', 'host', 'port', |