@incdevco/framework
Version:
node.js lambda framework
161 lines (111 loc) • 3.71 kB
JavaScript
var fs = require('fs');
var gutil = require('gulp-util');
var ini = require('ini');
var mkdirp = require('mkdirp');
var Prompt = require('../../prompt');
var homeDir = require('os').homedir();
module.exports = function (config) {
'use strict';
config = config || {};
var awsConfig = {};
var awsConfigFileName = homeDir + '/.aws/config';
var awsCredentials = {};
var awsCredentialsFileName = homeDir + '/.aws/credentials';
var developerDetails = {};
var developerDetailsFileName = homeDir + '/.incdevco/developer_details.json';
function loadIniFile(filename, encoding) {
'use strict';
var contents;
encoding = encoding || 'utf8';
if (fs.existsSync(filename)) {
contents = fs.readFileSync(filename, encoding);
}
if (contents) {
contents = ini.parse(contents);
} else {
contents = {};
}
return contents;
}
function loadJsonFile(filename, encoding) {
'use strict';
var contents;
encoding = encoding || 'utf8';
if (fs.existsSync(filename)) {
contents = fs.readFileSync(filename, encoding);
}
if (contents) {
contents = JSON.parse(contents);
} else {
contents = {};
}
return contents;
}
awsConfig = loadIniFile(awsConfigFileName);
awsCredentials = loadIniFile(awsCredentialsFileName);
developerDetails = loadJsonFile(developerDetailsFileName);
if ((developerDetails.email_address
&& developerDetails.github_username
&& awsCredentials.default.aws_access_key_id
&& awsCredentials.default.aws_secret_access_key
&& awsConfig.default.region)
&& !gutil.env.setup) {
return Promise.resolve({
email_address: developerDetails.email_address,
github_username: developerDetails.github_username,
aws_access_key_id: awsCredentials.default.aws_access_key_id,
aws_secret_access_key: awsCredentials.default.aws_secret_access_key,
aws_region: awsConfig.default.region
});
}
return Prompt.get({
properties: {
email_address: {
default: developerDetails.email_address,
message: 'An email address to subscribe to administration alerts.',
required: true
},
github_username: {
default: developerDetails.github_username,
message: 'Your GitHub username.',
required: true
},
aws_access_key_id: {
default: awsCredentials.default.aws_access_key_id,
message: 'AWS Access Key Id',
required: true
},
aws_secret_access_key: {
default: awsCredentials.default.aws_secret_access_key,
message: 'AWS Secret Access Key',
required: true
},
aws_region: {
default: awsConfig.default.region,
message: 'AWS Default Region',
required: false
}
}
})
.then(function (result) {
mkdirp.sync(homeDir + '/.incdevco');
mkdirp.sync(homeDir + '/.aws');
fs.writeFileSync(developerDetailsFileName, JSON.stringify({
email_address: result.email_address,
github_username: result.github_username
}, null, 2), 'utf8');
fs.writeFileSync(awsConfigFileName, ini.stringify({
region: result.aws_region,
output: 'json'
}, {
section: 'default'
}), 'utf8');
fs.writeFileSync(awsCredentialsFileName, ini.stringify({
aws_access_key_id: result.aws_access_key_id,
aws_secret_access_key: result.aws_secret_access_key
}, {
section: 'default'
}), 'utf8');
return result;
});
};