@itentialopensource/adapter-meraki 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -104,6 +104,111 @@
104
104
  "mockFile": ""
105
105
  }
106
106
  ]
107
+ },
108
+ {
109
+ "name": "getGenericsNoBase",
110
+ "protocol": "REST",
111
+ "method": "GET",
112
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
113
+ "requestSchema": "schema.json",
114
+ "responseSchema": "schema.json",
115
+ "timeout": 0,
116
+ "sendEmpty": false,
117
+ "sendGetBody": false,
118
+ "requestDatatype": "JSON",
119
+ "responseDatatype": "JSON",
120
+ "headers": {},
121
+ "responseObjects": [
122
+ {
123
+ "type": "default",
124
+ "key": "",
125
+ "mockFile": ""
126
+ }
127
+ ]
128
+ },
129
+ {
130
+ "name": "createGenericNoBase",
131
+ "protocol": "REST",
132
+ "method": "POST",
133
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
134
+ "requestSchema": "schema.json",
135
+ "responseSchema": "schema.json",
136
+ "timeout": 0,
137
+ "sendEmpty": false,
138
+ "sendGetBody": false,
139
+ "requestDatatype": "JSON",
140
+ "responseDatatype": "JSON",
141
+ "headers": {},
142
+ "responseObjects": [
143
+ {
144
+ "type": "default",
145
+ "key": "",
146
+ "mockFile": ""
147
+ }
148
+ ]
149
+ },
150
+ {
151
+ "name": "updateGenericNoBase",
152
+ "protocol": "REST",
153
+ "method": "PUT",
154
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
155
+ "requestSchema": "schema.json",
156
+ "responseSchema": "schema.json",
157
+ "timeout": 0,
158
+ "sendEmpty": false,
159
+ "sendGetBody": false,
160
+ "requestDatatype": "JSON",
161
+ "responseDatatype": "JSON",
162
+ "headers": {},
163
+ "responseObjects": [
164
+ {
165
+ "type": "default",
166
+ "key": "",
167
+ "mockFile": ""
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ "name": "patchGenericNoBase",
173
+ "protocol": "REST",
174
+ "method": "PATCH",
175
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
176
+ "requestSchema": "schema.json",
177
+ "responseSchema": "schema.json",
178
+ "timeout": 0,
179
+ "sendEmpty": false,
180
+ "sendGetBody": false,
181
+ "requestDatatype": "JSON",
182
+ "responseDatatype": "JSON",
183
+ "headers": {},
184
+ "responseObjects": [
185
+ {
186
+ "type": "default",
187
+ "key": "",
188
+ "mockFile": ""
189
+ }
190
+ ]
191
+ },
192
+ {
193
+ "name": "deleteGenericNoBase",
194
+ "protocol": "REST",
195
+ "method": "DELETE",
196
+ "entitypath": "/{pathv1}/{pathv2}/{pathv3}/{pathv4}/{pathv5}/{pathv6}/{pathv7}/{pathv8}/{pathv9}/{pathv10}/{pathv11}/{pathv12}/{pathv13}/{pathv14}/{pathv15}/{pathv16}/{pathv17}/{pathv18}/{pathv19}/{pathv20}?{query}",
197
+ "requestSchema": "schema.json",
198
+ "responseSchema": "schema.json",
199
+ "timeout": 0,
200
+ "sendEmpty": false,
201
+ "sendGetBody": false,
202
+ "requestDatatype": "JSON",
203
+ "responseDatatype": "JSON",
204
+ "headers": {},
205
+ "responseObjects": [
206
+ {
207
+ "type": "default",
208
+ "key": "",
209
+ "mockFile": ""
210
+ }
211
+ ]
107
212
  }
108
213
  ]
109
214
  }
@@ -14,7 +14,12 @@
14
14
  "createGeneric",
15
15
  "updateGeneric",
16
16
  "patchGeneric",
17
- "deleteGeneric"
17
+ "deleteGeneric",
18
+ "getGenericsNoBase",
19
+ "createGenericNoBase",
20
+ "updateGenericNoBase",
21
+ "patchGenericNoBase",
22
+ "deleteGenericNoBase"
18
23
  ],
19
24
  "external_name": "ph_request_type"
20
25
  }
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@itentialopensource/adapter-meraki",
3
- "version": "0.8.2",
3
+ "version": "0.8.3",
4
4
  "description": "This adapter integrates with system described as: merakiDashboardApi.",
5
5
  "main": "adapter.js",
6
+ "systemName": "Meraki",
6
7
  "wizardVersion": "2.44.7",
7
- "engineVersion": "1.61.2",
8
+ "engineVersion": "1.61.3",
8
9
  "adapterType": "http",
9
10
  "scripts": {
10
11
  "artifactize": "npm i && node utils/packModificationScript.js",
package/pronghorn.json CHANGED
@@ -402,6 +402,85 @@
402
402
  },
403
403
  "task": true
404
404
  },
405
+ {
406
+ "name": "genericAdapterRequestNoBasePath",
407
+ "summary": "Makes the requested generic call with no base path or version",
408
+ "description": "Makes the requested generic call with no base path or version",
409
+ "input": [
410
+ {
411
+ "name": "uriPath",
412
+ "type": "string",
413
+ "info": "the path of the api call - do not include the host, port, base path or version",
414
+ "description": "the path of the api call",
415
+ "schema": {
416
+ "title": "uriPath",
417
+ "type": "string"
418
+ },
419
+ "required": true
420
+ },
421
+ {
422
+ "name": "restMethod",
423
+ "type": "string",
424
+ "info": "the rest method (GET, POST, PUT, PATCH, DELETE)",
425
+ "description": "the rest method (GET, POST, PUT, PATCH, DELETE)",
426
+ "schema": {
427
+ "title": "restMethod",
428
+ "type": "string"
429
+ },
430
+ "required": true
431
+ },
432
+ {
433
+ "name": "queryData",
434
+ "type": "object",
435
+ "info": "the query parameters to be put on the url (optional)",
436
+ "description": "the query parameters to be put on the url (optional)",
437
+ "schema": {
438
+ "title": "queryData",
439
+ "type": "object"
440
+ },
441
+ "required": false
442
+ },
443
+ {
444
+ "name": "requestBody",
445
+ "type": "object",
446
+ "info": "the payload to be sent with the request (optional)",
447
+ "description": "the payload to be sent with the request (optional)",
448
+ "schema": {
449
+ "title": "requestBody",
450
+ "type": "object"
451
+ },
452
+ "required": false
453
+ },
454
+ {
455
+ "name": "addlHeaders",
456
+ "type": "object",
457
+ "info": "additional headers to be put on the call (optional)",
458
+ "description": "additional headers to be put on the call (optional)",
459
+ "schema": {
460
+ "title": "addlHeaders",
461
+ "type": "object"
462
+ },
463
+ "required": false
464
+ }
465
+ ],
466
+ "output": {
467
+ "name": "result",
468
+ "type": "object",
469
+ "description": "A JSON Object containing status, code and the result",
470
+ "schema": {
471
+ "title": "result",
472
+ "type": "object"
473
+ }
474
+ },
475
+ "roles": [
476
+ "admin"
477
+ ],
478
+ "route": {
479
+ "verb": "POST",
480
+ "path": "/genericAdapterRequestNoBasePath"
481
+ },
482
+ "task": true
483
+ },
405
484
  {
406
485
  "name": "getDevice",
407
486
  "summary": "Get the Appliance",
@@ -51,6 +51,11 @@
51
51
  "description": "When true the path variables are encoded in the url",
52
52
  "default": true
53
53
  },
54
+ "encode_queryvars": {
55
+ "type": "boolean",
56
+ "description": "When true the path variables are encoded in the url",
57
+ "default": true
58
+ },
54
59
  "save_metric": {
55
60
  "type": [
56
61
  "boolean",
@@ -977,6 +982,14 @@
977
982
  "description": "return failure or ignore failure",
978
983
  "default": "ignore"
979
984
  },
985
+ "requestFields": {
986
+ "type": "object",
987
+ "description": "The json object with response fields of the call to getDevice",
988
+ "additionalProperties": {
989
+ "type": "string"
990
+ },
991
+ "properties": {}
992
+ },
980
993
  "responseFields": {
981
994
  "type": "object",
982
995
  "description": "The json object with response fields of the call to getDevicesFiltered",
Binary file
@@ -8,6 +8,7 @@
8
8
  "version": "v0",
9
9
  "cache_location": "none",
10
10
  "encode_pathvars": true,
11
+ "encode_queryvars": true,
11
12
  "save_metric": true,
12
13
  "stub": true,
13
14
  "protocol": "https",
@@ -95,6 +96,87 @@
95
96
  "key_file": "",
96
97
  "cert_file": ""
97
98
  }
99
+ },
100
+ "deviceBroker": {
101
+ "getDevice": [
102
+ {
103
+ "path": "/get/devices/{id}",
104
+ "method": "GET",
105
+ "query": {},
106
+ "body": {},
107
+ "headers": {},
108
+ "handleFailure": "ignore",
109
+ "requestFields": {
110
+ "id": "name"
111
+ },
112
+ "responseFields": {
113
+ "name": "host",
114
+ "ostype": "os",
115
+ "ostypePrefix": "system-",
116
+ "ipaddress": "attributes.ipaddr",
117
+ "port": 443
118
+ }
119
+ }
120
+ ],
121
+ "getDevicesFiltered": [
122
+ {
123
+ "path": "/get/devices",
124
+ "method": "GET",
125
+ "query": {},
126
+ "body": {},
127
+ "headers": {},
128
+ "handleFailure": "ignore",
129
+ "requestFields": {},
130
+ "responseFields": {
131
+ "name": "host",
132
+ "ostype": "os",
133
+ "ostypePrefix": "system-",
134
+ "ipaddress": "attributes.ipaddr",
135
+ "port": 443
136
+ }
137
+ }
138
+ ],
139
+ "isAlive": [
140
+ {
141
+ "path": "/get/devices/{id}/status",
142
+ "method": "GET",
143
+ "query": {},
144
+ "body": {},
145
+ "headers": {},
146
+ "handleFailure": "ignore",
147
+ "statusValue": "online",
148
+ "requestFields": {
149
+ "id": "name"
150
+ },
151
+ "responseFields": {
152
+ "status": "status"
153
+ }
154
+ }
155
+ ],
156
+ "getConfig": [
157
+ {
158
+ "path": "/get/devices/{id}/configPart1",
159
+ "method": "GET",
160
+ "query": {},
161
+ "body": {},
162
+ "headers": {},
163
+ "handleFailure": "ignore",
164
+ "requestFields": {
165
+ "id": "name"
166
+ },
167
+ "responseFields": {}
168
+ }
169
+ ],
170
+ "getCount": [
171
+ {
172
+ "path": "/get/devices",
173
+ "method": "GET",
174
+ "query": {},
175
+ "body": {},
176
+ "headers": {},
177
+ "handleFailure": "ignore"
178
+ }
179
+ ]
98
180
  }
99
181
  },
100
182
  "groups": [],
@@ -317,8 +317,10 @@ describe('[unit] Adapter Base Test', () => {
317
317
  });
318
318
  it('should return a list of functions', (done) => {
319
319
  const returnedFunctions = ['addEntityCache', 'capabilityResults', 'checkActionFiles', 'checkProperties', 'connect', 'encryptProperty',
320
- 'entityInList', 'getAllCapabilities', 'getAllFunctions', 'healthCheck', 'iapFindAdapterPath', 'iapGetAdapterQueue', 'iapGetAdapterWorkflowFunctions', 'iapMakeBrokerCall', 'iapMoveAdapterEntitiesToDB',
321
- 'iapRunAdapterBasicGet', 'iapRunAdapterConnectivity', 'iapRunAdapterHealthcheck', 'iapSuspendAdapter', 'iapTroubleshootAdapter', 'iapUnsuspendAdapter', 'iapUpdateAdapterConfiguration', 'refreshProperties', 'addListener',
320
+ 'entityInList', 'getAllCapabilities', 'getAllFunctions', 'getConfig', 'getDevice', 'getDevicesFiltered', 'hasDevices', 'hasEntities',
321
+ 'healthCheck', 'iapFindAdapterPath', 'iapGetAdapterQueue', 'iapGetAdapterWorkflowFunctions', 'iapGetDeviceCount', 'iapMakeBrokerCall',
322
+ 'iapMoveAdapterEntitiesToDB', 'iapRunAdapterBasicGet', 'iapRunAdapterConnectivity', 'iapRunAdapterHealthcheck', 'iapSuspendAdapter',
323
+ 'iapTroubleshootAdapter', 'iapUnsuspendAdapter', 'iapUpdateAdapterConfiguration', 'isAlive', 'refreshProperties', 'addListener',
322
324
  'emit', 'eventNames', 'getMaxListeners', 'listenerCount', 'listeners', 'off', 'on', 'once', 'prependListener',
323
325
  'prependOnceListener', 'rawListeners', 'removeAllListeners', 'removeListener', 'setMaxListeners'];
324
326
  try {
@@ -817,12 +819,17 @@ describe('[unit] Adapter Base Test', () => {
817
819
  try {
818
820
  assert.notEqual(0, expectedCapabilities.length);
819
821
  assert.equal('.generic', expectedCapabilities[0].entity);
820
- assert.equal(5, expectedCapabilities[0].actions.length);
822
+ assert.equal(10, expectedCapabilities[0].actions.length);
821
823
  assert.equal('getGenerics', expectedCapabilities[0].actions[0]);
822
824
  assert.equal('createGeneric', expectedCapabilities[0].actions[1]);
823
825
  assert.equal('updateGeneric', expectedCapabilities[0].actions[2]);
824
826
  assert.equal('patchGeneric', expectedCapabilities[0].actions[3]);
825
827
  assert.equal('deleteGeneric', expectedCapabilities[0].actions[4]);
828
+ assert.equal('getGenericsNoBase', expectedCapabilities[0].actions[5]);
829
+ assert.equal('createGenericNoBase', expectedCapabilities[0].actions[6]);
830
+ assert.equal('updateGenericNoBase', expectedCapabilities[0].actions[7]);
831
+ assert.equal('patchGenericNoBase', expectedCapabilities[0].actions[8]);
832
+ assert.equal('deleteGenericNoBase', expectedCapabilities[0].actions[9]);
826
833
  assert.equal('.system', expectedCapabilities[1].entity);
827
834
  assert.equal(2, expectedCapabilities[1].actions.length);
828
835
  assert.equal('getToken', expectedCapabilities[1].actions[0]);
@@ -475,6 +475,7 @@ describe('[unit] Meraki Adapter Test', () => {
475
475
  assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapUnsuspendAdapter'));
476
476
  assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'iapGetAdapterQueue'));
477
477
  assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'genericAdapterRequest'));
478
+ assert.notEqual(undefined, pronghornDotJson.methods.find((e) => e.name === 'genericAdapterRequestNoBasePath'));
478
479
  done();
479
480
  } catch (error) {
480
481
  log.error(`Test Failure: ${error}`);
@@ -646,6 +647,8 @@ describe('[unit] Meraki Adapter Test', () => {
646
647
  assert.equal('string', propertiesDotJson.definitions.authentication.properties.client_id.type);
647
648
  assert.equal('string', propertiesDotJson.definitions.authentication.properties.client_secret.type);
648
649
  assert.equal('string', propertiesDotJson.definitions.authentication.properties.grant_type.type);
650
+ assert.notEqual(undefined, propertiesDotJson.definitions.ssl);
651
+ assert.notEqual(null, propertiesDotJson.definitions.ssl);
649
652
  assert.notEqual('', propertiesDotJson.definitions.ssl);
650
653
  assert.equal('string', propertiesDotJson.definitions.ssl.properties.ecdhCurve.type);
651
654
  assert.equal('boolean', propertiesDotJson.definitions.ssl.properties.enabled.type);
@@ -659,6 +662,7 @@ describe('[unit] Meraki Adapter Test', () => {
659
662
  assert.equal('string', propertiesDotJson.properties.version.type);
660
663
  assert.equal('string', propertiesDotJson.properties.cache_location.type);
661
664
  assert.equal('boolean', propertiesDotJson.properties.encode_pathvars.type);
665
+ assert.equal('boolean', propertiesDotJson.properties.encode_queryvars.type);
662
666
  assert.equal(true, Array.isArray(propertiesDotJson.properties.save_metric.type));
663
667
  assert.equal('string', propertiesDotJson.properties.protocol.type);
664
668
  assert.notEqual(undefined, propertiesDotJson.definitions);
@@ -707,8 +711,6 @@ describe('[unit] Meraki Adapter Test', () => {
707
711
  assert.equal('string', propertiesDotJson.definitions.proxy.properties.protocol.type);
708
712
  assert.equal('string', propertiesDotJson.definitions.proxy.properties.username.type);
709
713
  assert.equal('string', propertiesDotJson.definitions.proxy.properties.password.type);
710
- assert.notEqual(undefined, propertiesDotJson.definitions.ssl);
711
- assert.notEqual(null, propertiesDotJson.definitions.ssl);
712
714
  assert.notEqual(undefined, propertiesDotJson.definitions.mongo);
713
715
  assert.notEqual(null, propertiesDotJson.definitions.mongo);
714
716
  assert.notEqual('', propertiesDotJson.definitions.mongo);
@@ -1291,18 +1293,6 @@ describe('[unit] Meraki Adapter Test', () => {
1291
1293
  });
1292
1294
  });
1293
1295
 
1294
- describe('#hasDevices', () => {
1295
- it('should have a hasDevices function', (done) => {
1296
- try {
1297
- assert.equal(true, typeof a.hasDevices === 'function');
1298
- done();
1299
- } catch (error) {
1300
- log.error(`Test Failure: ${error}`);
1301
- done(error);
1302
- }
1303
- });
1304
- });
1305
-
1306
1296
  describe('#getDevice', () => {
1307
1297
  it('should have a getDevice function', (done) => {
1308
1298
  try {
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env node
2
+ /* @copyright Itential, LLC 2019 */
3
+ /* eslint global-require:warn */
4
+ /* eslint import/no-dynamic-require:warn */
5
+ /* eslint prefer-destructuring:warn */
6
+
7
+ const fs = require('fs-extra');
8
+ const path = require('path');
9
+
10
+ /**
11
+ * This script will determine the information about the adapter and store
12
+ * it into a file in the adapter.
13
+ */
14
+
15
+ /**
16
+ * get adapter information
17
+ */
18
+ function adapterInfo() {
19
+ // set the base pase of the adapter - tool shoud be one level up in utils
20
+ let adaptdir = __dirname;
21
+ const infoRes = {};
22
+
23
+ if (adaptdir.endsWith('/utils')) {
24
+ adaptdir = adaptdir.substring(0, adaptdir.length - 6);
25
+ }
26
+ const pack = require(`${adaptdir}/package.json`);
27
+ infoRes.version = pack.version;
28
+
29
+ let configCount = 0;
30
+ if (fs.existsSync(`${adaptdir}/pronghorn.json`)) {
31
+ const cFile = fs.readFileSync(`${adaptdir}/pronghorn.json`, 'utf8');
32
+ configCount += cFile.split('\n').length;
33
+ } else {
34
+ console.log('Missing - pronghorn.json');
35
+ }
36
+ if (fs.existsSync(`${adaptdir}/propertiesSchema.json`)) {
37
+ const cFile = fs.readFileSync(`${adaptdir}/propertiesSchema.json`, 'utf8');
38
+ configCount += cFile.split('\n').length;
39
+ } else {
40
+ console.log('Missing - propertiesSchema.json');
41
+ }
42
+ if (fs.existsSync(`${adaptdir}/error.json`)) {
43
+ const cFile = fs.readFileSync(`${adaptdir}/error.json`, 'utf8');
44
+ configCount += cFile.split('\n').length;
45
+ } else {
46
+ console.log('Missing - error.json');
47
+ }
48
+ const entitydir = path.join(adaptdir, '/entities');
49
+ if (fs.existsSync(entitydir) && fs.statSync(entitydir).isDirectory()) {
50
+ const entities = fs.readdirSync(entitydir);
51
+ // need to go through each entity in the entities directory
52
+ for (let e = 0; e < entities.length; e += 1) {
53
+ if (fs.statSync(`${entitydir}/${entities[e]}`).isDirectory()) {
54
+ const cfiles = fs.readdirSync(entitydir);
55
+ for (let c = 0; c < cfiles.length; c += 1) {
56
+ if (cfiles[c].endsWith('.json')) {
57
+ const ccFile = fs.readFileSync(`${entitydir}/${entities[e]}/${cfiles[c]}`, 'utf8');
58
+ configCount += ccFile.split('\n').length;
59
+ }
60
+ }
61
+ }
62
+ }
63
+ } else {
64
+ console.log('Could not find the entities directory');
65
+ }
66
+ infoRes.configLines = configCount;
67
+
68
+ let scodeCount = 0;
69
+ if (fs.existsSync(`${adaptdir}/utils/artifactize.js`)) {
70
+ const sFile = fs.readFileSync(`${adaptdir}/utils/artifactize.js`, 'utf8');
71
+ scodeCount += sFile.split('\n').length;
72
+ } else {
73
+ console.log('Missing - utils/artifactize.js');
74
+ }
75
+ if (fs.existsSync(`${adaptdir}/utils/basicGet.js`)) {
76
+ const sFile = fs.readFileSync(`${adaptdir}/utils/basicGet.js`, 'utf8');
77
+ scodeCount += sFile.split('\n').length;
78
+ } else {
79
+ console.log('Missing - utils/basicGet.js');
80
+ }
81
+ if (fs.existsSync(`${adaptdir}/utils/checkMigrate.js`)) {
82
+ const sFile = fs.readFileSync(`${adaptdir}/utils/checkMigrate.js`, 'utf8');
83
+ scodeCount += sFile.split('\n').length;
84
+ } else {
85
+ console.log('Missing - utils/checkMigrate.js');
86
+ }
87
+ if (fs.existsSync(`${adaptdir}/utils/findPath.js`)) {
88
+ const sFile = fs.readFileSync(`${adaptdir}/utils/findPath.js`, 'utf8');
89
+ scodeCount += sFile.split('\n').length;
90
+ } else {
91
+ console.log('Missing - utils/findPath.js');
92
+ }
93
+ if (fs.existsSync(`${adaptdir}/utils/modify.js`)) {
94
+ const sFile = fs.readFileSync(`${adaptdir}/utils/modify.js`, 'utf8');
95
+ scodeCount += sFile.split('\n').length;
96
+ } else {
97
+ console.log('Missing - utils/modify.js');
98
+ }
99
+ if (fs.existsSync(`${adaptdir}/utils/packModificationScript.js`)) {
100
+ const sFile = fs.readFileSync(`${adaptdir}/utils/packModificationScript.js`, 'utf8');
101
+ scodeCount += sFile.split('\n').length;
102
+ } else {
103
+ console.log('Missing - utils/packModificationScript.js');
104
+ }
105
+ if (fs.existsSync(`${adaptdir}/utils/setup.js`)) {
106
+ const sFile = fs.readFileSync(`${adaptdir}/utils/setup.js`, 'utf8');
107
+ scodeCount += sFile.split('\n').length;
108
+ } else {
109
+ console.log('Missing - utils/setup.js');
110
+ }
111
+ if (fs.existsSync(`${adaptdir}/utils/tbScript.js`)) {
112
+ const sFile = fs.readFileSync(`${adaptdir}/utils/tbScript.js`, 'utf8');
113
+ scodeCount += sFile.split('\n').length;
114
+ } else {
115
+ console.log('Missing - utils/tbScript.js');
116
+ }
117
+ if (fs.existsSync(`${adaptdir}/utils/tbUtils.js`)) {
118
+ const sFile = fs.readFileSync(`${adaptdir}/utils/tbUtils.js`, 'utf8');
119
+ scodeCount += sFile.split('\n').length;
120
+ } else {
121
+ console.log('Missing - utils/tbUtils.js');
122
+ }
123
+ if (fs.existsSync(`${adaptdir}/utils/testRunner.js`)) {
124
+ const sFile = fs.readFileSync(`${adaptdir}/utils/testRunner.js`, 'utf8');
125
+ scodeCount += sFile.split('\n').length;
126
+ } else {
127
+ console.log('Missing - utils/testRunner.js');
128
+ }
129
+ if (fs.existsSync(`${adaptdir}/utils/troubleshootingAdapter.js`)) {
130
+ const sFile = fs.readFileSync(`${adaptdir}/utils/troubleshootingAdapter.js`, 'utf8');
131
+ scodeCount += sFile.split('\n').length;
132
+ } else {
133
+ console.log('Missing - utils/troubleshootingAdapter.js');
134
+ }
135
+ infoRes.scriptLines = scodeCount;
136
+
137
+ let codeCount = 0;
138
+ if (fs.existsSync(`${adaptdir}/adapter.js`)) {
139
+ const aFile = fs.readFileSync(`${adaptdir}/adapter.js`, 'utf8');
140
+ codeCount += aFile.split('\n').length;
141
+ } else {
142
+ console.log('Missing - utils/adapter.js');
143
+ }
144
+ if (fs.existsSync(`${adaptdir}/adapterBase.js`)) {
145
+ const aFile = fs.readFileSync(`${adaptdir}/adapterBase.js`, 'utf8');
146
+ codeCount += aFile.split('\n').length;
147
+ } else {
148
+ console.log('Missing - utils/adapterBase.js');
149
+ }
150
+ infoRes.codeLines = codeCount;
151
+
152
+ let tcodeCount = 0;
153
+ let ttestCount = 0;
154
+ if (fs.existsSync(`${adaptdir}/test/integration/adapterTestBasicGet.js`)) {
155
+ const tFile = fs.readFileSync(`${adaptdir}/test/integration/adapterTestBasicGet.js`, 'utf8');
156
+ tcodeCount += tFile.split('\n').length;
157
+ ttestCount += tFile.split('it(\'').length;
158
+ } else {
159
+ console.log('Missing - test/integration/adapterTestBasicGet.js');
160
+ }
161
+ if (fs.existsSync(`${adaptdir}/test/integration/adapterTestConnectivity.js`)) {
162
+ const tFile = fs.readFileSync(`${adaptdir}/test/integration/adapterTestConnectivity.js`, 'utf8');
163
+ tcodeCount += tFile.split('\n').length;
164
+ ttestCount += tFile.split('it(\'').length;
165
+ } else {
166
+ console.log('Missing - test/integration/adapterTestConnectivity.js');
167
+ }
168
+ if (fs.existsSync(`${adaptdir}/test/integration/adapterTestIntegration.js`)) {
169
+ const tFile = fs.readFileSync(`${adaptdir}/test/integration/adapterTestIntegration.js`, 'utf8');
170
+ tcodeCount += tFile.split('\n').length;
171
+ ttestCount += tFile.split('it(\'').length;
172
+ } else {
173
+ console.log('Missing - test/integration/adapterTestIntegration.js');
174
+ }
175
+ if (fs.existsSync(`${adaptdir}/test/unit/adapterBaseTestUnit.js`)) {
176
+ const tFile = fs.readFileSync(`${adaptdir}/test/unit/adapterBaseTestUnit.js`, 'utf8');
177
+ tcodeCount += tFile.split('\n').length;
178
+ ttestCount += tFile.split('it(\'').length;
179
+ } else {
180
+ console.log('Missing - test/unit/adapterBaseTestUnit.js');
181
+ }
182
+ if (fs.existsSync(`${adaptdir}/test/unit/adapterTestUnit.js`)) {
183
+ const tFile = fs.readFileSync(`${adaptdir}/test/unit/adapterTestUnit.js`, 'utf8');
184
+ tcodeCount += tFile.split('\n').length;
185
+ ttestCount += tFile.split('it(\'').length;
186
+ } else {
187
+ console.log('Missing - test/unit/adapterTestUnit.js');
188
+ }
189
+ infoRes.testLines = tcodeCount;
190
+ infoRes.testCases = ttestCount;
191
+ infoRes.totalCodeLines = scodeCount + codeCount + tcodeCount;
192
+
193
+ if (fs.existsSync(`${adaptdir}/pronghorn.json`)) {
194
+ // Read the entity schema from the file system
195
+ const phFile = path.join(adaptdir, '/pronghorn.json');
196
+ const prong = require(phFile);
197
+ infoRes.wfTasks = prong.methods.length;
198
+ } else {
199
+ console.log('Missing - pronghorn.json');
200
+ }
201
+
202
+ console.log(JSON.stringify(infoRes));
203
+ fs.writeFileSync(`${adaptdir}/report/adapterInfo.json`, JSON.stringify(infoRes, null, 2));
204
+ }
205
+
206
+ adapterInfo();
@@ -17,6 +17,9 @@ printf "%b" "Running pre-commit hooks...\\n"
17
17
  # verify testing script is stubbed and no credentials
18
18
  node utils/testRunner.js -r
19
19
 
20
+ # update the adapter information file
21
+ node utils/adapterInfo.js
22
+
20
23
  # security audit on the code
21
24
  npm audit --registry=https://registry.npmjs.org --audit-level=moderate
22
25