Create ~/.aws directory if it doesn't exists

This commit is contained in:
Mariusz Nowak 2019-07-01 19:21:23 +02:00
parent 0ad85fe09d
commit 42354bbfbd
No known key found for this signature in database
GPG Key ID: B1FBDA8A182B03F2

View File

@ -1,12 +1,13 @@
'use strict';
const { join } = require('path');
const { constants, readFile, writeFile } = require('fs');
const { constants, readFile, writeFile, mkdir } = require('fs');
const os = require('os');
const BbPromise = require('bluebird');
const homedir = os.homedir();
const credentialsFilePath = homedir ? join(homedir, '.aws/credentials') : null;
const awsConfigDirPath = join(homedir, '.aws');
const credentialsFilePath = homedir ? join(awsConfigDirPath, 'credentials') : null;
const profileNameRe = /^\[([^\]]+)]\s*$/;
const settingRe = /^([a-zA-Z0-9_]+)\s*=\s*([^\s]+)\s*$/;
@ -38,6 +39,33 @@ const parseFileProfiles = content => {
return profiles;
};
const writeCredentialsContent = content =>
new BbPromise((resolve, reject) =>
writeFile(
credentialsFilePath,
content,
{ mode: constants.S_IRUSR | constants.S_IWUSR },
writeFileError => {
if (writeFileError) {
if (writeFileError.code === 'ENOENT') {
mkdir(
awsConfigDirPath,
{ mode: constants.S_IRUSR | constants.S_IWUSR | constants.S_IXUSR },
mkdirError => {
if (mkdirError) reject(mkdirError);
else resolve(writeCredentialsContent(content));
}
);
} else {
reject(writeFileError);
}
} else {
resolve();
}
}
)
);
module.exports = {
resolveFileProfiles() {
return new BbPromise((resolve, reject) => {
@ -68,23 +96,18 @@ module.exports = {
},
saveFileProfiles(profiles) {
return new BbPromise((resolve, reject) => {
return new BbPromise(resolve => {
if (!credentialsFilePath) throw new Error('Could not resolve path to user credentials file');
const content = `${Array.from(profiles)
.map(
([name, data]) =>
`[${name}]\naws_access_key_id=${data.accessKeyId}\n` +
`aws_secret_access_key=${data.secretAccessKey}\n`
resolve(
writeCredentialsContent(
`${Array.from(profiles)
.map(
([name, data]) =>
`[${name}]\naws_access_key_id=${data.accessKeyId}\n` +
`aws_secret_access_key=${data.secretAccessKey}\n`
)
.join('\n')}`
)
.join('\n')}`;
writeFile(
credentialsFilePath,
content,
{ mode: constants.S_IRUSR | constants.S_IWUSR },
error => {
if (error) reject(error);
else resolve();
}
);
});
},