comparison mercurial/cmdutil.py @ 2881:cf98cd70d2c4

move walk and matchpats from commands to cmdutil.
author Vadim Gelfer <vadim.gelfer@gmail.com>
date Sun, 13 Aug 2006 16:11:22 -0700
parents 4ec58b157265
children c2932ad5476a
comparison
equal deleted inserted replaced
2880:eab07a7b7491 2881:cf98cd70d2c4
6 # of the GNU General Public License, incorporated herein by reference. 6 # of the GNU General Public License, incorporated herein by reference.
7 7
8 from demandload import demandload 8 from demandload import demandload
9 from node import * 9 from node import *
10 from i18n import gettext as _ 10 from i18n import gettext as _
11 demandload(globals(), 'util')
11 demandload(globals(), 'os sys') 12 demandload(globals(), 'os sys')
12 13
13 def make_filename(repo, pat, node, 14 def make_filename(repo, pat, node,
14 total=None, seqno=None, revwidth=None, pathname=None): 15 total=None, seqno=None, revwidth=None, pathname=None):
15 node_expander = { 16 node_expander = {
64 if hasattr(pat, 'read') and 'r' in mode: 65 if hasattr(pat, 'read') and 'r' in mode:
65 return pat 66 return pat
66 return open(make_filename(repo, pat, node, total, seqno, revwidth, 67 return open(make_filename(repo, pat, node, total, seqno, revwidth,
67 pathname), 68 pathname),
68 mode) 69 mode)
70
71 def matchpats(repo, pats=[], opts={}, head=''):
72 cwd = repo.getcwd()
73 if not pats and cwd:
74 opts['include'] = [os.path.join(cwd, i) for i in opts['include']]
75 opts['exclude'] = [os.path.join(cwd, x) for x in opts['exclude']]
76 cwd = ''
77 return util.cmdmatcher(repo.root, cwd, pats or ['.'], opts.get('include'),
78 opts.get('exclude'), head)
79
80 def makewalk(repo, pats, opts, node=None, head='', badmatch=None):
81 files, matchfn, anypats = matchpats(repo, pats, opts, head)
82 exact = dict(zip(files, files))
83 def walk():
84 for src, fn in repo.walk(node=node, files=files, match=matchfn,
85 badmatch=badmatch):
86 yield src, fn, util.pathto(repo.getcwd(), fn), fn in exact
87 return files, matchfn, walk()
88
89 def walk(repo, pats, opts, node=None, head='', badmatch=None):
90 files, matchfn, results = makewalk(repo, pats, opts, node, head, badmatch)
91 for r in results:
92 yield r