22
22
# see http://bazaar-vcs.org/Specs/BranchRegistrationTool
24
from bzrlib.branch import Branch
24
from bzrlib.lazy_import import lazy_import
25
lazy_import(globals(), """
29
branch as _mod_branch,
25
34
from bzrlib.commands import Command, Option, register_command
26
35
from bzrlib.directory_service import directories
27
from bzrlib.errors import BzrCommandError, NoPublicBranch, NotBranchError
36
from bzrlib.errors import (
28
42
from bzrlib.help_topics import topic_registry
43
from bzrlib.plugins.launchpad.lp_registration import (
31
49
class cmd_register_branch(Command):
140
157
takes_args = ['location?']
159
def _possible_locations(self, location):
160
"""Yield possible external locations for the branch at 'location'."""
163
branch = _mod_branch.Branch.open(location)
164
except NotBranchError:
166
branch_url = branch.get_public_branch()
167
if branch_url is not None:
169
branch_url = branch.get_push_location()
170
if branch_url is not None:
173
def _get_web_url(self, service, location):
174
for branch_url in self._possible_locations(location):
176
return service.get_web_url_from_branch_url(branch_url)
177
except (NotLaunchpadBranch, InvalidURL):
179
raise NotLaunchpadBranch(branch_url)
142
181
def run(self, location=None, dry_run=False):
143
from bzrlib.plugins.launchpad.lp_registration import LaunchpadService
144
from bzrlib.trace import note
146
182
if location is None:
148
branch = Branch.open(location)
149
branch_url = branch.get_public_branch()
150
if branch_url is None:
151
raise NoPublicBranch(branch)
152
service = LaunchpadService()
153
web_url = service.get_web_url_from_branch_url(branch_url)
154
note('Opening %s in web browser' % web_url)
184
web_url = self._get_web_url(LaunchpadService(), location)
185
trace.note('Opening %s in web browser' % web_url)
156
187
webbrowser.open(web_url)