|
|
@@ -31,27 +31,27 @@ def get_args(msg): # get command arguments |
|
|
|
return args[1:] # remove the command itself |
|
|
|
|
|
|
|
def cmd_test(nick, chan): # bot test |
|
|
|
say(chan, "Hey %s!" % nick) |
|
|
|
say(chan, "Hey \x02%s\x0F!" % nick) |
|
|
|
|
|
|
|
def cmd_git(nick, host, chan, msg): # commands to interface with the bot's git repository |
|
|
|
if host not in ADMINS: |
|
|
|
say(chan, "%s: you must be a bot admin to use this command." % nick) |
|
|
|
say(chan, "\x02%s\x0F: you must be a bot admin to use this command." % nick) |
|
|
|
return |
|
|
|
|
|
|
|
args = get_args(msg) |
|
|
|
if not args: |
|
|
|
say(chan, "%s: no arguments provided." % nick) |
|
|
|
say(chan, "\x02%s\x0F: no arguments provided." % nick) |
|
|
|
return |
|
|
|
|
|
|
|
if args[0] == "help": # display all commands |
|
|
|
cmds = ["branch (show current branch)", "branches (show all branches)", "checkout (switch branches)", "pull (update current branch)"] |
|
|
|
cmds = ', '.join(cmds) |
|
|
|
say(chan, "%s: sub-commands are: %s" % (nick, cmds)) |
|
|
|
say(chan, "\x02%s\x0F: sub-commands are: %s" % (nick, cmds)) |
|
|
|
|
|
|
|
elif args[0] == "branch": # get our current branch |
|
|
|
branch = subprocess.check_output(['git', 'name-rev', '--name-only', 'HEAD'], stderr=subprocess.STDOUT) # git name-rev --name-only HEAD |
|
|
|
branch = branch[:-1] # strip newline |
|
|
|
say(chan, "%s: currently on branch '%s'." % (nick, branch)) |
|
|
|
say(chan, "\x02%s\x0F: currently on branch '\x0302%s\x0301'." % (nick, branch)) |
|
|
|
|
|
|
|
elif args[0] == "branches": # get list of branches |
|
|
|
branches = subprocess.check_output(['git', 'branch'], stderr=subprocess.STDOUT) # git branch |
|
|
@@ -60,31 +60,32 @@ def cmd_git(nick, host, chan, msg): # commands to interface with the bot's git r |
|
|
|
branches = branches.replace('* ', ' ') |
|
|
|
branches = branches.replace('\n ', ', ') |
|
|
|
branches = branches.strip() |
|
|
|
say(chan, "%s: branches: %s." % (nick, branches)) |
|
|
|
say(chan, "\x02%s\x0F: branches: \x0302%s\x0301." % (nick, branches)) |
|
|
|
|
|
|
|
elif args[0] == "checkout": # switch branches |
|
|
|
try: |
|
|
|
branch = args[1] |
|
|
|
except IndexError: # no branch name provided |
|
|
|
say(chan, "%s: switch to which branch?" % nick) |
|
|
|
say(chan, "\x02%s\x0F: switch to which branch?" % nick) |
|
|
|
return |
|
|
|
try: |
|
|
|
result = subprocess.check_output(['git', 'checkout', branch], stderr=subprocess.STDOUT) # git checkout our_branch |
|
|
|
result = result[:-1] # strip newline |
|
|
|
result = string.lower(result[0] + result[1:]) # lowercase first word |
|
|
|
say(chan, "%s: %s." % (nick, result)) |
|
|
|
if "Already on" in result: |
|
|
|
say(chan, "\x02%s\x0F: already on '\x0302%s\x0301'!" % (nick, branch)) |
|
|
|
else: |
|
|
|
say(chan, "\x02%s\x0F: switched to branch '\x0302%s\x0301'." % (nick, branch)) |
|
|
|
except subprocess.CalledProcessError: # git couldn't switch branches |
|
|
|
say(chan, "%s: branch '%s' does not exist!" % (nick, branch)) |
|
|
|
say(chan, "\x02%s\x0F: branch '\x0302%s\x0301' does not exist!" % (nick, branch)) |
|
|
|
|
|
|
|
elif args[0] == "pull": # pull from remote repository |
|
|
|
branch = subprocess.check_output(['git', 'name-rev', '--name-only', 'HEAD'], stderr=subprocess.STDOUT) # git name-rev --name-only HEAD |
|
|
|
branch = branch[:-1] # strip newline |
|
|
|
say(chan, "%s: pulling from remote (currently on '%s')..." % (nick, branch)) |
|
|
|
say(chan, "\x02%s\x0F: pulling from remote (currently on '\x0302%s\x0301')..." % (nick, branch)) |
|
|
|
result = subprocess.check_output(['git', 'pull']) # pull from remote |
|
|
|
if "Already up-to-date." in result: |
|
|
|
say(chan, "%s: done; no new changes." % nick) |
|
|
|
say(chan, "\x02%s\x0F: done; no new changes." % nick) |
|
|
|
else: |
|
|
|
say(chan, "%s: done; new changes merged." % nick) |
|
|
|
say(chan, "\x02%s\x0F: done; new changes merged." % nick) |
|
|
|
|
|
|
|
else: |
|
|
|
say(chan, "%s: unknown argument: '%s'." % (nick, arg[0])) |
|
|
|
say(chan, "\x02%s\x0F: unknown argument: '\x0302%s\x0301'." % (nick, arg[0])) |