added parameter store checkout script

This commit is contained in:
Arwid Thornström
2022-09-14 21:30:27 +02:00
parent 062f556b15
commit 6d7e974845
@@ -0,0 +1,64 @@
import { GluegunMenuToolbox } from '@lenne.tech/gluegun-menu'
import chalk = require('chalk');
import { defaultMenuSettings } from '../../../globals';
const { AutoComplete } = require('enquirer');
const sleep = (milliseconds) => {
return new Promise(resolve => setTimeout(resolve, milliseconds))
}
module.exports = {
name: 'parameterstore',
alias: ['ps'],
description: 'Parameter store functions (ps)',
hidden: false,
run: async (toolbox: GluegunMenuToolbox) => {
const { system, strings, print, filesystem } = toolbox;
// Check for cache in /tmp folder
const cache = filesystem.read('/tmp/.pwcli_parametercache');
const cacheValues = !cache ? [] : JSON.parse(cache);
const valueNames = [...cacheValues];
let nextToken = '';
if (valueNames.length === 0) {
const spinner = print.spin(`Downloading parameter names (${chalk.red('0')})`);
while (nextToken !== null) {
const values = JSON.parse(
strings.trim(
await system.run(`aws ssm describe-parameters --output json --max-items 50 ${(nextToken !== '') ? `--starting-token ${nextToken}` : ''}`)));
await sleep(500);
valueNames.push(...values.Parameters.map(({Name}) => { return Name; }));
nextToken = values.NextToken || null;
spinner.text = `Downloading parameter names (${chalk.red(valueNames.length)})`
}
spinner.text = 'Saving parameter names to /tmp/.pwcli_parametercache';
filesystem.file('/tmp/.pwcli_parametercache', {mode: '600', content: JSON.stringify(valueNames)});
await sleep(2000);
spinner.stop();
}
const prompt = new AutoComplete({
name: 'parameterNames',
message: 'Choose a parameter',
limit: 30,
initial: valueNames.length - 1,
choices: valueNames
});
const parameterName = await prompt.run();
console.log(`parameterName`, parameterName);
const parameterValue = JSON.parse(strings.trim(await system.run(`aws ssm get-parameter --name ${parameterName}`)));
print.success(`${chalk.green(parameterName)} value is [${chalk.yellow(parameterValue.Parameter.Value)}]`);
if (toolbox.fromMenu()) {
await toolbox.menu.showMenu('aws', defaultMenuSettings);
}
}
}