From 6cb75e75b0f74b489e4ba9d17ef069db84848454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Tue, 23 Mar 2021 15:41:53 +0000 Subject: [PATCH] Try harder to install node packages. --- ognibuild/resolver/__init__.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/ognibuild/resolver/__init__.py b/ognibuild/resolver/__init__.py index 51f7204..1ff1a79 100644 --- a/ognibuild/resolver/__init__.py +++ b/ognibuild/resolver/__init__.py @@ -348,18 +348,27 @@ class NpmResolver(Resolver): return "%s(%r)" % (type(self).__name__, self.session) def install(self, requirements): - from ..requirements import NodePackageRequirement + from ..requirements import ( + NodePackageRequirement, + NodeModuleRequirement, + BinaryRequirement, + ) missing = [] for requirement in requirements: + if isinstance(requirement, BinaryRequirement): + try: + package = NPM_COMMAND_PACKAGES[requirement.command] + except KeyError: + pass + else: + requirement = NodePackageRequirement(package) + if isinstance(requirement, NodeModuleRequirement): + # TODO: Is this legit? + requirement = NodePackageRequirement(requirement.module.split('/')[0]) if not isinstance(requirement, NodePackageRequirement): missing.append(requirement) continue - try: - package = NPM_COMMAND_PACKAGES[requirement.command] - except KeyError: - missing.append(requirement) - continue self.session.check_call(["npm", "-g", "install", package]) if missing: raise UnsatisfiedRequirements(missing)