mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-13 06:34:25 -04:00

Some checks are pending
Build Debian package / build (push) Waiting to run
Build Docker image / buildx (push) Waiting to run
Build Homebrew package / build (push) Waiting to run
Run linters / lint (push) Waiting to run
Build Pip package / build (push) Waiting to run
Run tests / python_tests (ubuntu-22.04, 3.11) (push) Waiting to run
Run tests / docker_tests (push) Waiting to run
40 lines
1 KiB
Python
40 lines
1 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
|