Merge pull request #4 from Photowall/1-cloudwatch-logs-command

added log tails function
This commit is contained in:
Arwid Thornström
2022-09-02 14:40:59 +02:00
committed by GitHub
3 changed files with 62 additions and 52 deletions
+12
View File
@@ -0,0 +1,12 @@
import { GluegunMenuToolbox } from '@lenne.tech/gluegun-menu';
import { defaultMenuSettings } from '../../globals';
module.exports = {
name: 'aws',
alias: ['a'],
description: 'Aws (a)',
hidden: false,
run: async (toolbox: GluegunMenuToolbox) => {
await toolbox.menu.showMenu('aws', defaultMenuSettings);
}
};
+50
View File
@@ -0,0 +1,50 @@
import { GluegunMenuToolbox } from '@lenne.tech/gluegun-menu'
import chalk = require('chalk');
import { confirmMessage, defaultMenuSettings } from '../../../globals';
const { AutoComplete } = require('enquirer');
const { spawn } = require('child_process');
module.exports = {
name: 'logs',
alias: ['l'],
description: 'Tail a log in cloudwatch (l)',
hidden: false,
run: async (toolbox: GluegunMenuToolbox) => {
const { system, strings } = toolbox
const groups = JSON.parse(strings.trim(await system.run(`aws logs describe-log-groups`)));
const options = groups.logGroups.map(item => {
return item.logGroupName;
});
const prompt = new AutoComplete({
name: 'logGroups',
message: 'Choose a logGroup',
limit: 30,
initial: options.length - 1,
choices: options
});
const logGroup = await prompt.run();
if (await confirmMessage(`Tail logs from ${chalk.yellow(logGroup)}?`)) {
const child = spawn('aws', ['logs', 'tail', `${logGroup}`, '--follow', '--format', 'short']);
child.stdout.setEncoding('utf8');
child.stdout.on('data', function(data) {
//Here is where the output goes
console.log(data);
});
child.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
child.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
}
if (toolbox.fromMenu()) {
await toolbox.menu.showMenu('aws', defaultMenuSettings);
}
}
}
@@ -1,52 +0,0 @@
import { GluegunMenuToolbox } from '@lenne.tech/gluegun-menu'
import chalk = require('chalk');
import { confirmMessage, defaultMenuSettings } from '../../../../globals';
const { AutoComplete } = require('enquirer');
const { spawn } = require('child_process');
module.exports = {
name: 'logs',
alias: ['l'],
description: 'Tail a log in cloudwatch (l)',
hidden: false,
run: async (toolbox: GluegunMenuToolbox) => {
const { system, strings } = toolbox
// aws logs tail /aws/codebuild/photowall-test-arwid-1 --follow
// aws logs describe-log-groups --log-group-name-prefix codepipeline
// const groups = JSON.parse(strings.trim(await system.run(`aws logs describe-log-groups`)));
// const options = groups.logGroups.map(item => {
// return item.logGroupName;
// });
// const prompt = new AutoComplete({
// name: 'logGroups',
// message: 'Choose a logGroup',
// limit: 30,
// initial: options.length - 1,
// choices: options
// });
// const logGroup = await prompt.run();
const logGroup = 'top';
if (await confirmMessage(`Tail logs from ${chalk.yellow(logGroup)}?`)) {
// system.run(`aws logs tail ${logGroup} --follow`);
// const child = spawn(`aws logs tail ${logGroup} --follow`);
const child = spawn(`top`);
child.stdout.setEncoding('utf8');
child.stdout.on('data', function(data) {
//Here is where the output goes
console.clear();
console.log(data);
});
}
if (toolbox.fromMenu()) {
await toolbox.menu.showMenu('deployment testservers', defaultMenuSettings);
}
}
}