From aece38aa426dd7745e3f725b89c65cdb3d36c55c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arwid=20Thornstro=CC=88m?= Date: Fri, 2 Sep 2022 14:40:34 +0200 Subject: [PATCH] added log tails function --- src/commands/aws/aws.ts | 12 +++++ src/commands/aws/logs/logs.ts | 50 ++++++++++++++++++ .../deployment/testservers/logs/logs.ts | 52 ------------------- 3 files changed, 62 insertions(+), 52 deletions(-) create mode 100644 src/commands/aws/aws.ts create mode 100644 src/commands/aws/logs/logs.ts delete mode 100644 src/commands/deployment/testservers/logs/logs.ts diff --git a/src/commands/aws/aws.ts b/src/commands/aws/aws.ts new file mode 100644 index 0000000..f8ac6c4 --- /dev/null +++ b/src/commands/aws/aws.ts @@ -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); + } +}; diff --git a/src/commands/aws/logs/logs.ts b/src/commands/aws/logs/logs.ts new file mode 100644 index 0000000..64d5df4 --- /dev/null +++ b/src/commands/aws/logs/logs.ts @@ -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); + } + } +} diff --git a/src/commands/deployment/testservers/logs/logs.ts b/src/commands/deployment/testservers/logs/logs.ts deleted file mode 100644 index 42e3acf..0000000 --- a/src/commands/deployment/testservers/logs/logs.ts +++ /dev/null @@ -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); - } - } -}