39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import os
|
|
import subprocess
|
|
from .exceptions import NpmInstallArgumentsError
|
|
from .conf import settings
|
|
from .interrogate import (
|
|
npm_installed, npm_version, npm_version_raw, raise_if_npm_missing, raise_if_npm_version_less_than, run_command
|
|
)
|
|
|
|
|
|
def ensure_npm_installed():
|
|
raise_if_npm_missing()
|
|
|
|
|
|
def ensure_npm_version_gte(required_version):
|
|
ensure_npm_installed()
|
|
raise_if_npm_version_less_than(required_version)
|
|
|
|
|
|
def npm_run(*args):
|
|
ensure_npm_installed()
|
|
return run_command((settings.PATH,) + tuple(args))
|
|
|
|
|
|
def npm_install(target_dir):
|
|
if not target_dir or not os.path.exists(target_dir) or not os.path.isdir(target_dir):
|
|
raise NpmInstallArgumentsError(
|
|
'npm.install\'s `target_dir` parameter must be a string pointing to a directory. Received "{0}"'.format(
|
|
target_dir
|
|
)
|
|
)
|
|
|
|
ensure_npm_installed()
|
|
|
|
command = (settings.PATH, settings.INSTALL_COMMAND)
|
|
|
|
if settings.INSTALL_PATH_TO_PYTHON:
|
|
command += ('--python={path_to_python}'.format(path_to_python=settings.INSTALL_PATH_TO_PYTHON),)
|
|
|
|
subprocess.call(command, cwd=target_dir) |