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
3 # found in the LICENSE file.
5 from caching_file_system
import CachingFileSystem
6 from empty_dir_file_system
import EmptyDirFileSystem
7 from github_file_system
import GithubFileSystem
as OldGithubFileSystem
8 from new_github_file_system
import GithubFileSystem
as NewGithubFileSystem
11 class GithubFileSystemProvider(object):
12 '''Provides GithubFileSystems bound to an owner/repo pair.
15 def __init__(self
, object_store_creator
):
16 self
._object
_store
_creator
= object_store_creator
18 def Create(self
, owner
, repo
):
19 '''Creates a GithubFileSystem. For legacy reasons this is hacked
20 such that the apps samples returns the old GithubFileSystem.
22 |owner| is the owner of the GitHub account, e.g. 'GoogleChrome'.
23 |repo| is the repository name, e.g. 'devtools-docs'.
25 if owner
== 'GoogleChrome' and repo
== 'chrome-app-samples':
26 # NOTE: The old GitHub file system implementation doesn't support being
27 # wrapped by a CachingFileSystem. It's also too slow to run on the dev
28 # server, since every app API page would need to read from it.
29 return OldGithubFileSystem
.CreateChromeAppsSamples(
30 self
._object
_store
_creator
)
31 return CachingFileSystem(
32 NewGithubFileSystem
.Create(owner
, repo
, self
._object
_store
_creator
),
33 self
._object
_store
_creator
)
37 class EmptyImpl(object):
38 def Create(self
, owner
, repo
):
39 return EmptyDirFileSystem()