From d86f0d04758b540930fbe8ac5e20d5624c473a29 Mon Sep 17 00:00:00 2001 From: Razvan Bordeanu Date: Mon, 5 Feb 2018 11:18:43 +0200 Subject: [PATCH] --keywords and --category options --category option support '--category' option in command line to configure node category instead of the default, 'function' --keywords option support '--keywords' option in command line to set additional keywords on the generated node along the default, 'node-red-node gen' --- bin/node-red-nodegen.js | 6 ++++++ lib/nodegen.js | 15 ++++++++++++++- package.json | 13 +++++++------ templates/function/node.html.mustache | 2 +- templates/function/package.json.mustache | 4 +++- templates/swagger/node.html.mustache | 2 +- templates/swagger/package.json.mustache | 4 +++- test/lib/nodegen_spec.js | 14 ++++++++++++++ 8 files changed, 49 insertions(+), 11 deletions(-) diff --git a/bin/node-red-nodegen.js b/bin/node-red-nodegen.js index 4b4cc34..63f5be5 100644 --- a/bin/node-red-nodegen.js +++ b/bin/node-red-nodegen.js @@ -33,6 +33,8 @@ var data = { name: argv.name || argv.n, module: argv.module, version: argv.version || argv.v, + keywords: argv.keywords || argv.k, + category: argv.category || argv.c, dst: argv.output || argv.o || '.' }; @@ -44,6 +46,8 @@ function help() { ' [--name ]' + ' [--module ]' + ' [--version ' + + ' [--keywords ' + + ' [--category ' + //' [--icon ' + //' [--color ' + ' [--tgz]' + @@ -63,6 +67,8 @@ function help() { ' --name : Node name (default: name defined in source)\n' + ' --module : Module name (default: "node-red-contrib-")\n' + ' --version : Node version (format: "number.number.number" like "4.5.1")\n' + + ' --keywords : Additional keywords (format: comma separated string, default: "node-red-nodegen")\n' + + ' --category : Node category (default: "function")\n' + //' --icon : png or gif file for node appearance (image size should be 10x20)\n'; //' --color : color for node appearance (format: color hexadecimal numbers like "#A6BBCF")\n'; ' --tgz : Save node as tgz file\n' + diff --git a/lib/nodegen.js b/lib/nodegen.js index 584db4f..b9bbd7d 100644 --- a/lib/nodegen.js +++ b/lib/nodegen.js @@ -20,6 +20,7 @@ var request = require('request'); var mustache = require('mustache'); var jsStringEscape = require('js-string-escape'); var obfuscator = require('javascript-obfuscator'); +var csv = require('csv-string'); var CodeGen = require('swagger-js-codegen').CodeGen; function createCommonFiles(templateDirectory, data) { @@ -87,6 +88,14 @@ function runNpmPack(data) { } } +function extractKeywords(keywordsStr) { + var keywords = ["node-red-nodegen"]; + keywords = keywordsStr ? keywords.concat(csv.parse(keywordsStr)[0]) : keywords; + keywords = keywords.map(k => ({ name: k })); + keywords[keywords.length - 1].last = true; + return keywords; +} + function function2node(data, options) { // Read meta data in js file var meta = {}; @@ -129,6 +138,8 @@ function function2node(data, options) { nodeName: data.name, projectName: data.module, projectVersion: data.version, + keywords: extractKeywords(data.keywords), + category: data.category || 'function', func: jsStringEscape(data.src), outputs: meta.outputs }; @@ -244,7 +255,7 @@ function swagger2node(data, options) { nodejsSourceCode = obfuscator.obfuscate(nodejsSourceCode, { stringArrayEncoding: 'rc4' }); } fs.writeFileSync(data.dst + '/' + data.module + '/lib.js', nodejsSourceCode); - + // Create package.json var packageSourceCode = CodeGen.getCustomCode({ className: className, @@ -258,6 +269,7 @@ function swagger2node(data, options) { nodeName: data.name, projectName: data.module, projectVersion: data.version, + keywords: extractKeywords(data.keywords), licenseName: function () { if (swagger.info.license && swagger.info.license.name) { return swagger.info.license.name; @@ -303,6 +315,7 @@ function swagger2node(data, options) { }, mustache: { nodeName: data.name, + category: data.category || 'function' }, lint: false, beautify: false diff --git a/package.json b/package.json index 06e5cfb..9d07fb0 100644 --- a/package.json +++ b/package.json @@ -43,14 +43,15 @@ "swagger-codegen" ], "dependencies": { - "request": "2.83.0", - "yamljs": "0.3.0", - "mustache": "2.3.0", - "js-string-escape": "1.0.1", + "colors": "1.1.2", + "csv-string": "^3.1.2", "javascript-obfuscator": "0.12.2", - "swagger-js-codegen": "1.12.0", + "js-string-escape": "1.0.1", "minimist": "1.2.0", - "colors": "1.1.2" + "mustache": "2.3.0", + "request": "2.83.0", + "swagger-js-codegen": "1.12.0", + "yamljs": "0.3.0" }, "devDependencies": { "grunt": "1.0.1", diff --git a/templates/function/node.html.mustache b/templates/function/node.html.mustache index b8a293f..82ed8a8 100644 --- a/templates/function/node.html.mustache +++ b/templates/function/node.html.mustache @@ -43,7 +43,7 @@