mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-04-03 22:37:53 +10:00
41 lines
1.0 KiB
Python
41 lines
1.0 KiB
Python
__package__ = 'plugins_pkg.npm'
|
|
|
|
from pathlib import Path
|
|
from typing import Optional
|
|
|
|
from pydantic import model_validator
|
|
|
|
from pydantic_pkgr import NpmProvider, PATHStr, BinProviderName
|
|
|
|
from archivebox.config import DATA_DIR, CONSTANTS
|
|
|
|
from abx.archivebox.base_binary import BaseBinProvider
|
|
|
|
|
|
|
|
OLD_NODE_BIN_PATH = DATA_DIR / 'node_modules' / '.bin'
|
|
NEW_NODE_BIN_PATH = CONSTANTS.LIB_NPM_DIR / 'node_modules' / '.bin'
|
|
|
|
|
|
class SystemNpmBinProvider(NpmProvider, BaseBinProvider):
|
|
name: BinProviderName = "sys_npm"
|
|
|
|
npm_prefix: Optional[Path] = None
|
|
|
|
|
|
class LibNpmBinProvider(NpmProvider, BaseBinProvider):
|
|
name: BinProviderName = "lib_npm"
|
|
PATH: PATHStr = f'{NEW_NODE_BIN_PATH}:{OLD_NODE_BIN_PATH}'
|
|
|
|
npm_prefix: Optional[Path] = CONSTANTS.LIB_NPM_DIR
|
|
|
|
@model_validator(mode='after')
|
|
def validate_path(self):
|
|
assert self.npm_prefix == NEW_NODE_BIN_PATH.parent.parent
|
|
return self
|
|
|
|
|
|
SYS_NPM_BINPROVIDER = SystemNpmBinProvider()
|
|
LIB_NPM_BINPROVIDER = LibNpmBinProvider()
|
|
npm = LIB_NPM_BINPROVIDER
|