Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 739:36edb39e8e8c
Split make_file back out into make_filename and make_file.
It turns out that make_filename is useful by itself.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Wed, 20 Jul 2005 04:08:11 -0800 |
parents | 32a97c9d8e98 |
children | d2422f10c136 |
comparison
equal
deleted
inserted
replaced
738:32a97c9d8e98 | 739:36edb39e8e8c |
---|---|
114 for rev in xrange(start, end, step): | 114 for rev in xrange(start, end, step): |
115 yield str(rev) | 115 yield str(rev) |
116 else: | 116 else: |
117 yield spec | 117 yield spec |
118 | 118 |
119 def make_file(repo, r, pat, node=None, | 119 def make_filename(repo, r, pat, node=None, |
120 total=None, seqno=None, revwidth=None, mode='wb'): | 120 total=None, seqno=None, revwidth=None): |
121 if not pat or pat == '-': | |
122 if 'w' in mode: return sys.stdout | |
123 else: return sys.stdin | |
124 if hasattr(pat, 'write') and 'w' in mode: | |
125 return pat | |
126 if hasattr(pat, 'read') and 'r' in mode: | |
127 return pat | |
128 node_expander = { | 121 node_expander = { |
129 'H': lambda: hg.hex(node), | 122 'H': lambda: hg.hex(node), |
130 'R': lambda: str(r.rev(node)), | 123 'R': lambda: str(r.rev(node)), |
131 'h': lambda: hg.short(node), | 124 'h': lambda: hg.short(node), |
132 } | 125 } |
156 i += 1 | 149 i += 1 |
157 c = pat[i] | 150 c = pat[i] |
158 c = expander[c]() | 151 c = expander[c]() |
159 newname.append(c) | 152 newname.append(c) |
160 i += 1 | 153 i += 1 |
161 return open(''.join(newname), mode) | 154 return ''.join(newname) |
162 except KeyError, inst: | 155 except KeyError, inst: |
163 raise Abort("invalid format spec '%%%s' in output file name", | 156 raise Abort("invalid format spec '%%%s' in output file name", |
164 inst.args[0]) | 157 inst.args[0]) |
158 | |
159 def make_file(repo, r, pat, node=None, | |
160 total=None, seqno=None, revwidth=None, mode='wb'): | |
161 if not pat or pat == '-': | |
162 if 'w' in mode: return sys.stdout | |
163 else: return sys.stdin | |
164 if hasattr(pat, 'write') and 'w' in mode: | |
165 return pat | |
166 if hasattr(pat, 'read') and 'r' in mode: | |
167 return pat | |
168 return open(make_filename(repo, r, pat, node, total, seqno, revwidth), | |
169 mode) | |
165 | 170 |
166 def dodiff(fp, ui, repo, files=None, node1=None, node2=None): | 171 def dodiff(fp, ui, repo, files=None, node1=None, node2=None): |
167 def date(c): | 172 def date(c): |
168 return time.asctime(time.gmtime(float(c[2].split(' ')[0]))) | 173 return time.asctime(time.gmtime(float(c[2].split(' ')[0]))) |
169 | 174 |
588 fp.write("# Parent %s\n" % hg.hex(other)) | 593 fp.write("# Parent %s\n" % hg.hex(other)) |
589 fp.write(change[4].rstrip()) | 594 fp.write(change[4].rstrip()) |
590 fp.write("\n\n") | 595 fp.write("\n\n") |
591 | 596 |
592 dodiff(fp, ui, repo, None, prev, node) | 597 dodiff(fp, ui, repo, None, prev, node) |
598 if fp != sys.stdout: fp.close() | |
593 | 599 |
594 def export(ui, repo, *changesets, **opts): | 600 def export(ui, repo, *changesets, **opts): |
595 """dump the header and diffs for one or more changesets""" | 601 """dump the header and diffs for one or more changesets""" |
596 if not changesets: | 602 if not changesets: |
597 raise Abort("export requires at least one changeset") | 603 raise Abort("export requires at least one changeset") |