apps.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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]] = [apt, brew, env]
  29. NPM_BINARY = NpmBinary()
  30. class NodeBinary(BaseBinary):
  31. name: BinName = 'node'
  32. binproviders_supported: List[InstanceOf[BinProvider]] = [apt, brew, env]
  33. NODE_BINARY = NodeBinary()
  34. class NpmPlugin(BasePlugin):
  35. name: str = 'builtin_plugins.npm'
  36. app_label: str = 'npm'
  37. verbose_name: str = 'NPM'
  38. configs: List[InstanceOf[BaseConfigSet]] = [NPM_CONFIG]
  39. binproviders: List[InstanceOf[BaseBinProvider]] = [npm]
  40. binaries: List[InstanceOf[BaseBinary]] = [NODE_BINARY, NPM_BINARY]
  41. PLUGIN = NpmPlugin()
  42. DJANGO_APP = PLUGIN.AppConfig
  43. # CONFIGS = PLUGIN.configs
  44. # BINARIES = PLUGIN.binaries
  45. # EXTRACTORS = PLUGIN.extractors
  46. # REPLAYERS = PLUGIN.replayers
  47. # CHECKS = PLUGIN.checks