Skip to content

Commit a4c2ce0

Browse files
committed
fix(cli): make download-connector-list more robust
Signed-off-by: Taranveer Virk <taranveer@virk.cc>
1 parent 0cba673 commit a4c2ce0

File tree

2 files changed

+16
-28
lines changed

2 files changed

+16
-28
lines changed

packages/cli/bin/download-connector-list.js

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ const https = require('https');
22
const fs = require('fs');
33
const path = require('path');
44
const util = require('util');
5+
const request = require('request-promise-native');
56

6-
const readFileAsync = util.promisify(fs.readFile);
77
const writeFileAsync = util.promisify(fs.writeFile);
88

99
const DEST = path.resolve('generators/datasource/connectors.json');
@@ -15,36 +15,20 @@ const URL =
1515
* so the list only has to be maintained in one place.
1616
*/
1717
async function download() {
18-
var file = fs.createWriteStream(DEST);
19-
var request = https
20-
.get(URL, function(response) {
21-
response.pipe(file);
22-
file.on('finish', async function() {
23-
file.close();
24-
await transformConnectorJSON();
25-
});
26-
})
27-
.on('error', function(err) {
28-
fs.unlink(DEST);
29-
return err;
30-
});
31-
}
32-
33-
/**
34-
* This function transforms the array of Connector objects from
35-
* loopback-workspace as follows:
36-
*
37-
* - Transforms the array into an object / map
38-
* - Transforms display:password to type:password so it can be used by CLI directly
39-
* - Transforms description to message so it can be used by CLI directly
40-
*/
41-
async function transformConnectorJSON() {
42-
let data = await readFileAsync(DEST, 'utf-8');
43-
data = JSON.parse(data);
18+
const data = await request(URL, {json: true});
4419
const out = {};
20+
21+
/**
22+
* This transforms the array of Connector objects from
23+
* loopback-workspace as follows:
24+
*
25+
* - Transforms the array into an object / map
26+
* - Transforms display:password to type:password so it can be used by CLI directly
27+
* - Transforms description to message so it can be used by CLI directly
28+
*/
4529
data.forEach(item => {
4630
if (item.settings) {
47-
Object.entries(item.settings).forEach(([key, value]) => {
31+
Object.values(item.settings).forEach(value => {
4832
if (value.display === 'password') {
4933
value.type = 'password';
5034
delete value.display;
@@ -58,6 +42,8 @@ async function transformConnectorJSON() {
5842
}
5943
out[item.name] = item;
6044
});
45+
46+
// Write data to file
6147
await writeFileAsync(DEST, JSON.stringify(out, null, 2));
6248
}
6349

packages/cli/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
"mem-fs": "^1.1.3",
3232
"mem-fs-editor": "^4.0.0",
3333
"nsp": "^3.2.1",
34+
"request": "^2.87.0",
35+
"request-promise-native": "^1.0.5",
3436
"rimraf": "^2.6.2",
3537
"sinon": "^4.5.0",
3638
"yeoman-assert": "^3.1.1",

0 commit comments

Comments
 (0)