This file is indexed.

/usr/bin/lp-attach is in lptools 0.2.0-2.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 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
76
77
78
79
80
81
82
#! /usr/bin/python
#
# Copyright (C) 2010 Canonical Ltd

"""lp-attach Attach a file to a Launchpad bug

usage: lp_attach BUGNUMBER 

Attaches a file (read from stdin) as an attachment on a named Launchpad bug.
"""

# TODO: option to set the attachment name, and to set whether it's a patch
#
# TODO: option to open the bug after attaching
#
# TODO: option to add a comment as well as the attachment
#
# TODO: option to set the subject of the comment
# 
# TODO: option to comment on a merge proposal or question rather than a bug
#
# TODO: option to add a comment rather than an attachment 
#
# TODO: option to use staging -- for now use 
# export LAUNCHPAD_API=https://api.staging.launchpad.net/
#
# TODO: option to set mime type
#
# TODO: detect mime type if not set - could use python-magic

import sys
from lptools import config


def guess_mime_type(attachment_bytes):
    try:
        import magic
    except ImportError, e:
        sys.stderr.write("can't guess mime-types without the python-magic library: %s" % e)
        mimetype = None
    else:
        mime = magic.open(magic.MAGIC_MIME)
        mimetype = mime.buffer(attachment_bytes)
    if mimetype is None:
        mimetype = 'application/binary'
    print 'attachment type %s' % mimetype
    return mimetype


def main(argv):
    if len(argv) != 2 or argv[1] == '--help':
        print __doc__
        return 3

    try:
        bugnumber = int(argv[1])
    except TypeError:
        sys.stderr.write("please give a Launchpad bug number\n")
        return 1

    lp = config.get_launchpad("attach")
    print "getting bug %s" % bugnumber
    bug = lp.bugs[bugnumber]
    print 'Attaching to %s' % bug

    attachment_bytes = sys.stdin.read()
    print '%d bytes to attach' % len(attachment_bytes)

    mime_type = guess_mime_type(attachment_bytes)

    # mime type must be specified otherwise
    # <https://bugs.edge.launchpad.net/malone/+bug/204560> assumes it's
    # chemical/x-mopac-input
    print bug.addAttachment(comment='',
        data=attachment_bytes,
        description='',
        filename='attachment',
        content_type=mime_type)


if __name__ == '__main__':
    sys.exit(main(sys.argv))