apps.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. __package__ = 'archivebox.builtin_plugins.npm'
  2. from pathlib import Path
  3. from typing import List, Dict, Optional
  4. from pydantic import InstanceOf, Field
  5. from django.apps import AppConfig
  6. from django.conf import settings
  7. from pydantic_pkgr import BinProvider, NpmProvider, BinName, PATHStr
  8. from plugantic.base_plugin import BasePlugin, BaseConfigSet, BaseBinary, BaseBinProvider
  9. from plugantic.base_configset import ConfigSectionName
  10. from pkg.settings import env, apt, brew
  11. from ...config import CONFIG
  12. ###################### Config ##########################
  13. class NpmDependencyConfigs(BaseConfigSet):
  14. section: ConfigSectionName = 'DEPENDENCY_CONFIG'
  15. USE_NPM: bool = True
  16. NPM_BINARY: str = Field(default='npm')
  17. NPM_ARGS: Optional[List[str]] = Field(default=None)
  18. NPM_EXTRA_ARGS: List[str] = []
  19. NPM_DEFAULT_ARGS: List[str] = []
  20. DEFAULT_GLOBAL_CONFIG = {
  21. }
  22. NPM_CONFIG = NpmDependencyConfigs(**DEFAULT_GLOBAL_CONFIG)
  23. class NpmProvider(NpmProvider, BaseBinProvider):
  24. PATH: PATHStr = str(CONFIG.NODE_BIN_PATH)
  25. npm = NpmProvider(PATH=str(CONFIG.NODE_BIN_PATH))
  26. class NpmBinary(BaseBinary):
  27. name: BinName = 'npm'
  28. binproviders_supported: List[InstanceOf[BinProvider]] = [env, apt, brew]
  29. NPM_BINARY = NpmBinary()
  30. class NpmPlugin(BasePlugin):
  31. name: str = 'builtin_plugins.npm'
  32. app_label: str = 'npm'
  33. verbose_name: str = 'NPM'
  34. configs: List[InstanceOf[BaseConfigSet]] = [NPM_CONFIG]
  35. binproviders: List[InstanceOf[BaseBinProvider]] = [npm]
  36. binaries: List[InstanceOf[BaseBinary]] = [NPM_BINARY]
  37. PLUGIN = NpmPlugin()
  38. DJANGO_APP = PLUGIN.AppConfig
  39. # CONFIGS = PLUGIN.configs
  40. # BINARIES = PLUGIN.binaries
  41. # EXTRACTORS = PLUGIN.extractors
  42. # REPLAYERS = PLUGIN.replayers
  43. # CHECKS = PLUGIN.checks