~raof/launchpad-integration/fix-cli-library-install

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import sys
import logging
import optparse
import subprocess

from launchpadintegration.packageinfo import PackageInfo
from launchpadintegration.urls import (
    showUrl, getInfoUrl, getTranslateUrl)

def main():
    parser = optparse.OptionParser(usage="launchpad-integration [options]")
    parser.add_option('-p', '--pid', dest='pid', type='int', default=None,
                      metavar="PID", help="Process ID to look up")
    parser.add_option('-f', '--file', dest='filename', default=None,
                      metavar="FILE", help="Filename to look up")
    parser.add_option('-P', '--package', dest='package', default=None,
                      metavar="PACKAGE", help="Package to look up")
    parser.add_option('-x', '--xid', dest='xid', default=None,
                      metavar="XID", help="X Window ID to look up")
    parser.add_option('-d', '--debug', action='store_true', dest='debug',
                      help="Print debugging info")

    parser.add_option('-i', '--info', action='store_true', dest='getinfo',
                      help="Show Launchpad information page for package")
    parser.add_option('-t', '--translate', action='store_true',
                      dest='translate',
                      help="Show Launchpad translate page for package")
    parser.add_option('-b', '--bugs', action='store_true',
                      dest='filebug',
                      help="File a bug for package")

    (options, args) = parser.parse_args()

    logger = logging.getLogger()
    hdlr = logging.StreamHandler(strm=sys.stderr)
    hdlr.setFormatter(logging.Formatter('%(asctime)s %(levelname)s %(message)s'))
    logger.addHandler(hdlr)
    if options.debug:
        logger.setLevel(logging.DEBUG)
    else:
        logger.setLevel(logging.WARN)

    if options.pid:
        pkginfo = PackageInfo.fromProcessID(options.pid, logger)
    elif options.filename:
        pkginfo = PackageInfo.fromFilename(options.filename, logger)
    elif options.package:
        pkginfo = PackageInfo.fromPackageName(options.package, logger)
    elif options.xid:
        pkginfo = PackageInfo.fromXID(options.xid, logger)
    else:
        #info = PackageInfo.fromXID(None, logger)
        pkginfo = None
        parser.print_help()
        sys.exit(1)       

    if options.getinfo:
        return showUrl(getInfoUrl(pkginfo), logger)
    elif options.translate:
        return showUrl(getTranslateUrl(pkginfo), logger)
    elif options.filebug:
	args = ['ubuntu-bug']
	if options.pid:
	    args.append(str(options.pid))
	else: 
	    assert pkginfo.binarypackage, 'need to specify pid or package'
	    args.append(pkginfo.binarypackage)
	subprocess.call(args)
    else:
        print 'Name:', pkginfo.binarypackage
        print 'Source:', pkginfo.sourcepackage
        print 'Version:', pkginfo.version
        print 'Arch:', pkginfo.architecture
        sys.stderr.write('show GUI here\n')
        sys.exit(1)