This file is indexed.

/usr/bin/lp-get-branches 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
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2007 Canonical Ltd.
# Created by Daniel Holbach <daniel.holbach@ubuntu.com>
# Modified by Jonathan Patrick Davies <jpds@ubuntu.com>
#
# ##################################################################
#
# This program 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; version 3.
#
# This program 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.
#
# See file /usr/share/common-licenses/GPL-3 for more details.
#
# ##################################################################
#
# This script is used to checkout or branch all the Bazaar branches
# of a Launchpad team.
#

import os
import subprocess
import sys
from lptools import config
from optparse import OptionParser

def main():
    usage = "Usage: %prog [-d <directory>] -t <team> [-o <operation>]"
    usage += "\nUsage: %prog <team>"
    opt_parser = OptionParser(usage)

    # Our options.
    opt_parser.add_option("-d", "--directory", action="store", type="string",
                          dest="directory", default=os.getcwd(),
                          help="Directory to download branches to.")
    opt_parser.add_option("-t", "--team", action="store", type="string",
                          dest="lpteam",
                          help="Launchpad team to download branches from.")
    opt_parser.add_option("-o", "--operation", action="store", type="string",
                          dest="operation", default="branch",
                          help="Whether to branch or checkout the Bazaar "
                               "branches. May be either 'branch' or "
                               "'checkout'.")

    (options, args) = opt_parser.parse_args()

    launchpad = config.get_launchpad("get-branches")

    # Fetch our current directory to return to later.
    pwd = os.getcwd()

    # Parse our options.
    if len(args) != 1 and options.lpteam == None:
        opt_parser.error("No team has been specified.")

    # Dictionary settings.
    directory = options.directory
    if not os.path.isdir(directory): # Check that it is a directory.
        opt_parser.error("%s is not a valid directory." % directory)
    os.chdir(directory)

    # Type of Bazaar operation to perform.
    operation_type = options.operation.lower()
    if operation_type not in ("branch", "checkout"):
        opt_parser.error("Invalid operation '%s' for '-o' flag." % \
            operation_type)

    # Launchpad team setting.
    if options.lpteam:
        team = options.lpteam.lower()
    if args:
        team = args[0].lower()
    try:
        team = launchpad.people[team]
    except KeyError:
        print >> sys.stderr, "E: The team '%s' doesn't exist." % team

    # Get a list of branches
    branches = team.getBranches()

    print "Downloading all branches for the '%s' team. This may take some " \
        "time." % team.display_name

    try:
        os.makedirs(team.name)
    except:
        pass

    os.chdir(team.name)

    for branch in branches:
        project_name = branch.project.name
        if not os.path.exists(project_name):
            os.makedirs(project_name)
        os.chdir(project_name)

        if not os.path.exists(branch.name):
            print "Branching %s ..." % branch.display_name
            cmd = ["bzr", operation_type, branch.bzr_identity, branch.name]
            subprocess.call(cmd)
        else:
            print "Merging %s ..." % branch.display_name
            os.chdir(branch.name)
            subprocess.call(["bzr", "merge", "--pull", "--remember"])
        os.chdir(os.path.join(directory, team.name))

    os.chdir(pwd)
    sys.exit(0)

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print "Operation was interrupted by user."