Jelajahi Sumber

improve version detection

Nick Sweeting 1 tahun lalu
induk
melakukan
66cd711df9

+ 1 - 1
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
         
 

+ 2 - 2
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):

+ 25 - 11
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'
-
-    raise Exception('Failed to detect installed archivebox version!')
+        pass
+
+    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)