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")