From da76a84c4542a0158c2ef19e29305a1d24f07962 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 30 Aug 2024 03:32:36 -0700 Subject: [PATCH] rename pkgs app to pkg --- archivebox/builtin_plugins/singlefile/apps.py | 2 +- archivebox/core/settings.py | 2 +- archivebox/{pkgs => pkg}/__init__.py | 0 archivebox/{pkgs => pkg}/admin.py | 0 archivebox/{pkgs => pkg}/apps.py | 4 +- .../migrations => pkg/management}/__init__.py | 0 .../pkg/management/commands/__init__.py | 0 archivebox/pkg/management/commands/pkg.py | 75 +++++++++++++++++++ archivebox/pkg/migrations/__init__.py | 0 archivebox/{pkgs => pkg}/models.py | 0 archivebox/{pkgs => pkg}/settings.py | 2 +- archivebox/{pkgs => pkg}/tests.py | 0 archivebox/{pkgs => pkg}/views.py | 0 13 files changed, 80 insertions(+), 5 deletions(-) rename archivebox/{pkgs => pkg}/__init__.py (100%) rename archivebox/{pkgs => pkg}/admin.py (100%) rename archivebox/{pkgs => pkg}/apps.py (80%) rename archivebox/{pkgs/migrations => pkg/management}/__init__.py (100%) create mode 100644 archivebox/pkg/management/commands/__init__.py create mode 100644 archivebox/pkg/management/commands/pkg.py create mode 100644 archivebox/pkg/migrations/__init__.py rename archivebox/{pkgs => pkg}/models.py (100%) rename archivebox/{pkgs => pkg}/settings.py (98%) rename archivebox/{pkgs => pkg}/tests.py (100%) rename archivebox/{pkgs => pkg}/views.py (100%) diff --git a/archivebox/builtin_plugins/singlefile/apps.py b/archivebox/builtin_plugins/singlefile/apps.py index 963481e3..1d40e8a7 100644 --- a/archivebox/builtin_plugins/singlefile/apps.py +++ b/archivebox/builtin_plugins/singlefile/apps.py @@ -17,7 +17,7 @@ from plugantic.extractors import Extractor, ExtractorName from plugantic.plugins import Plugin from plugantic.configs import ConfigSet, ConfigSectionName -from pkgs.settings import env +from pkg.settings import env ###################### Config ########################## diff --git a/archivebox/core/settings.py b/archivebox/core/settings.py index f6952dce..707e17a1 100644 --- a/archivebox/core/settings.py +++ b/archivebox/core/settings.py @@ -66,7 +66,7 @@ INSTALLED_APPS = [ 'plugantic', 'core', 'api', - 'pkgs', + 'pkg', *INSTALLED_PLUGINS.keys(), diff --git a/archivebox/pkgs/__init__.py b/archivebox/pkg/__init__.py similarity index 100% rename from archivebox/pkgs/__init__.py rename to archivebox/pkg/__init__.py diff --git a/archivebox/pkgs/admin.py b/archivebox/pkg/admin.py similarity index 100% rename from archivebox/pkgs/admin.py rename to archivebox/pkg/admin.py diff --git a/archivebox/pkgs/apps.py b/archivebox/pkg/apps.py similarity index 80% rename from archivebox/pkgs/apps.py rename to archivebox/pkg/apps.py index 876184fc..fa8a6913 100644 --- a/archivebox/pkgs/apps.py +++ b/archivebox/pkg/apps.py @@ -1,11 +1,11 @@ -__package__ = 'archivebox.pkgs' +__package__ = 'archivebox.pkg' from django.apps import AppConfig class PkgsConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' - name = 'pkgs' + name = 'pkg' def ready(self): from .settings import LOADED_DEPENDENCIES diff --git a/archivebox/pkgs/migrations/__init__.py b/archivebox/pkg/management/__init__.py similarity index 100% rename from archivebox/pkgs/migrations/__init__.py rename to archivebox/pkg/management/__init__.py diff --git a/archivebox/pkg/management/commands/__init__.py b/archivebox/pkg/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/archivebox/pkg/management/commands/pkg.py b/archivebox/pkg/management/commands/pkg.py new file mode 100644 index 00000000..7cbf795a --- /dev/null +++ b/archivebox/pkg/management/commands/pkg.py @@ -0,0 +1,75 @@ +__package__ = 'archivebox.pkg.management.commands' + +from django.core.management.base import BaseCommand +from django.conf import settings + +from pydantic_pkgr import Binary, BinProvider, BrewProvider, EnvProvider, SemVer +from pydantic_pkgr.binprovider import bin_abspath + +from ....config import NODE_BIN_PATH, bin_path + +from plugantic.plugins import LOADED_PLUGINS + +from pkg.settings import env + + +class Command(BaseCommand): + def handle(self, *args, method, **options): + method(*args, **options) + + def add_arguments(self, parser): + subparsers = parser.add_subparsers(title="sub-commands", required=True) + + list_parser = subparsers.add_parser("list", help="List archivebox runtime dependencies.") + list_parser.set_defaults(method=self.list) + + install_parser = subparsers.add_parser("install", help="Install archivebox runtime dependencies.") + install_parser.add_argument("--update", action="store_true", help="Update dependencies to latest versions.") + install_parser.add_argument("package_names", nargs="+", type=str) + install_parser.set_defaults(method=self.install) + + def list(self, *args, **options): + self.stdout.write('################# PLUGINS ####################') + for plugin in LOADED_PLUGINS: + self.stdout.write(f'{plugin.name}:') + for binary in plugin.binaries: + try: + binary = binary.install() + except Exception as e: + # import ipdb; ipdb.set_trace() + raise + self.stdout.write(f' {binary.name.ljust(14)} {str(binary.version).ljust(11)} {binary.binprovider.INSTALLER_BIN.ljust(5)} {binary.abspath}') + + self.stdout.write('\n################# LEGACY ####################') + for bin_key, dependency in settings.CONFIG.DEPENDENCIES.items(): + bin_name = settings.CONFIG[bin_key] + + self.stdout.write(f'{bin_key}: {bin_name}') + + # binary = Binary(name=package_name, providers=[env]) + # print(binary) + + # try: + # loaded_bin = binary.load() + # self.stdout.write( + # self.style.SUCCESS(f'Successfully loaded {package_name}:') + str(loaded_bin) + # ) + # except Exception as e: + # self.stderr.write( + # self.style.ERROR(f"Error loading {package_name}: {e}") + # ) + + def install(self, *args, bright, **options): + for package_name in options["package_names"]: + binary = Binary(name=package_name, providers=[env]) + print(binary) + + try: + loaded_bin = binary.load() + self.stdout.write( + self.style.SUCCESS(f'Successfully loaded {package_name}:') + str(loaded_bin) + ) + except Exception as e: + self.stderr.write( + self.style.ERROR(f"Error loading {package_name}: {e}") + ) diff --git a/archivebox/pkg/migrations/__init__.py b/archivebox/pkg/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/archivebox/pkgs/models.py b/archivebox/pkg/models.py similarity index 100% rename from archivebox/pkgs/models.py rename to archivebox/pkg/models.py diff --git a/archivebox/pkgs/settings.py b/archivebox/pkg/settings.py similarity index 98% rename from archivebox/pkgs/settings.py rename to archivebox/pkg/settings.py index 6ea7f48c..7f13d125 100644 --- a/archivebox/pkgs/settings.py +++ b/archivebox/pkg/settings.py @@ -1,4 +1,4 @@ -__package__ = 'archivebox.pkgs' +__package__ = 'archivebox.pkg' import os import sys diff --git a/archivebox/pkgs/tests.py b/archivebox/pkg/tests.py similarity index 100% rename from archivebox/pkgs/tests.py rename to archivebox/pkg/tests.py diff --git a/archivebox/pkgs/views.py b/archivebox/pkg/views.py similarity index 100% rename from archivebox/pkgs/views.py rename to archivebox/pkg/views.py