@@ -0,0 +1,94 @@
|
|||||||
|
import { GluegunMenuToolbox } from '@lenne.tech/gluegun-menu';
|
||||||
|
import chalk = require('chalk');
|
||||||
|
import { defaultMenuSettings, sleep } from '../../../../globals';
|
||||||
|
import * as fs from 'fs';
|
||||||
|
const { AutoComplete } = require('enquirer');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'update',
|
||||||
|
alias: ['u'],
|
||||||
|
description: 'Update an existing item in parameter store (a ps u)',
|
||||||
|
hidden: false,
|
||||||
|
run: async (toolbox: GluegunMenuToolbox) => {
|
||||||
|
const { print, prompt, system, filesystem } = toolbox;
|
||||||
|
|
||||||
|
// Read the .pwcli_parametercache file
|
||||||
|
const cacheFilePath = '/tmp/.pwcli_parametercache';
|
||||||
|
let parameters = [];
|
||||||
|
if (fs.existsSync(cacheFilePath)) {
|
||||||
|
const cacheContent = await filesystem.read(cacheFilePath);
|
||||||
|
parameters = JSON.parse(cacheContent);
|
||||||
|
} else {
|
||||||
|
print.error(
|
||||||
|
chalk.red(
|
||||||
|
'Cache file not found. Please run "a ps l" first to populate the cache.'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const autoComplete = new AutoComplete({
|
||||||
|
name: 'parameterNames',
|
||||||
|
message: 'Choose a parameter',
|
||||||
|
limit: 30,
|
||||||
|
initial: 10,
|
||||||
|
choices: parameters,
|
||||||
|
});
|
||||||
|
|
||||||
|
const parameterName = await autoComplete.run();
|
||||||
|
|
||||||
|
print.info(parameterName);
|
||||||
|
|
||||||
|
const parameterValue = await prompt.ask({
|
||||||
|
type: 'input',
|
||||||
|
name: 'value',
|
||||||
|
message: `New value for [${chalk.yellow(parameterName)}]:`,
|
||||||
|
});
|
||||||
|
|
||||||
|
print.info(
|
||||||
|
`Parameter: ${chalk.yellow(parameterName)}, New Value: ${chalk.green(
|
||||||
|
parameterValue.value
|
||||||
|
)}`
|
||||||
|
);
|
||||||
|
|
||||||
|
const secureParameter = await prompt.confirm(
|
||||||
|
'Should this parameter be secure?'
|
||||||
|
);
|
||||||
|
|
||||||
|
let parameterType = 'String';
|
||||||
|
if (secureParameter) {
|
||||||
|
parameterType = 'SecureString';
|
||||||
|
}
|
||||||
|
|
||||||
|
const confirmUpdate = await prompt.confirm(
|
||||||
|
`Update [${chalk.yellow(parameterName)}] with value [${chalk.green(
|
||||||
|
parameterValue.value
|
||||||
|
)}] as ${chalk.red(parameterType)}?`
|
||||||
|
);
|
||||||
|
|
||||||
|
if (confirmUpdate) {
|
||||||
|
try {
|
||||||
|
const updateResult = await system.run(
|
||||||
|
`aws ssm put-parameter --name "${parameterName}" --value "${parameterValue.value}" --type ${parameterType} --overwrite`
|
||||||
|
);
|
||||||
|
print.info(updateResult);
|
||||||
|
print.success(
|
||||||
|
chalk.green(`Parameter "${parameterName}" updated successfully.`)
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
print.error(
|
||||||
|
chalk.red(
|
||||||
|
`An error occurred while updating the parameter: ${error.message}`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print.info('Parameter update cancelled.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toolbox.fromMenu()) {
|
||||||
|
await toolbox.menu.showMenu('aws parameterstore', defaultMenuSettings);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user