Add wrapper module

This takes the wrapper importing code from main.py and moves it into
its own module so that other modules may import it without causing
circular imports with main.py.

Change-Id: I9402950573933ed6f14ce0bfb600f74f32727705
This commit is contained in:
Conley Owens 2014-01-30 15:09:59 -08:00
parent 148a84de0c
commit 094cdbe090
3 changed files with 37 additions and 17 deletions

20
main.py
View File

@ -46,6 +46,7 @@ from error import NoSuchProjectError
from error import RepoChangedException from error import RepoChangedException
from manifest_xml import XmlManifest from manifest_xml import XmlManifest
from pager import RunPager from pager import RunPager
from wrapper import WrapperPath, Wrapper
from subcmds import all_commands from subcmds import all_commands
@ -169,21 +170,10 @@ class _Repo(object):
return result return result
def _MyRepoPath(): def _MyRepoPath():
return os.path.dirname(__file__) return os.path.dirname(__file__)
def _MyWrapperPath():
return os.path.join(os.path.dirname(__file__), 'repo')
_wrapper_module = None
def WrapperModule():
global _wrapper_module
if not _wrapper_module:
_wrapper_module = imp.load_source('wrapper', _MyWrapperPath())
return _wrapper_module
def _CurrentWrapperVersion():
return WrapperModule().VERSION
def _CheckWrapperVersion(ver, repo_path): def _CheckWrapperVersion(ver, repo_path):
if not repo_path: if not repo_path:
@ -193,7 +183,7 @@ def _CheckWrapperVersion(ver, repo_path):
print('no --wrapper-version argument', file=sys.stderr) print('no --wrapper-version argument', file=sys.stderr)
sys.exit(1) sys.exit(1)
exp = _CurrentWrapperVersion() exp = Wrapper().VERSION
ver = tuple(map(int, ver.split('.'))) ver = tuple(map(int, ver.split('.')))
if len(ver) == 1: if len(ver) == 1:
ver = (0, ver[0]) ver = (0, ver[0])
@ -205,7 +195,7 @@ def _CheckWrapperVersion(ver, repo_path):
!!! You must upgrade before you can continue: !!! !!! You must upgrade before you can continue: !!!
cp %s %s cp %s %s
""" % (exp_str, _MyWrapperPath(), repo_path), file=sys.stderr) """ % (exp_str, WrapperPath(), repo_path), file=sys.stderr)
sys.exit(1) sys.exit(1)
if exp > ver: if exp > ver:
@ -214,7 +204,7 @@ def _CheckWrapperVersion(ver, repo_path):
... You should upgrade soon: ... You should upgrade soon:
cp %s %s cp %s %s
""" % (exp_str, _MyWrapperPath(), repo_path), file=sys.stderr) """ % (exp_str, WrapperPath(), repo_path), file=sys.stderr)
def _CheckRepoDir(repo_dir): def _CheckRepoDir(repo_dir):
if not repo_dir: if not repo_dir:

View File

@ -58,13 +58,13 @@ except ImportError:
from git_command import GIT, git_require from git_command import GIT, git_require
from git_refs import R_HEADS, HEAD from git_refs import R_HEADS, HEAD
from main import WrapperModule
from project import Project from project import Project
from project import RemoteSpec from project import RemoteSpec
from command import Command, MirrorSafeCommand from command import Command, MirrorSafeCommand
from error import RepoChangedException, GitError, ManifestParseError from error import RepoChangedException, GitError, ManifestParseError
from project import SyncBuffer from project import SyncBuffer
from progress import Progress from progress import Progress
from wrapper import Wrapper
_ONE_DAY_S = 24 * 60 * 60 _ONE_DAY_S = 24 * 60 * 60
@ -699,7 +699,7 @@ later is required to fix a server side protocol bug.
print(self.manifest.notice) print(self.manifest.notice)
def _PostRepoUpgrade(manifest, quiet=False): def _PostRepoUpgrade(manifest, quiet=False):
wrapper = WrapperModule() wrapper = Wrapper()
if wrapper.NeedSetupGnuPG(): if wrapper.NeedSetupGnuPG():
wrapper.SetupGnuPG(quiet) wrapper.SetupGnuPG(quiet)
for project in manifest.projects: for project in manifest.projects:

30
wrapper.py Normal file
View File

@ -0,0 +1,30 @@
#!/usr/bin/env python
#
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function
import imp
import os
def WrapperPath():
return os.path.join(os.path.dirname(__file__), 'repo')
_wrapper_module = None
def Wrapper():
global _wrapper_module
if not _wrapper_module:
_wrapper_module = imp.load_source('wrapper', WrapperPath())
return _wrapper_module