--- 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();
+ });
+ }
+
+}