| @@ -92,6 +92,16 @@ class Command(BaseCommand): | |||||
| msg = "unknown remote: \x0302{0}\x0301".format(remote_name) | msg = "unknown remote: \x0302{0}\x0301".format(remote_name) | ||||
| self.reply(self.data, msg) | self.reply(self.data, msg) | ||||
| def get_time_since(self, date): | |||||
| diff = time.mktime(time.gmtime()) - date | |||||
| if diff < 60: | |||||
| return "{0} seconds".format(diff) | |||||
| if diff < 60 * 60: | |||||
| return "{0} minutes".format(int(diff / 60)) | |||||
| if diff < 60 * 60 * 24: | |||||
| return "{0} hours".format(int(diff / 60 / 60)) | |||||
| return "{0} days".format(int(diff / 60 / 60 / 24)) | |||||
| def do_help(self): | def do_help(self): | ||||
| """Display all commands.""" | """Display all commands.""" | ||||
| help = { | help = { | ||||
| @@ -106,7 +116,7 @@ class Command(BaseCommand): | |||||
| for key in sorted(help.keys()): | for key in sorted(help.keys()): | ||||
| subcommands += "\x0303{0}\x0301 ({1}), ".format(key, help[key]) | subcommands += "\x0303{0}\x0301 ({1}), ".format(key, help[key]) | ||||
| subcommands = subcommands[:-2] # Trim last comma and space | subcommands = subcommands[:-2] # Trim last comma and space | ||||
| msg = "sub-commands are: {0}; repos are: {1}. Syntax: !git \x0303subcommand\x0301 \x0302repo\x0301" | |||||
| msg = "sub-commands are: {0}; repos are: {1}. Syntax: !git \x0303subcommand\x0301 \x0302repo\x0301." | |||||
| self.reply(self.data, msg.format(subcommands, self.get_repos())) | self.reply(self.data, msg.format(subcommands, self.get_repos())) | ||||
| def do_branch(self): | def do_branch(self): | ||||
| @@ -191,25 +201,18 @@ class Command(BaseCommand): | |||||
| def do_status(self): | def do_status(self): | ||||
| """Check whether we have anything to pull.""" | """Check whether we have anything to pull.""" | ||||
| last = self.repo.head.object.committed_date | |||||
| diff = time.mktime(time.gmtime()) - last | |||||
| if diff < 60: | |||||
| since = "{0} seconds".format(diff) | |||||
| elif diff < 60 * 60: | |||||
| since = "{0} minutes".format(int(diff / 60)) | |||||
| elif diff < 60 * 60 * 24: | |||||
| since = "{0} hours".format(int(diff / 60 / 60)) | |||||
| else: | |||||
| since = "{0} days".format(int(diff / 60 / 60 / 24)) | |||||
| remote = self.get_remote() | remote = self.get_remote() | ||||
| if not remote: | if not remote: | ||||
| return | return | ||||
| since = self.get_time_since(self.repo.head.object.committed_date) | |||||
| result = remote.fetch(dry_run=True) | result = remote.fetch(dry_run=True) | ||||
| updated = [info for info in result if info.flags != info.HEAD_UPTODATE] | |||||
| if [info for info in result if info.flags != info.HEAD_UPTODATE]: | |||||
| msg = "last local commit was {0}. Remote is \x02ahead\x0F of local copy." | |||||
| self.reply(self.data, msg.format(since)) | |||||
| else: | |||||
| msg = "last commit was {0} ago. Local copy is \x02up-to-date\x0F with remote." | |||||
| if updated: | |||||
| latest = max([info.commit.committed_date for info in updated]) | |||||
| remote_since = self.get_time_since(latest) | |||||
| msg = "last local commit was \x02{0}\x0F ago; last remote commit was \x02{1}\x0F ago." | |||||
| self.reply(self.data, msg.format(since, remote_since)) | |||||
| else: | |||||
| msg = "last commit was \x02{0}\x0F ago. Local copy is up-to-date with remote." | |||||
| self.reply(self.data, msg.format(since)) | self.reply(self.data, msg.format(since)) | ||||