Francisco Francisco 2018-03-28

added generator-vfos-io/templates/drivers/empty-driver/files/swagger/Driver.yaml
added generator-vfos-io/templates/drivers/opc-ua/files/drivercomponent/driverTemplate.js
added generator-vfos-io/templates/drivers/opc-ua/data.js
added generator-vfos-io/templates/apis/odbc-sample/files/swagger/apiConnectors.yaml
added generator-vfos-io/templates/apis/odbc-sample/data.js
changed driver-skeleton/common/driverImplementation/opc_ua.js
changed driver-skeleton/server/boot/create-sample-models.js
changed generator-vfos-io/__tests__/app.js
changed generator-vfos-io/generators/app/index.js
changed generator-vfos-io/model/workspace.js
changed generator-vfos-io/templates/drivers/empty-driver/data.js
copied driver-skeleton/driver_database -> generator-vfos-io/generators/asset/index.js
generator-vfos-io/templates/drivers/empty-driver/files/swagger/Driver.yaml Diff Switch to side-by-side view
Loading...
generator-vfos-io/templates/drivers/opc-ua/files/drivercomponent/driverTemplate.js Diff Switch to side-by-side view
Loading...
generator-vfos-io/templates/drivers/opc-ua/data.js Diff Switch to side-by-side view
Loading...
generator-vfos-io/templates/apis/odbc-sample/files/swagger/apiConnectors.yaml Diff Switch to side-by-side view
Loading...
generator-vfos-io/templates/apis/odbc-sample/data.js Diff Switch to side-by-side view
Loading...
driver-skeleton/common/driverImplementation/opc_ua.js Diff Switch to side-by-side view
Loading...
driver-skeleton/server/boot/create-sample-models.js Diff Switch to side-by-side view
Loading...
generator-vfos-io/__tests__/app.js Diff Switch to side-by-side view
Loading...
generator-vfos-io/generators/app/index.js Diff Switch to side-by-side view
Loading...
generator-vfos-io/model/workspace.js Diff Switch to side-by-side view
Loading...
generator-vfos-io/templates/drivers/empty-driver/data.js Diff Switch to side-by-side view
Loading...
driver-skeleton/driver_database to generator-vfos-io/generators/asset/index.js
--- a/driver-skeleton/driver_database
+++ b/generator-vfos-io/generators/asset/index.js
@@ -1,52 +1,101 @@
-{
-  "ids": {
-    "deviceConfiguration": 4,
-    "proprietaryParam": 1,
-    "deviceStatus": 1,
-    "sensorData": 1,
-    "driver": 1,
-    "sensorConfiguration": 4,
-    "property": 1,
-    "trigger": 1,
-    "dataMeasure": 1,
-    "commandOrder": 1,
-    "subscriptionData": 1,
-    "referenceResult": 1,
-    "manifestDoc": 1,
-    "metadataItem": 1,
-    "device": 1,
-    "sensor": 1,
-    "log": 1,
-    "metadata": 1,
-    "CoffeeShop": 1
-  },
-  "models": {
-    "deviceConfiguration": {
-      "1": "{\"_did\":\"d1c\",\"name\":\"device1\",\"needProcessing\":false,\"processingExpression\":\"%v\",\"id\":1}",
-      "2": "{\"_did\":\"d1c\",\"name\":\"device1\",\"needProcessing\":false,\"processingExpression\":\"%v\",\"id\":2}",
-      "3": "{\"_did\":\"d1c\",\"name\":\"device1\",\"needProcessing\":false,\"processingExpression\":\"%v\",\"id\":3}"
-    },
-    "proprietaryParam": {},
-    "deviceStatus": {},
-    "sensorData": {},
-    "driver": {},
-    "sensorConfiguration": {
-      "1": "{\"_sid\":\"s1\",\"name\":\"sensor1\",\"driver\":{\"name\":\"opc_ua_1\",\"protocol\":\"opc_ua\",\"version\":\"1\",\"description\":\"driver for opc_ua\"},\"triggers\":[{\"type\":\"x\",\"triggerConfig\":\"y\"}],\"historicData\":false,\"computingExpression\":\"2*%v^2\",\"actuator\":false,\"propietaryParameters\":[{\"name\":\"resourcePath\",\"value\":\":4334/UA/MyLittleServer\"},{\"name\":\"sensorPropietaryId\",\"value\":\"ns=1;s=free_memory\"}],\"id\":1}",
-      "2": "{\"_sid\":\"s1\",\"name\":\"sensor1\",\"driver\":{\"name\":\"opc_ua_1\",\"protocol\":\"opc_ua\",\"version\":\"1\",\"description\":\"driver for opc_ua\"},\"triggers\":[{\"type\":\"x\",\"triggerConfig\":\"y\"}],\"historicData\":false,\"computingExpression\":\"2*%v^2\",\"actuator\":false,\"propietaryParameters\":[{\"name\":\"resourcePath\",\"value\":\":4334/UA/MyLittleServer\"},{\"name\":\"sensorPropietaryId\",\"value\":\"ns=1;s=free_memory\"}],\"id\":2}",
-      "3": "{\"_sid\":\"s1\",\"name\":\"sensor1\",\"driver\":{\"name\":\"opc_ua_1\",\"protocol\":\"opc_ua\",\"version\":\"1\",\"description\":\"driver for opc_ua\"},\"triggers\":[{\"type\":\"x\",\"triggerConfig\":\"y\"}],\"historicData\":false,\"computingExpression\":\"2*%v^2\",\"actuator\":false,\"propietaryParameters\":[{\"name\":\"resourcePath\",\"value\":\":4334/UA/MyLittleServer\"},{\"name\":\"sensorPropietaryId\",\"value\":\"ns=1;s=free_memory\"}],\"id\":3}"
-    },
-    "property": {},
-    "trigger": {},
-    "dataMeasure": {},
-    "commandOrder": {},
-    "subscriptionData": {},
-    "referenceResult": {},
-    "manifestDoc": {},
-    "metadataItem": {},
-    "device": {},
-    "sensor": {},
-    "log": {},
-    "metadata": {},
-    "CoffeeShop": {}
+'use strict';
+const Generator = require('yeoman-generator');
+const chalk = require('chalk');
+const yosay = require('yosay');
+var helpers = require('../../lib/helpers');
+var Workspace = require('../../model/workspace');
+var swaggerUrl = '';
+var assets = [];
+
+module.exports = class extends Generator {
+  constructor(args, opts) {
+    super(args, opts);
+
+    // This makes `appname` and asset type required arguments.
+    this.option('loopback');
+    this.argument('assettype', {
+      desc: 'Type of the asset to scaffold.',
+      type: String,
+      required: true});
+
+    this.argument('appname', {
+      desc: 'Name of the asset to scaffold.',
+      type: String,
+      required: true});
   }
-}+  initializing() {
+    var done = this.async();
+    Workspace.initType(this.options.assettype, function (err) {
+      if (err) return done(err);
+    })
+    Workspace.describeAvailableTemplates(function (err, list) {
+      if (err) return done(err);
+      var templates = list.map(function (t) {
+        return {
+          name: t.name,
+          description: t.description,
+          value: t.value,
+          short: t.name,
+        };
+      });
+      assets = templates;
+      done();
+    });
+  }
+  prompting() {
+    var prompts = {
+      type: 'list',
+      name: 'template',
+      message: 'What template would you like to choose?',
+      choices: assets
+    };
+
+    return this.prompt(prompts).then((props) => {
+      this.props = props;
+      var done = this.async();
+      Workspace.getSwaggerDefinitionFile(props.template, function(err, filename){
+        if(err) return done(err);
+
+        swaggerUrl = filename;
+      })
+      done();
+    });
+}
+  default(){
+    if(this.options.loopback){
+      /* Compose with Loopback generator */
+      var done = this.async();
+      this.composeWith(require.resolve('generator-loopback'), {
+        // provide the default options
+        nested: true,
+        projectDir: this.options.appname,
+        arguments: [this.options.appname]
+
+      });
+      /* Compose with Swagger Generator */
+      this.composeWith(require.resolve('generator-loopback/swagger'), {
+        /* provide the options you want */
+        arguments: [swaggerUrl]
+      });
+      done();
+    }
+  }
+
+  writing() {
+    var done = this.async();
+    var self = this;
+    Workspace.setTemplateDir(function (err, templateDir) {
+    })
+    Workspace.getFiles(this.props.template, function(err, files) {
+      if(err) return done(err);
+      files.map(function(io){
+
+        self.fs.copy(
+          self.templatePath(io.src),
+          self.destinationPath(io.destination));
+      });
+      return done();
+    });
+  }
+
+}