mirror of
				https://git.launchpad.net/ubuntu-dev-tools
				synced 2025-11-04 07:54:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python
 | 
						|
 | 
						|
# Open an interactive launchpadlib Python shell.
 | 
						|
# It supports all known LP service instances and API versions. The login
 | 
						|
# can optionally happen anonymously.
 | 
						|
 | 
						|
# Author: Martin Pitt <martin.pitt@ubuntu.com>
 | 
						|
# Copyright: (C) 2010 Canonical Ltd.
 | 
						|
#
 | 
						|
# This package is free software; you can redistribute it and/or modify
 | 
						|
# it under the terms of the GNU General Public License as published by
 | 
						|
# the Free Software Foundation, at version 2.
 | 
						|
#
 | 
						|
# This package is distributed in the hope that it will be useful,
 | 
						|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
# GNU General Public License for more details.
 | 
						|
 | 
						|
import sys
 | 
						|
import code
 | 
						|
from optparse import OptionParser
 | 
						|
 | 
						|
from launchpadlib.launchpad import Launchpad
 | 
						|
from launchpadlib.uris import lookup_service_root
 | 
						|
 | 
						|
instance = 'edge'
 | 
						|
valid_api_versions = ('beta', '1.0', 'devel')
 | 
						|
api_version = '1.0'
 | 
						|
 | 
						|
usage = 'Usage: %prog [-a] [instance] [LP API version]'
 | 
						|
optParser = OptionParser(usage)
 | 
						|
optParser.add_option('-a', action='store_true',
 | 
						|
        dest='anonymous', default=False,
 | 
						|
        help='Login anonymously into LP.')
 | 
						|
 | 
						|
(options, args) = optParser.parse_args()
 | 
						|
 | 
						|
if len(args) >= 1:
 | 
						|
    try:
 | 
						|
        instance = lookup_service_root(args[0])
 | 
						|
    except ValueError, err:
 | 
						|
        print 'E: %s' % (err)
 | 
						|
        print 'I: Falling back to "edge".'
 | 
						|
 | 
						|
if len(args) >= 2:
 | 
						|
    if args[1] in valid_api_versions:
 | 
						|
        api_version = args[1]
 | 
						|
    else:
 | 
						|
        print 'E: "%s" is not a valid LP API version.' % (args[1])
 | 
						|
        print 'I: Falling back to "1.0".'
 | 
						|
 | 
						|
if options.anonymous:
 | 
						|
    lp = Launchpad.login_anonymously('udt-lp-shell', instance, version=api_version)
 | 
						|
    banner = 'Connected anonymously to LP service "%s" with API version "%s":' % (
 | 
						|
            instance, api_version)
 | 
						|
else:
 | 
						|
    lp = Launchpad.login_with('udt-lp-shell', instance, version=api_version)
 | 
						|
    banner = 'Connected to LP service "%s" with API version "%s":' % (
 | 
						|
            instance, api_version)
 | 
						|
 | 
						|
banner += '\nNote: LP can be accessed through the "lp" object.'
 | 
						|
 | 
						|
class CompleterConsole(code.InteractiveConsole):
 | 
						|
    def __init__(self):
 | 
						|
        local = {'lp': lp}
 | 
						|
        code.InteractiveConsole.__init__(self,
 | 
						|
                locals=local)
 | 
						|
        try:
 | 
						|
            import readline
 | 
						|
        except ImportError:
 | 
						|
            print 'I: readline module not available.'
 | 
						|
        else:
 | 
						|
            import rlcompleter
 | 
						|
            readline.parse_and_bind("tab: complete")
 | 
						|
 | 
						|
# Disable default apport hook, as lp-shell is intended for interactive use
 | 
						|
# and thus exceptions often bubble up to the top level.
 | 
						|
sys.excepthook = sys.__excepthook__
 | 
						|
 | 
						|
console = CompleterConsole()
 | 
						|
console.interact(banner)
 |