mirror of
https://github.com/serverless/serverless.git
synced 2026-01-25 15:07:39 +00:00
Create ~/.aws directory if it doesn't exists
This commit is contained in:
parent
0ad85fe09d
commit
42354bbfbd
@ -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();
|
||||
}
|
||||
);
|
||||
});
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user