2009-12-02 Eric Seidel <eric@webkit.org>
[WebKit-https.git] / WebKitTools / Scripts / modules / commands / queries.py
1 #!/usr/bin/env python
2 # Copyright (c) 2009, Google Inc. All rights reserved.
3 # Copyright (c) 2009 Apple Inc. All rights reserved.
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are
7 # met:
8
9 #     * Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
11 #     * Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following disclaimer
13 # in the documentation and/or other materials provided with the
14 # distribution.
15 #     * Neither the name of Google Inc. nor the names of its
16 # contributors may be used to endorse or promote products derived from
17 # this software without specific prior written permission.
18
19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31
32 from optparse import make_option
33
34 from modules.buildbot import BuildBot
35 from modules.logging import log
36 from modules.multicommandtool import Command
37
38 class BugsToCommit(Command):
39     name = "bugs-to-commit"
40     show_in_main_help = False
41     def __init__(self):
42         Command.__init__(self, "List bugs in the commit-queue")
43
44     def execute(self, options, args, tool):
45         bug_ids = tool.bugs.fetch_bug_ids_from_commit_queue()
46         for bug_id in bug_ids:
47             print "%s" % bug_id
48
49
50 class PatchesToCommit(Command):
51     name = "patches-to-commit"
52     show_in_main_help = False
53     def __init__(self):
54         Command.__init__(self, "List patches in the commit-queue")
55
56     def execute(self, options, args, tool):
57         patches = tool.bugs.fetch_patches_from_commit_queue()
58         log("Patches in commit queue:")
59         for patch in patches:
60             print "%s" % patch["url"]
61
62
63 class PatchesToReview(Command):
64     name = "patches-to-review"
65     show_in_main_help = False
66     def __init__(self):
67         Command.__init__(self, "List patches that are pending review")
68
69     def execute(self, options, args, tool):
70         patch_ids = tool.bugs.fetch_attachment_ids_from_review_queue()
71         log("Patches pending review:")
72         for patch_id in patch_ids:
73             print patch_id
74
75
76 class ReviewedPatches(Command):
77     name = "reviewed-patches"
78     show_in_main_help = False
79     def __init__(self):
80         Command.__init__(self, "List r+'d patches on a bug", "BUGID")
81
82     def execute(self, options, args, tool):
83         bug_id = args[0]
84         patches_to_land = tool.bugs.fetch_reviewed_patches_from_bug(bug_id)
85         for patch in patches_to_land:
86             print "%s" % patch["url"]
87
88
89 class TreeStatus(Command):
90     name = "tree-status"
91     show_in_main_help = True
92     def __init__(self):
93         Command.__init__(self, "Print the status of the %s buildbots" % BuildBot.default_host)
94
95     def execute(self, options, args, tool):
96         for builder in tool.buildbot.builder_statuses():
97             status_string = "ok" if builder["is_green"] else "FAIL"
98             print "%s : %s" % (status_string.ljust(4), builder["name"])