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 |