|
|
@@ -12,11 +12,11 @@ def call(a, d): |
|
|
|
actions, data = a, d |
|
|
|
|
|
|
|
if data.host not in ADMINS: |
|
|
|
actions.say(data.chan, "\x02%s\x0F: you must be a bot admin to use this command." % data.nick) |
|
|
|
actions.reply(data.chan, data.nick, "you must be a bot admin to use this command.") |
|
|
|
return |
|
|
|
|
|
|
|
if not data.args: |
|
|
|
actions.say(data.chan, "\x02%s\x0F: no arguments provided." % data.nick) |
|
|
|
actions.reply(data.chan, data.nick, "no arguments provided.") |
|
|
|
return |
|
|
|
|
|
|
|
if data.args[0] == "help": |
|
|
@@ -41,7 +41,7 @@ def call(a, d): |
|
|
|
do_status() |
|
|
|
|
|
|
|
else: # they asked us to do something we don't know |
|
|
|
actions.say(data.chan, "\x02%s\x0F: unknown argument: \x0303%s\x0301." % (data.nick, data.args[0])) |
|
|
|
actions.reply(data.chan, data.nick, "unknown argument: \x0303%s\x0301." % data.args[0]) |
|
|
|
|
|
|
|
def exec_shell(command): |
|
|
|
"""execute a shell command and get the output""" |
|
|
@@ -64,14 +64,14 @@ def do_help(): |
|
|
|
help += "\x0303%s\x0301: (%s)," % (key, help_dict[key]) |
|
|
|
help = help[:-1] # trim last comma |
|
|
|
|
|
|
|
actions.say(data.chan, "\x02%s\x0F: sub-commands are: %s." % (data.nick, help)) |
|
|
|
actions.reply(data.chan, data.nick, "sub-commands are: %s." % help) |
|
|
|
|
|
|
|
def do_branch(): |
|
|
|
"""get our current branch""" |
|
|
|
branch = exec_shell("git name-rev --name-only HEAD") |
|
|
|
branch = branch[:-1] # strip newline |
|
|
|
|
|
|
|
actions.say(data.chan, "\x02%s\x0F: currently on branch \x0302%s\x0301." % (data.nick, branch)) |
|
|
|
actions.reply(data.chan, data.nick, "currently on branch \x0302%s\x0301." % branch) |
|
|
|
|
|
|
|
def do_branches(): |
|
|
|
"""get list of branches""" |
|
|
@@ -83,62 +83,62 @@ def do_branches(): |
|
|
|
branches = branches.replace('\n ', ', ') |
|
|
|
branches = branches.strip() |
|
|
|
|
|
|
|
actions.say(data.chan, "\x02%s\x0F: branches: \x0302%s\x0301." % (data.nick, branches)) |
|
|
|
actions.reply(data.chan, data.nick, "branches: \x0302%s\x0301." % branches) |
|
|
|
|
|
|
|
def do_checkout(): |
|
|
|
"""switch branches""" |
|
|
|
try: |
|
|
|
branch = data.args[1] |
|
|
|
except IndexError: # no branch name provided |
|
|
|
actions.say(data.chan, "\x02%s\x0F: switch to which branch?" % data.nick) |
|
|
|
actions.reply(data.chan, data.nick, "switch to which branch?") |
|
|
|
return |
|
|
|
|
|
|
|
try: |
|
|
|
result = exec_shell("git checkout %s" % branch) |
|
|
|
if "Already on" in result: |
|
|
|
actions.say(data.chan, "\x02%s\x0F: already on \x0302%s\x0301!" % (data.nick, branch)) |
|
|
|
actions.reply(data.chan, data.nick, "already on \x0302%s\x0301!" % branch) |
|
|
|
else: |
|
|
|
actions.say(data.chan, "\x02%s\x0F: switched to branch \x0302%s\x0301." % (data.nick, branch)) |
|
|
|
actions.reply(data.chan, data.nick, "switched to branch \x0302%s\x0301." % branch) |
|
|
|
|
|
|
|
except subprocess.CalledProcessError: # git couldn't switch branches |
|
|
|
actions.say(data.chan, "\x02%s\x0F: branch \x0302%s\x0301 does not exist!" % (data.nick, branch)) |
|
|
|
actions.reply(data.chan, data.nick, "branch \x0302%s\x0301 does not exist!" % branch) |
|
|
|
|
|
|
|
def do_delete(): |
|
|
|
"""delete a branch, while making sure that we are not on it""" |
|
|
|
try: |
|
|
|
delete_branch = data.args[1] |
|
|
|
except IndexError: # no branch name provided |
|
|
|
actions.say(data.chan, "\x02%s\x0F: delete which branch?" % data.nick) |
|
|
|
actions.reply(data.chan, data.nick, "delete which branch?") |
|
|
|
return |
|
|
|
|
|
|
|
current_branch = exec_shell("git name-rev --name-only HEAD") |
|
|
|
current_branch = current_branch[:-1] # strip newline |
|
|
|
|
|
|
|
if current_branch == delete_branch: |
|
|
|
actions.say(data.chan, "\x02%s\x0F: you're currently on this branch; please checkout to a different branch before deleting." % data.nick) |
|
|
|
actions.reply(data.chan, data.nick, "you're currently on this branch; please checkout to a different branch before deleting.") |
|
|
|
return |
|
|
|
|
|
|
|
exec_shell("git branch -d %s" % delete_branch) |
|
|
|
|
|
|
|
actions.say(data.chan, "\x02%s\x0F: branch \x0302%s\x0301 has been deleted locally." % (data.nick, delete_branch)) |
|
|
|
actions.reply(data.chan, data.nick, "branch \x0302%s\x0301 has been deleted locally." % delete_branch) |
|
|
|
|
|
|
|
def do_pull(): |
|
|
|
"""pull from remote repository""" |
|
|
|
branch = exec_shell("git name-rev --name-only HEAD") |
|
|
|
branch = branch[:-1] # strip newline |
|
|
|
actions.say(data.chan, "\x02%s\x0F: pulling from remote (currently on \x0302%s\x0301)..." % (data.nick, branch)) |
|
|
|
actions.reply(data.chan, data.nick, "pulling from remote (currently on \x0302%s\x0301)..." % branch) |
|
|
|
|
|
|
|
result = exec_shell("git pull") |
|
|
|
|
|
|
|
if "Already up-to-date." in result: |
|
|
|
actions.say(data.chan, "\x02%s\x0F: done; no new changes." % data.nick) |
|
|
|
actions.reply(data.chan, data.nick, "done; no new changes.") |
|
|
|
else: |
|
|
|
actions.say(data.chan, "\x02%s\x0F: done; new changes merged." % data.nick) |
|
|
|
actions.reply(data.chan, data.nick, "done; new changes merged.") |
|
|
|
|
|
|
|
def do_status(): |
|
|
|
"""check whether we have anything to pull""" |
|
|
|
result = exec_shell("git fetch --dry-run") |
|
|
|
if not result: |
|
|
|
actions.say(data.chan, "\x02%s\x0F: local copy is up-to-date with remote." % data.nick) |
|
|
|
actions.reply(data.chan, data.nick, "local copy is up-to-date with remote.") |
|
|
|
else: |
|
|
|
actions.say(data.chan, "\x02%s\x0F: remote is ahead of local copy." % (data.nick)) |
|
|
|
actions.reply(data.chan, data.nick, "remote is ahead of local copy.") |