@incdevco/framework
Version:
node.js lambda framework
145 lines (97 loc) • 2.89 kB
JavaScript
var fs = require('fs');
var ini = require('ini');
var mkdirp = require('mkdirp');
var Prompt = require('../prompt');
var homeDir = require('os').homedir();
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);
//console.log(JSON.stringify(awsCredentials, null, 2));
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');
process.exit(0);
})
.catch(function (exception) {
console.error(exception);
process.exit(1);
});