diff --git a/package.json b/package.json index 5b9f05ba..1af95379 100644 --- a/package.json +++ b/package.json @@ -17,15 +17,16 @@ "build:dev": "node-gyp -j 16 build --debug", "rebuild": "npm run clean && node-gyp -j 16 rebuild", "rebuild:dev": "npm run clean && node-gyp -j 16 rebuild --debug", - "generate-messages": "node scripts/generate_messages.js && node scripts/generate_tsd.js", - "generate-messages:dev": "node scripts/generate_messages.js --debug && node scripts/generate_tsd.js", + "generate-messages": "node scripts/generate_messages.js", + "generate-messages:dev": "node scripts/generate_messages.js --debug", + "generate-tsd-messages": "node scripts/generate_tsd.js", "clean": "node-gyp clean && rimraf ./generated", "install": "npm run rebuild", "postinstall": "npm run generate-messages", "docs": "cd docs && make", "test": "nyc node --expose-gc ./scripts/run_test.js && npx tsd", "lint": "eslint && node ./scripts/cpplint.js", - "format": "clang-format -i -style=file ./src/*.cpp ./src/*.hpp && prettier --write \"{lib,rosidl_gen,rostsd_gen,rosidl_parser,types,example,test,scripts,benchmark}/**/*.{js,md,ts}\" ./*.{js,md,ts}", + "format": "clang-format -i -style=file ./src/*.cpp ./src/*.hpp && prettier --write \"{lib,rosidl_gen,rostsd_gen,rosidl_parser,types,example,test,scripts,benchmark,rostsd_gen}/**/*.{js,md,ts}\" ./*.{js,md,ts}", "prepare": "husky", "coverage": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js" }, diff --git a/rostsd_gen/index.js b/rostsd_gen/index.js index 176517a4..9cb2fc65 100644 --- a/rostsd_gen/index.js +++ b/rostsd_gen/index.js @@ -25,6 +25,7 @@ declare module "rclnodejs" { 'use strict'; +const os = require('os'); const path = require('path'); const fs = require('fs'); const loader = require('../lib/interface_loader.js'); @@ -34,7 +35,10 @@ async function generateAll() { // load pkg and interface info (msgs and srvs) const generatedPath = path.join(__dirname, '../generated/'); const pkgInfos = getPkgInfos(generatedPath); - + if (pkgInfos.length === 0) { + console.log('No package found, prebuild interfaces.d.ts will be used.'); + return; + } // write interfaces.d.ts file const interfacesFilePath = path.join(__dirname, '../types/interfaces.d.ts'); const fd = fs.openSync(interfacesFilePath, 'w'); @@ -69,8 +73,15 @@ function getPkgInfos(rootDir) { }) ) continue; - - const rosInterface = loader.loadInterface(typeClass); + let rosInterface = null; + try { + rosInterface = loader.loadInterface(typeClass); + } catch (e) { + console.log( + `${e.message}, please make sure it's built for ${os.arch()} platform correctly.` + ); + return pkgInfos; + } if (!pkgInfo.subfolders.has(typeClass.type)) { pkgInfo.subfolders.set(typeClass.type, []);