Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/cmdutil.py @ 36276:428de1a59f2d
cmdutil: narrow scope of KeyError in makefilename()
It seemed too broad to catch a standard Python exception.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 07 Jan 2018 11:26:16 +0900 |
parents | cc46e68f050f |
children | f62369667a7c |
comparison
equal
deleted
inserted
replaced
36275:f574cc00831a | 36276: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 |