@ -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 " )
rais e ConanExcep tion ( " Can only deploy to NPM when b uild fo r Emscripte n " )
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 = root_package . package_folder , dst = self . _conanfile . generators_folder )
copy ( self . _conanfile , " *.d.ts " , src = root_pa ckage . package _folder , dst = self . _conanfile . generators_folder )
copy ( self . _conanfile , " *.js " , src = s rc_folder, dst = self . _conanfile . generators_folder )
copy ( self . _conanfile , " *.d.ts " , src = s rc_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 " ) ) )
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 \n always-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 ) )