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

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

Issue 491653002: Docserver: Use GitilesFileSystem instead of SubversionFileSystem (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 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 from caching_file_system import CachingFileSystem 5 from caching_file_system import CachingFileSystem
6 from gitiles_file_system import GitilesFileSystem
6 from local_file_system import LocalFileSystem 7 from local_file_system import LocalFileSystem
7 from offline_file_system import OfflineFileSystem 8 from offline_file_system import OfflineFileSystem
8 from subversion_file_system import SubversionFileSystem
9 from third_party.json_schema_compiler.memoize import memoize 9 from third_party.json_schema_compiler.memoize import memoize
10 10
11 11
12 class HostFileSystemProvider(object): 12 class HostFileSystemProvider(object):
13 '''Provides host file systems ("host" meaning the file system that hosts the 13 '''Provides host file systems ("host" meaning the file system that hosts the
14 server's source code and templates) tracking trunk, or any branch. 14 server's source code and templates) tracking master, or any branch.
15 15
16 File system instances are memoized to maintain the in-memory caches across 16 File system instances are memoized to maintain the in-memory caches across
17 multiple callers. 17 multiple callers.
18 ''' 18 '''
19 def __init__(self, 19 def __init__(self,
20 object_store_creator, 20 object_store_creator,
21 max_trunk_revision=None, 21 pinned_commit=None,
22 default_trunk_instance=None, 22 default_master_instance=None,
23 offline=False, 23 offline=False,
24 constructor_for_test=None): 24 constructor_for_test=None):
25 ''' 25 '''
26 |object_store_creator| 26 |object_store_creator|
27 Provides caches for file systems that need one. 27 Provides caches for file systems that need one.
28 |max_trunk_revision| 28 |pinned_commit|
29 If not None, the maximum revision that a 'trunk' file system will be 29 If not None, the commit at which a 'master' file system will be created.
30 created at. If None, 'trunk' file systems will use HEAD. 30 If None, 'master' file systems will use HEAD.
31 |default_trunk_instance| 31 |default_master_instance|
32 If not None, 'trunk' file systems provided by this class without a 32 If not None, 'master' file systems provided by this class without a
33 specific revision will return |default_trunk_instance| instead. 33 specific commit will return |default_master_instance| instead.
34 |offline| 34 |offline|
35 If True all provided file systems will be wrapped in an OfflineFileSystem. 35 If True all provided file systems will be wrapped in an OfflineFileSystem.
36 |constructor_for_test| 36 |constructor_for_test|
37 Provides a custom constructor rather than creating SubversionFileSystems. 37 Provides a custom constructor rather than creating GitilesFileSystems.
38 ''' 38 '''
39 self._object_store_creator = object_store_creator 39 self._object_store_creator = object_store_creator
40 self._max_trunk_revision = max_trunk_revision 40 self._pinned_commit = pinned_commit
41 self._default_trunk_instance = default_trunk_instance 41 self._default_master_instance = default_master_instance
42 self._offline = offline 42 self._offline = offline
43 self._constructor_for_test = constructor_for_test 43 self._constructor_for_test = constructor_for_test
44 44
45 @memoize 45 @memoize
46 def GetTrunk(self, revision=None): 46 def GetMaster(self, commit=None):
47 '''Gets a file system tracking 'trunk'. Use this method rather than 47 '''Gets a file system tracking 'master'. Use this method rather than
48 GetBranch('trunk') because the behaviour is subtly different; 'trunk' can 48 GetBranch('master') because the behaviour is subtly different; 'master' can
49 be pinned to a max revision (|max_trunk_revision| in constructor) and can 49 be pinned to a specific commit (|pinned_commit| in constructor) and can have
50 have its default instance overridden (|default_trunk_instance| in 50 have its default instance overridden (|default_master_instance| in the
51 constructor). 51 constructor).
52 52
53 |revision| if non-None determines a specific revision to pin the host file 53 |commit| if non-None determines a specific commit to pin the host file
54 system at, though it will be ignored if it exceeds |max_trunk_revision|. 54 system at, though it will be ignored if it's newer than |pinned_commit|.
55 If None then |revision| will track |max_trunk_revision| if is has been 55 If None then |commit| will track |pinned_commit| if is has been
56 set, or just HEAD (which might change during server runtime!). 56 set, or just HEAD (which might change during server runtime!).
57 ''' 57 '''
58 if revision is None: 58 if commit is None:
59 if self._default_trunk_instance is not None: 59 if self._default_master_instance is not None:
60 return self._default_trunk_instance 60 return self._default_master_instance
61 return self._Create('trunk', revision=self._max_trunk_revision) 61 return self._Create('master', commit=self._pinned_commit)
62 if self._max_trunk_revision is not None: 62 if self._pinned_commit is not None:
63 revision = min(revision, self._max_trunk_revision) 63 # XXX(ahernandez): THIS IS WRONG. Should be
64 return self._Create('trunk', revision=revision) 64 # commit = Oldest(commit, self._pinned_commit).
65 commit = min(commit, self._pinned_commit)
66 return self._Create('master', commit=commit)
65 67
66 @memoize 68 @memoize
67 def GetBranch(self, branch): 69 def GetBranch(self, branch):
68 '''Gets a file system tracking |branch|, for example '1150' - anything other 70 '''Gets a file system tracking |branch|, for example '1150' - anything other
69 than 'trunk', which must be constructed via the GetTrunk() method. 71 than 'master', which must be constructed via the GetMaster() method.
70 72
71 Note: Unlike GetTrunk this function doesn't take a |revision| argument 73 Note: Unlike GetMaster this function doesn't take a |commit| argument
72 since we assume that branches hardly ever change, while trunk frequently 74 since we assume that branches hardly ever change, while master frequently
73 changes. 75 changes.
74 ''' 76 '''
75 assert isinstance(branch, basestring), 'Branch %s must be a string' % branch 77 assert isinstance(branch, basestring), 'Branch %s must be a string' % branch
76 assert branch != 'trunk', 'Cannot specify branch=\'trunk\', use GetTrunk()' 78 assert branch != 'master', (
79 'Cannot specify branch=\'master\', use GetMaster()')
77 return self._Create(branch) 80 return self._Create(branch)
78 81
79 def _Create(self, branch, revision=None): 82 def _Create(self, branch, commit=None):
80 '''Creates SVN file systems (or if in a test, potentially whatever 83 '''Creates Gitiles file systems (or if in a test, potentially whatever
81 |self._constructor_for_test specifies). Wraps the resulting file system in 84 |self._constructor_for_test specifies). Wraps the resulting file system in
82 an Offline file system if the offline flag is set, and finally wraps it in 85 an Offline file system if the offline flag is set, and finally wraps it in
83 a Caching file system. 86 a Caching file system.
84 ''' 87 '''
85 if self._constructor_for_test is not None: 88 if self._constructor_for_test is not None:
86 file_system = self._constructor_for_test(branch=branch, revision=revision) 89 file_system = self._constructor_for_test(branch=branch, commit=commit)
87 else: 90 else:
88 file_system = SubversionFileSystem.Create(branch=branch, 91 file_system = GitilesFileSystem.Create(branch=branch, commit=commit)
89 revision=revision)
90 if self._offline: 92 if self._offline:
91 file_system = OfflineFileSystem(file_system) 93 file_system = OfflineFileSystem(file_system)
92 return CachingFileSystem(file_system, self._object_store_creator) 94 return CachingFileSystem(file_system, self._object_store_creator)
93 95
94 @staticmethod 96 @staticmethod
95 def ForLocal(object_store_creator, **optargs): 97 def ForLocal(object_store_creator, **optargs):
96 '''Used in creating a server instance on localhost. 98 '''Used in creating a server instance on localhost.
97 ''' 99 '''
98 return HostFileSystemProvider( 100 return HostFileSystemProvider(
99 object_store_creator, 101 object_store_creator,
100 constructor_for_test=lambda **_: LocalFileSystem.Create(), 102 constructor_for_test=lambda **_: LocalFileSystem.Create(),
101 **optargs) 103 **optargs)
102 104
103 @staticmethod 105 @staticmethod
104 def ForTest(file_system, object_store_creator, **optargs): 106 def ForTest(file_system, object_store_creator, **optargs):
105 '''Used in creating a test server instance. The HostFileSystemProvider 107 '''Used in creating a test server instance. The HostFileSystemProvider
106 returned here will always return |file_system| when its Create() method is 108 returned here will always return |file_system| when its Create() method is
107 called. 109 called.
108 ''' 110 '''
109 return HostFileSystemProvider( 111 return HostFileSystemProvider(
110 object_store_creator, 112 object_store_creator,
111 constructor_for_test=lambda **_: file_system, 113 constructor_for_test=lambda **_: file_system,
112 **optargs) 114 **optargs)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698