| Index: chrome/common/extensions/docs/server2/local_file_system.py
|
| diff --git a/chrome/common/extensions/docs/server2/local_file_system.py b/chrome/common/extensions/docs/server2/local_file_system.py
|
| index 2955d8c64b35149635862a059850a49270213674..8a6aae41125265ccc439b95959fd9f0e5823d621 100644
|
| --- a/chrome/common/extensions/docs/server2/local_file_system.py
|
| +++ b/chrome/common/extensions/docs/server2/local_file_system.py
|
| @@ -3,19 +3,25 @@
|
| # found in the LICENSE file.
|
|
|
| import os
|
| +import sys
|
|
|
| +from docs_server_utils import StringIdentity
|
| from file_system import FileSystem, FileNotFoundError, StatInfo, ToUnicode
|
| from future import Future
|
|
|
| +def _ConvertToFilepath(path):
|
| + return path.replace('/', os.sep)
|
| +
|
| class LocalFileSystem(FileSystem):
|
| - """FileSystem implementation which fetches resources from the local
|
| + '''FileSystem implementation which fetches resources from the local
|
| filesystem.
|
| - """
|
| + '''
|
| def __init__(self, base_path):
|
| - self._base_path = self._ConvertToFilepath(base_path)
|
| + self._base_path = _ConvertToFilepath(base_path)
|
|
|
| - def _ConvertToFilepath(self, path):
|
| - return path.replace('/', os.sep)
|
| + @staticmethod
|
| + def Create():
|
| + return LocalFileSystem(os.path.join(sys.path[0], os.pardir, os.pardir))
|
|
|
| def _ReadFile(self, filename, binary):
|
| try:
|
| @@ -48,21 +54,31 @@ class LocalFileSystem(FileSystem):
|
| result = {}
|
| for path in paths:
|
| if path.endswith('/'):
|
| - result[path] = self._ListDir(self._ConvertToFilepath(path))
|
| + result[path] = self._ListDir(_ConvertToFilepath(path))
|
| else:
|
| - result[path] = self._ReadFile(self._ConvertToFilepath(path), binary)
|
| + result[path] = self._ReadFile(_ConvertToFilepath(path), binary)
|
| return Future(value=result)
|
|
|
| def _CreateStatInfo(self, path):
|
| - if path.endswith('/'):
|
| - versions = dict((filename, os.stat(os.path.join(path, filename)).st_mtime)
|
| - for filename in os.listdir(path))
|
| - else:
|
| - versions = None
|
| try:
|
| - return StatInfo(os.stat(path).st_mtime, versions)
|
| + path_mtime = os.stat(path).st_mtime
|
| + if path.endswith('/'):
|
| + child_versions = dict(
|
| + (filename, os.stat(os.path.join(path, filename)).st_mtime)
|
| + for filename in os.listdir(path))
|
| + # This file system stat mimics subversion, where the stat of directories
|
| + # is max(file stats). That means we need to recursively check the whole
|
| + # file system tree :\ so approximate that by just checking this dir.
|
| + version = max([path_mtime] + child_versions.values())
|
| + else:
|
| + child_versions = None
|
| + version = path_mtime
|
| + return StatInfo(version, child_versions)
|
| except OSError as e:
|
| raise FileNotFoundError('os.stat failed for %s: %s' % (path, e))
|
|
|
| def Stat(self, path):
|
| return self._CreateStatInfo(os.path.join(self._base_path, path))
|
| +
|
| + def GetIdentity(self):
|
| + return '@'.join((self.__class__.__name__, StringIdentity(self._base_path)))
|
|
|