Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(525)

Side by Side Diff: chrome/common/extensions/docs/server2/file_system.py

Issue 453713002: Docserver: Generate a table of extension/app API owners (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import posixpath 5 import posixpath
6 import traceback 6 import traceback
7 7
8 from future import Future 8 from future import Future
9 from path_util import ( 9 from path_util import (
10 AssertIsDirectory, AssertIsValid, IsDirectory, IsValid, SplitParent, 10 AssertIsDirectory, AssertIsValid, IsDirectory, IsValid, SplitParent,
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 138
139 def GetIdentity(self): 139 def GetIdentity(self):
140 '''The identity of the file system, exposed for caching classes to 140 '''The identity of the file system, exposed for caching classes to
141 namespace their caches. this will usually depend on the configuration of 141 namespace their caches. this will usually depend on the configuration of
142 that file system - e.g. a LocalFileSystem with a base path of /var is 142 that file system - e.g. a LocalFileSystem with a base path of /var is
143 different to that of a SubversionFileSystem with a base path of /bar, is 143 different to that of a SubversionFileSystem with a base path of /bar, is
144 different to a LocalFileSystem with a base path of /usr. 144 different to a LocalFileSystem with a base path of /usr.
145 ''' 145 '''
146 raise NotImplementedError(self.__class__) 146 raise NotImplementedError(self.__class__)
147 147
148 def Walk(self, root): 148 def Walk(self, root, depth=-1):
149 '''Recursively walk the directories in a file system, starting with root. 149 '''Recursively walk the directories in a file system, starting with root.
150 150
151 Behaviour is very similar to os.walk from the standard os module, yielding 151 Behaviour is very similar to os.walk from the standard os module, yielding
152 (base, dirs, files) recursively, where |base| is the base path of |files|, 152 (base, dirs, files) recursively, where |base| is the base path of |files|,
153 |dirs| relative to |root|, and |files| and |dirs| the list of files/dirs in 153 |dirs| relative to |root|, and |files| and |dirs| the list of files/dirs in
154 |base| respectively. 154 |base| respectively. If |depth| is specified and greater than 0, Walk will
not at google - send to devlin 2014/08/15 15:45:50 Quick test for specifying depth=0, 1, or 2 plz.
155 only recurse |depth| times.
155 156
156 Note that directories will always end with a '/', files never will. 157 Note that directories will always end with a '/', files never will.
157 158
158 If |root| cannot be found, raises a FileNotFoundError. 159 If |root| cannot be found, raises a FileNotFoundError.
159 For any other failure, raises a FileSystemError. 160 For any other failure, raises a FileSystemError.
160 ''' 161 '''
161 AssertIsDirectory(root) 162 AssertIsDirectory(root)
162 basepath = root 163 basepath = root
163 164
164 def walk(root): 165 def walk(root, depth):
166 if depth == 0:
167 return
165 AssertIsDirectory(root) 168 AssertIsDirectory(root)
166 dirs, files = [], [] 169 dirs, files = [], []
167 170
168 for f in self.ReadSingle(root).Get(): 171 for f in self.ReadSingle(root).Get():
169 if IsDirectory(f): 172 if IsDirectory(f):
170 dirs.append(f) 173 dirs.append(f)
171 else: 174 else:
172 files.append(f) 175 files.append(f)
173 176
174 yield root[len(basepath):].rstrip('/'), dirs, files 177 yield root[len(basepath):].rstrip('/'), dirs, files
175 178
176 for d in dirs: 179 for d in dirs:
177 for walkinfo in walk(root + d): 180 for walkinfo in walk(root + d, depth - 1):
178 yield walkinfo 181 yield walkinfo
179 182
180 for walkinfo in walk(root): 183 for walkinfo in walk(root, depth):
181 yield walkinfo 184 yield walkinfo
182 185
183 def __eq__(self, other): 186 def __eq__(self, other):
184 return (isinstance(other, FileSystem) and 187 return (isinstance(other, FileSystem) and
185 self.GetIdentity() == other.GetIdentity()) 188 self.GetIdentity() == other.GetIdentity())
186 189
187 def __ne__(self, other): 190 def __ne__(self, other):
188 return not (self == other) 191 return not (self == other)
189 192
190 def __repr__(self): 193 def __repr__(self):
191 return '<%s>' % type(self).__name__ 194 return '<%s>' % type(self).__name__
192 195
193 def __str__(self): 196 def __str__(self):
194 return repr(self) 197 return repr(self)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698