~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/plugins/launchpad/__init__.py

  • Committer: Andrew Bennetts
  • Date: 2009-07-27 05:35:00 UTC
  • mfrom: (4570 +trunk)
  • mto: (4634.6.29 2.0)
  • mto: This revision was merged to the branch mainline in revision 4680.
  • Revision ID: andrew.bennetts@canonical.com-20090727053500-q76zsn2dx33jhmj5
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""Launchpad.net integration plugin for Bazaar."""
18
18
 
21
21
 
22
22
# see http://bazaar-vcs.org/Specs/BranchRegistrationTool
23
23
 
 
24
# Since we are a built-in plugin we share the bzrlib version
 
25
from bzrlib import version_info
 
26
 
24
27
from bzrlib.lazy_import import lazy_import
25
28
lazy_import(globals(), """
26
 
import webbrowser
27
 
 
28
29
from bzrlib import (
29
30
    branch as _mod_branch,
30
31
    trace,
53
54
    launchpad.net.  Registration allows the branch to be associated with
54
55
    bugs or specifications.
55
56
 
56
 
    Before using this command you must register the product to which the
 
57
    Before using this command you must register the project to which the
57
58
    branch belongs, and create an account for yourself on launchpad.net.
58
59
 
59
60
    arguments:
66
67
                    otherwise error.
67
68
 
68
69
    example:
69
 
        bzr register-branch http://foo.com/bzr/fooproduct.mine \\
70
 
                --product fooproduct
 
70
        bzr register-branch http://foo.com/bzr/fooproject.mine \\
 
71
                --project fooproject
71
72
    """
72
73
    takes_args = ['public_url?']
73
74
    takes_options = [
 
75
         Option('project',
 
76
                'Launchpad project short name to associate with the branch.',
 
77
                unicode),
74
78
         Option('product',
75
 
                'Launchpad product short name to associate with the branch.',
76
 
                unicode),
 
79
                'Launchpad product short name to associate with the branch.', 
 
80
                unicode,
 
81
                hidden=True),
77
82
         Option('branch-name',
78
83
                'Short name for the branch; '
79
84
                'by default taken from the last component of the url.',
97
102
 
98
103
    def run(self,
99
104
            public_url=None,
100
 
            product='',
 
105
            project='',
 
106
            product=None,
101
107
            branch_name='',
102
108
            branch_title='',
103
109
            branch_description='',
116
122
            public_url = b.get_public_branch()
117
123
            if public_url is None:
118
124
                raise NoPublicBranch(b)
 
125
        if product is not None:
 
126
            project = product
 
127
            trace.note('--product is deprecated; please use --project.')
 
128
 
119
129
 
120
130
        rego = BranchRegistrationRequest(branch_url=public_url,
121
131
                                         branch_name=branch_name,
122
132
                                         branch_title=branch_title,
123
133
                                         branch_description=branch_description,
124
 
                                         product_name=product,
 
134
                                         product_name=project,
125
135
                                         author_email=author,
126
136
                                         )
127
137
        linko = BranchBugLinkRequest(branch_url=public_url,
184
194
        web_url = self._get_web_url(LaunchpadService(), location)
185
195
        trace.note('Opening %s in web browser' % web_url)
186
196
        if not dry_run:
 
197
            import webbrowser   # this import should not be lazy
 
198
                                # otherwise bzr.exe lacks this module
187
199
            webbrowser.open(web_url)
188
200
 
189
201
register_command(cmd_launchpad_open)
208
220
    aliases = ['lp-login']
209
221
    takes_args = ['name?']
210
222
    takes_options = [
 
223
        'verbose',
211
224
        Option('no-check',
212
225
               "Don't check that the user name is valid."),
213
226
        ]
214
227
 
215
 
    def run(self, name=None, no_check=False):
 
228
    def run(self, name=None, no_check=False, verbose=False):
216
229
        from bzrlib.plugins.launchpad import account
217
230
        check_account = not no_check
218
231
 
221
234
            if username:
222
235
                if check_account:
223
236
                    account.check_lp_login(username)
 
237
                    if verbose:
 
238
                        self.outf.write(
 
239
                            "Launchpad user ID exists and has SSH keys.\n")
224
240
                self.outf.write(username + '\n')
225
241
            else:
226
242
                self.outf.write('No Launchpad user ID configured.\n')
227
243
                return 1
228
244
        else:
 
245
            name = name.lower()
229
246
            if check_account:
230
247
                account.check_lp_login(name)
 
248
                if verbose:
 
249
                    self.outf.write(
 
250
                        "Launchpad user ID exists and has SSH keys.\n")
231
251
            account.set_lp_login(name)
 
252
            if verbose:
 
253
                self.outf.write("Launchpad user ID set to '%s'.\n" % (name,))
232
254
 
233
255
register_command(cmd_launchpad_login)
234
256
 
246
268
    from bzrlib.plugins.launchpad import (
247
269
        test_account,
248
270
        test_lp_directory,
 
271
        test_lp_login,
249
272
        test_lp_open,
250
273
        test_lp_service,
251
274
        test_register,
257
280
        test_account,
258
281
        test_register,
259
282
        test_lp_directory,
 
283
        test_lp_login,
260
284
        test_lp_open,
261
285
        test_lp_service,
262
286
        ]:
275
299
      is then used by the 'lp:' transport to download your branches using
276
300
      bzr+ssh://.
277
301
 
 
302
    * The 'lp:' transport uses Launchpad as a directory service: for example
 
303
      'lp:bzr' and 'lp:python' refer to the main branches of the relevant
 
304
      projects and may be branched, logged, etc. You can also use the 'lp:'
 
305
      transport to refer to specific branches, e.g. lp:~bzr/bzr/trunk.
 
306
 
 
307
    * The 'lp:' bug tracker alias can expand launchpad bug numbers to their
 
308
      URLs for use with 'bzr commit --fixes', e.g. 'bzr commit --fixes lp:12345'
 
309
      will record a revision property that marks that revision as fixing
 
310
      Launchpad bug 12345. When you push that branch to Launchpad it will
 
311
      automatically be linked to the bug report.
 
312
 
278
313
    * The register-branch command tells Launchpad about the url of a
279
314
      public branch.  Launchpad will then mirror the branch, display
280
315
      its contents and allow it to be attached to bugs and other
281
316
      objects.
282
317
 
283
 
    * The 'lp:' transport uses Launchpad as a directory service: for example
284
 
      'lp:bzr' and 'lp:python' refer to the main branches of the relevant
285
 
      projects and may be branched, logged, etc. You can also use the 'lp:'
286
 
      transport to refer to specific branches, e.g. lp:///~bzr/bzr/trunk.
287
 
 
288
318
For more information see http://help.launchpad.net/
289
319
"""
290
320
topic_registry.register('launchpad',