From 66cd711df98ef7e93097c5478e8860200e56b0fe Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Mon, 30 Sep 2024 18:12:48 -0700 Subject: [PATCH] improve version detection --- archivebox/abx/archivebox/base_hook.py | 2 +- archivebox/abx/archivebox/base_plugin.py | 4 +-- archivebox/config/constants.py | 34 +++++++++++++++++------- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/archivebox/abx/archivebox/base_hook.py b/archivebox/abx/archivebox/base_hook.py index 1642652d..6abf5b6e 100644 --- a/archivebox/abx/archivebox/base_hook.py +++ b/archivebox/abx/archivebox/base_hook.py @@ -102,7 +102,7 @@ class BaseHook(BaseModel): def register(self, settings): """Called when django.apps.AppConfig.ready() is called""" - print("REGISTERED HOOK:", self.hook_module) + # print("REGISTERED HOOK:", self.hook_module) self._is_registered = True diff --git a/archivebox/abx/archivebox/base_plugin.py b/archivebox/abx/archivebox/base_plugin.py index d276b339..5f0d1d0e 100644 --- a/archivebox/abx/archivebox/base_plugin.py +++ b/archivebox/abx/archivebox/base_plugin.py @@ -132,8 +132,8 @@ class BasePlugin(BaseModel): self._is_registered = True bump_startup_progress_bar() - print('◣----------------- REGISTERED PLUGIN:', self.plugin_module, '-----------------◢') - print() + # print('◣----------------- REGISTERED PLUGIN:', self.plugin_module, '-----------------◢') + # print() @abx.hookimpl def ready(self, settings=None): diff --git a/archivebox/config/constants.py b/archivebox/config/constants.py index a3afe3e4..6e1a7646 100644 --- a/archivebox/config/constants.py +++ b/archivebox/config/constants.py @@ -20,20 +20,34 @@ ARCHIVE_DIR: Path = DATA_DIR / 'archive' # archivebox snaps def _detect_installed_version(PACKAGE_DIR: Path): - """Autodetect the installed archivebox version by using pip package metadata or pyproject.toml file""" + """Autodetect the installed archivebox version by using pip package metadata, pyproject.toml file, or package.json file""" try: + # if in production install, use pip-installed package metadata return importlib.metadata.version(__package__ or 'archivebox') except importlib.metadata.PackageNotFoundError: - try: - pyproject_config = (PACKAGE_DIR / 'pyproject.toml').read_text() - for line in pyproject_config: - if line.startswith('version = '): - return line.split(' = ', 1)[-1].strip('"') - except FileNotFoundError: - # building docs, pyproject.toml is not available - return 'dev' + pass - raise Exception('Failed to detect installed archivebox version!') + try: + # if in dev Git repo dir, use pyproject.toml file + pyproject_config = (PACKAGE_DIR.parent / 'pyproject.toml').read_text().split('\n') + for line in pyproject_config: + if line.startswith('version = '): + return line.split(' = ', 1)[-1].strip('"') + except FileNotFoundError: + # building docs, pyproject.toml is not available + pass + + try: + # if in dev but not in Git repo dir, fallback to using package.json file + package_json = (PACKAGE_DIR / 'package.json').read_text().split('\n') + for line in package_json: + if '"version": "' in line: + return line.replace('"', '').split(':')[-1].strip(',') + except FileNotFoundError: + pass + + # raise Exception('Failed to detect installed archivebox version!') + return 'dev' VERSION: str = _detect_installed_version(PACKAGE_DIR)