diff --git a/modules/info.py b/modules/info.py index 8b9ad9e6..db23d068 100644 --- a/modules/info.py +++ b/modules/info.py @@ -4,11 +4,12 @@ from src import IRCBot, ModuleManager, utils class Module(ModuleManager.BaseModule): @utils.hook("received.command.version") def version(self, event): - commit_hash = utils.git_commit(self.bot.directory) + commit = utils.git_commit(self.bot.directory) out = "Version: BitBot %s" % IRCBot.VERSION - if not commit_hash == None: - out = "%s (%s@%s)" % (out, branch, commit_hash) + if not commit == None: + branch, commit = commit + out = "%s (%s@%s)" % (out, branch or "", commit) event["stdout"].write(out) @utils.hook("received.command.source") diff --git a/src/ModuleManager.py b/src/ModuleManager.py index dd378456..2ad086ea 100644 --- a/src/ModuleManager.py +++ b/src/ModuleManager.py @@ -272,9 +272,10 @@ class ModuleManager(object): for key, value in magic.get_exports(): context_exports.add(key, value) - current_commit = utils.git_commit(bot.directory) + branch, commit = utils.git_commit(bot.directory) + return LoadedModule(definition.name, module_title, module_object, - context, import_name, definition.is_core, commit=current_commit) + context, import_name, definition.is_core, commit=commit) def load_module(self, bot: "IRCBot.Bot", definition: ModuleDefinition ) -> LoadedModule: diff --git a/src/utils/__init__.py b/src/utils/__init__.py index 7180766b..55129137 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -127,17 +127,20 @@ def deadline_process(func: typing.Callable[[], DeadlineProcessReturnType], else: raise out # type: ignore -def git_commit(bot_directory: str) -> typing.Optional[str]: +def git_commit(bot_directory: str + ) -> typing.Tuple[typing.Optional[str], typing.Optional[str]]: git_dir = os.path.join(bot_directory, ".git") head_filepath = os.path.join(git_dir, "HEAD") if os.path.isfile(head_filepath): - ref = None with open(head_filepath, "r") as head_file: - ref = head_file.readline().split(" ", 1)[1].strip() - branch = ref.rsplit("/", 1)[1] + ref_line = head_file.readline().strip() + if not ref_line.startswith("ref: "): + return None, ref_line + else: + ref = ref_line.split(" ", 1)[1] + branch = ref.rsplit("/", 1)[1] - ref_filepath = os.path.join(git_dir, ref) - if os.path.isfile(ref_filepath): - with open(ref_filepath, "r") as ref_file: - return ref_file.readline().strip()[:8] - return None + ref_filepath = os.path.join(git_dir, ref) + with open(ref_filepath, "r") as ref_file: + return branch, ref_file.readline().strip()[:8] + return None, None