فهرست منبع

fallback to reading binaries from filesystem when theres no db

Nick Sweeting 1 سال پیش
والد
کامیت
f321d25f4c
2فایلهای تغییر یافته به همراه13 افزوده شده و 8 حذف شده
  1. 8 3
      archivebox/abx/archivebox/base_binary.py
  2. 5 5
      archivebox/cli/__init__.py

+ 8 - 3
archivebox/abx/archivebox/base_binary.py

@@ -78,9 +78,14 @@ class BaseBinary(BaseHook, Binary):
             self.symlink_to_lib(binary=binary, bin_dir=CONSTANTS.LIB_BIN_DIR)
         else:
             # get cached binary from db
-            from machine.models import InstalledBinary
-            installed_binary = InstalledBinary.objects.get_from_db_or_cache(self)
-            binary = InstalledBinary.load_from_db(installed_binary)
+            try:
+                from machine.models import InstalledBinary
+                installed_binary = InstalledBinary.objects.get_from_db_or_cache(self)
+                binary = InstalledBinary.load_from_db(installed_binary)
+            except Exception:
+                # maybe we are not in a DATA dir so there is no db, fallback to reading from fs
+                # (e.g. when archivebox version is run outside of a DATA dir)
+                binary = super().load(**kwargs)
         return binary
     
     @validate_call

+ 5 - 5
archivebox/cli/__init__.py

@@ -154,14 +154,14 @@ def run_subcommand(subcommand: str,
 
     subcommand_args = subcommand_args or []
 
-    if subcommand not in meta_cmds:
-        from archivebox.config.legacy import setup_django
+    from archivebox.config.legacy import setup_django
 
-        cmd_requires_db = subcommand in archive_cmds
-        init_pending = '--init' in subcommand_args or '--quick-init' in subcommand_args
+    cmd_requires_db = subcommand in archive_cmds
+    init_pending = '--init' in subcommand_args or '--quick-init' in subcommand_args
 
-        setup_django(in_memory_db=subcommand in fake_db, check_db=cmd_requires_db and not init_pending)
+    setup_django(in_memory_db=subcommand in fake_db, check_db=cmd_requires_db and not init_pending)
 
+    if subcommand not in meta_cmds:
         if cmd_requires_db:
             check_migrations()