From 094cdbe090a18c35fdcfb463435d793cc0239e83 Mon Sep 17 00:00:00 2001 From: Conley Owens Date: Thu, 30 Jan 2014 15:09:59 -0800 Subject: [PATCH] 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 --- main.py | 20 +++++--------------- subcmds/sync.py | 4 ++-- wrapper.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 wrapper.py diff --git a/main.py b/main.py index e4cdeb0f..6ec7158d 100755 --- a/main.py +++ b/main.py @@ -46,6 +46,7 @@ from error import NoSuchProjectError from error import RepoChangedException from manifest_xml import XmlManifest from pager import RunPager +from wrapper import WrapperPath, Wrapper from subcmds import all_commands @@ -169,21 +170,10 @@ class _Repo(object): return result + def _MyRepoPath(): 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): if not repo_path: @@ -193,7 +183,7 @@ def _CheckWrapperVersion(ver, repo_path): print('no --wrapper-version argument', file=sys.stderr) sys.exit(1) - exp = _CurrentWrapperVersion() + exp = Wrapper().VERSION ver = tuple(map(int, ver.split('.'))) if len(ver) == 1: ver = (0, ver[0]) @@ -205,7 +195,7 @@ def _CheckWrapperVersion(ver, repo_path): !!! You must upgrade before you can continue: !!! cp %s %s -""" % (exp_str, _MyWrapperPath(), repo_path), file=sys.stderr) +""" % (exp_str, WrapperPath(), repo_path), file=sys.stderr) sys.exit(1) if exp > ver: @@ -214,7 +204,7 @@ def _CheckWrapperVersion(ver, repo_path): ... You should upgrade soon: cp %s %s -""" % (exp_str, _MyWrapperPath(), repo_path), file=sys.stderr) +""" % (exp_str, WrapperPath(), repo_path), file=sys.stderr) def _CheckRepoDir(repo_dir): if not repo_dir: diff --git a/subcmds/sync.py b/subcmds/sync.py index e138be05..27c8c728 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -58,13 +58,13 @@ except ImportError: from git_command import GIT, git_require from git_refs import R_HEADS, HEAD -from main import WrapperModule from project import Project from project import RemoteSpec from command import Command, MirrorSafeCommand from error import RepoChangedException, GitError, ManifestParseError from project import SyncBuffer from progress import Progress +from wrapper import Wrapper _ONE_DAY_S = 24 * 60 * 60 @@ -699,7 +699,7 @@ later is required to fix a server side protocol bug. print(self.manifest.notice) def _PostRepoUpgrade(manifest, quiet=False): - wrapper = WrapperModule() + wrapper = Wrapper() if wrapper.NeedSetupGnuPG(): wrapper.SetupGnuPG(quiet) for project in manifest.projects: diff --git a/wrapper.py b/wrapper.py new file mode 100644 index 00000000..e7e276ec --- /dev/null +++ b/wrapper.py @@ -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