plugins/bugzilla.lua

Sun, 05 Dec 2021 18:35:39 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Sun, 05 Dec 2021 18:35:39 +0000
changeset 165
ec0567256b11
parent 51
c93cae5fe3dc
permissions
-rw-r--r--

Add rtbl_admin plugin

51
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
1
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
2 -- bugzilla plugin - Queries a bugzilla instance, via the !bug command, and responds
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
3 -- with the data found.
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
4 -- Requires Bugzilla 3.6 or later, and XMLRPC enabled.
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
5 -- Also requires lua-xmlrpc - see
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
6 -- http://keplerproject.github.com/lua-xmlrpc/
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
7
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
8 -- Configuration:
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
9 -- Define a 'bugzilla' entry pointing to the root of the bugzilla installation,
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
10 -- e.g. "http://my.bugzilla.example.com"
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
11 -- Optionally, if the buzgilla requires authentication, define buigzilla_user and
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
12 -- bugzilla_password as well. If they're not defined, it is assumed that authentication
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
13 -- is not required.
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
14
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
15 -- Written by Ciaran Gultnieks <ciaran@ciarang.com> - feel free to contact if it
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
16 -- doesn't work!
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
17
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
18 function riddim.plugins.bugzilla(bot)
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
19
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
20 local bugzilla = bot.config.bugzilla
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
21 if not bugzilla then return end
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
22
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
23 local bugzilla_x = bugzilla .. "/xmlrpc.cgi"
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
24
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
25 require("lxp.lom")
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
26 xh = require("xmlrpc.http")
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
27
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
28 bot:hook("commands/bug", function(command)
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
29 if not command.param then return end
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
30 local bug_id = string.match(command.param, "%w+")
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
31 if not bug_id then return end
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
32
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
33 local params = {}
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
34 if bot.config.bugzilla_user then
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
35 params.Bugzilla_login = bot.config.bugzilla_user
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
36 params.Bugzilla_password = bot.config.bugzilla_password
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
37 end
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
38 params.permissive = false
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
39 string_array_type = xmlrpc.newArray ("string")
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
40 params.ids = xmlrpc.newTypedValue ( { bug_id }, string_array_type)
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
41
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
42 local ok,res = xh.call(bugzilla_x, "Bug.get", params)
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
43 if not ok then
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
44 command:reply("Failed to get bug details - " .. res)
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
45 return
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
46 end
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
47
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
48 local bug = res['bugs'][1]
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
49 local desc = bug.summary
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
50
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
51 command:reply(
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
52 "Bug " .. bug_id .. " (" .. bug.status .. "/" .. bug.resolution
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
53 .. "): " .. bug.summary .. " "
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
54 .. bugzilla .. "/show_bug.cgi?id=" .. bug_id
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
55 )
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
56 end)
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
57 end
c93cae5fe3dc Bugzilla plugin
Ciaran Gultnieks <ciaran@ciarang.com>
parents:
diff changeset
58

mercurial