mcbot/cmds/mcabber_bts.lua
author Mikael Berthe <mikael@lilotux.net>
Tue, 13 Apr 2010 22:43:43 +0200
changeset 6 7cf014d0d206
child 7 c515e8218c87
permissions -rw-r--r--
Add command bts/bug (mcabber_bts)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     1
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
require "libs.shcmd"
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
local function get_issue_details (num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
    num = tonumber(num);
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
    if not num then return nil end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
    local issue = {}
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
    local btsurl = "http://bitbucket.org/McKael/mcabber-crew/issue/"
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
    issue.id = tostring(num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
    issue.url = btsurl..issue.id.."/"
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
    local data = shcmd("curl "..issue.url)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
    local title = data:match("#"..issue.id.."%s*-%s*(.*)%s*&mdash;")
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
    if not title then return nil end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
    issue.title = title
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
    return issue
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    17
end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
local function mcabber_bts (num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
    -- Check that xepnum is a valid number
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
    if num then
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    22
        num = num:gsub("[%s%?%.%!]+$", "")
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    23
        num = tonumber(num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    24
    end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    25
    if not num or num < 1 then
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    26
        return nil, "Please provide an issue number"
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    27
    end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
    local issue = get_issue_details(num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
    if not issue then
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
        return nil,"Sorry, couldn't find issue "..tostring(num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
    end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
    return "Issue #"..issue.id.." -- "..issue.title.."\n"..
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
           "URL: <"..tostring(issue.url)..">"
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
mcbot_register_command("bts", mcabber_bts)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
mcbot_register_command("bug", mcabber_bts)