1 | 'use strict';
|
2 |
|
3 | const path = require('path');
|
4 | const fs = require('fs-extra');
|
5 |
|
6 | const ENV_PARAMS = ['OW_APIHOST', 'OW_AUTH', 'OW_NAMESPACE', 'OW_APIGW_ACCESS_TOKEN'];
|
7 |
|
8 | function getWskPropsFile() {
|
9 | const Home = process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'];
|
10 | return path.format({ dir: Home, base: '.wskprops' });
|
11 | }
|
12 |
|
13 | function readWskPropsFile() {
|
14 | const wskFilePath = getWskPropsFile();
|
15 |
|
16 | return new Promise(resolve => {
|
17 | fs.readFile(wskFilePath, 'utf8', (err, data) => {
|
18 | resolve(err ? '' : data);
|
19 | });
|
20 | });
|
21 | }
|
22 |
|
23 | function getWskProps() {
|
24 | return readWskPropsFile().then(data => {
|
25 | if (!data) return {};
|
26 |
|
27 | const wskProps = data.trim().split('\n')
|
28 | .map(line => line.split('='))
|
29 | .reduce((params, keyValue) => {
|
30 | params[keyValue[0].toLowerCase()] = keyValue[1];
|
31 | return params;
|
32 | }, {});
|
33 |
|
34 | return wskProps;
|
35 | });
|
36 | }
|
37 |
|
38 | function getWskEnvProps() {
|
39 | const envProps = {};
|
40 | ENV_PARAMS.forEach((envName) => {
|
41 | if (process.env[envName]) envProps[envName.slice(3).toLowerCase()] = process.env[envName];
|
42 | });
|
43 | return envProps;
|
44 | }
|
45 |
|
46 | module.exports = {
|
47 | getWskProps() {
|
48 | return getWskProps()
|
49 | .then(props => Object.assign(props, getWskEnvProps()));
|
50 | },
|
51 | };
|