diff --git a/extensions/generators/npm.py b/extensions/generators/npm.py index 24b9844..722d6f7 100644 --- a/extensions/generators/npm.py +++ b/extensions/generators/npm.py @@ -1,8 +1,8 @@ +import os import json from conan import ConanFile -from conan.errors import ConanException -from conan.tools.files import copy, save +from conan.tools.files import copy, mkdir, save from pathlib import Path @@ -13,18 +13,27 @@ class npm: def generate(self): if self._conanfile.settings.os != "Emscripten": self._conanfile.output.error("Can only deploy to NPM when build for Emscripten") - raise ConanException("Can only deploy to NPM when build for Emscripten") - - root_package = [dep for dep in self._conanfile.dependencies.direct_host.values()][0] - - # Copy the *.js and *.d.ts - copy(self._conanfile, "*.js", src=root_package.package_folder, dst=self._conanfile.generators_folder) - copy(self._conanfile, "*.d.ts", src=root_package.package_folder, dst=self._conanfile.generators_folder) - - # Create the package.json - save(self._conanfile, str(Path(self._conanfile.generators_folder, "package.json")), - json.dumps(root_package.conf_info.get(f"user.{root_package.ref.name.lower()}:package_json"))) - - # Create the .npmrc file - save(self._conanfile, str(Path(self._conanfile.generators_folder, ".npmrc")), - "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}\n@ultimaker:registry=https://npm.pkg.github.com\nalways-auth=true") + return + + if self._conanfile.display_name == "cli": # We're installing a CLI package from the conan local cache + root_package = [dep for dep in self._conanfile.dependencies.direct_host.values()][0] + src_folder = root_package.package_folder + conf_info = root_package.conf_info + name = root_package.ref.name + + # Copy the *.js and *.d.ts + copy(self._conanfile, "*.js", src=src_folder, dst=self._conanfile.generators_folder) + copy(self._conanfile, "*.d.ts", src=src_folder, dst=self._conanfile.generators_folder) + + # Create the package.json + save(self._conanfile, str(Path(self._conanfile.generators_folder, "package.json")), + json.dumps(conf_info.get(f"user.{name.lower()}:package_json"))) + + # Create the .npmrc file + save(self._conanfile, str(Path(self._conanfile.generators_folder, ".npmrc")), + "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}\n@ultimaker:registry=https://npm.pkg.github.com\nalways-auth=true") + else: # We're generating a package for a development environment + package_json = self._conanfile.python_requires["npmpackage"].module.generate_package_json(self._conanfile, + os.path.join(self._conanfile.cpp.build.bindirs[0], self._conanfile.cpp.build.bin[0])) + save(self._conanfile, str(Path(self._conanfile.build_folder, "package.json")), + json.dumps(package_json))