mercurial/cmdutil.py
changeset 36239 428de1a59f2d
parent 36207 cc46e68f050f
child 36346 f62369667a7c
equal deleted inserted replaced
36238:f574cc00831a 36239:428de1a59f2d
   901                             ctx.description().rstrip().splitlines()[0]),
   901                             ctx.description().rstrip().splitlines()[0]),
   902         'r': lambda: ('%d' % ctx.rev()).zfill(revwidth or 0),
   902         'r': lambda: ('%d' % ctx.rev()).zfill(revwidth or 0),
   903         '%': lambda: '%',
   903         '%': lambda: '%',
   904         'b': lambda: os.path.basename(ctx.repo().root),
   904         'b': lambda: os.path.basename(ctx.repo().root),
   905         }
   905         }
   906 
   906     if total is not None:
   907     try:
   907         expander['N'] = lambda: '%d' % total
   908         if total is not None:
   908     if seqno is not None:
   909             expander['N'] = lambda: '%d' % total
   909         expander['n'] = lambda: '%d' % seqno
   910         if seqno is not None:
   910     if total is not None and seqno is not None:
   911             expander['n'] = lambda: '%d' % seqno
   911         expander['n'] = (lambda: ('%d' % seqno).zfill(len('%d' % total)))
   912         if total is not None and seqno is not None:
   912     if pathname is not None:
   913             expander['n'] = (lambda: ('%d' % seqno).zfill(len('%d' % total)))
   913         expander['s'] = lambda: os.path.basename(pathname)
   914         if pathname is not None:
   914         expander['d'] = lambda: os.path.dirname(pathname) or '.'
   915             expander['s'] = lambda: os.path.basename(pathname)
   915         expander['p'] = lambda: pathname
   916             expander['d'] = lambda: os.path.dirname(pathname) or '.'
   916 
   917             expander['p'] = lambda: pathname
   917     newname = []
   918 
   918     patlen = len(pat)
   919         newname = []
   919     i = 0
   920         patlen = len(pat)
   920     while i < patlen:
   921         i = 0
   921         c = pat[i:i + 1]
   922         while i < patlen:
   922         if c == '%':
       
   923             i += 1
   923             c = pat[i:i + 1]
   924             c = pat[i:i + 1]
   924             if c == '%':
   925             try:
   925                 i += 1
       
   926                 c = pat[i:i + 1]
       
   927                 c = expander[c]()
   926                 c = expander[c]()
   928             newname.append(c)
   927             except KeyError:
   929             i += 1
   928                 raise error.Abort(_("invalid format spec '%%%s' in output "
   930         return ''.join(newname)
   929                                     "filename") % c)
   931     except KeyError as inst:
   930         newname.append(c)
   932         raise error.Abort(_("invalid format spec '%%%s' in output filename") %
   931         i += 1
   933                          inst.args[0])
   932     return ''.join(newname)
   934 
   933 
   935 def isstdiofilename(pat):
   934 def isstdiofilename(pat):
   936     """True if the given pat looks like a filename denoting stdin/stdout"""
   935     """True if the given pat looks like a filename denoting stdin/stdout"""
   937     return not pat or pat == '-'
   936     return not pat or pat == '-'
   938 
   937