diff --git a/package.json b/package.json index 6eac7784..c577de37 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,8 @@ "name": "dbx-js-tools", "private": true, "workspaces": [ - "packages/bson-bench" + "packages/bson-bench", + "packages/evergreen-timestamp-utils" ], "devDependencies": { "@tsconfig/node16": "^16.1.4", @@ -28,4 +29,4 @@ "check:eslint": "ESLINT_USE_FLAT_CONFIG=false eslint -v && ESLINT_USE_FLAT_CONFIG=false eslint --max-warnings=0 --ext '.js,.ts,.mts' packages/**/src packages/**/test", "fix:eslint": "npm run check:eslint -- --fix" } -} +} \ No newline at end of file diff --git a/packages/evergreen-timestamp-utils/README.md b/packages/evergreen-timestamp-utils/README.md new file mode 100644 index 00000000..35df4bfe --- /dev/null +++ b/packages/evergreen-timestamp-utils/README.md @@ -0,0 +1,11 @@ +# evergreen-timestamp-utils + +A simple utility for stripping timestamps from evergreen logs. + +## usage + +(macos) + +```bash +pbpaste | node index.mjs | pbcopy +``` \ No newline at end of file diff --git a/packages/evergreen-timestamp-utils/index.mjs b/packages/evergreen-timestamp-utils/index.mjs new file mode 100755 index 00000000..39dddb2e --- /dev/null +++ b/packages/evergreen-timestamp-utils/index.mjs @@ -0,0 +1,45 @@ +#!/usr/bin/env node + +import { pipeline } from 'stream/promises'; + +async function* lines(generator) { + let data = ''; + + for await (const chunk of generator) { + data += chunk; + } + + yield* data.split('\n'); +} + +async function* removeEmptyLines(generator) { + for await (const chunk of generator) { + if (chunk.length) yield chunk; + } +} + +async function* removeTimestamp(generator) { + for await (const line of generator) { + const timestamp = /\[.*\](?.*)/; + const { + groups: { rest } + } = line.match(timestamp) ?? { groups: { rest: line } }; + yield rest; + } +} + +async function* addNewlines(generator) { + for await (const item of generator) { + yield item; + yield '\n'; + } +} + +await pipeline( + process.stdin, + lines, + removeEmptyLines, + removeTimestamp, + addNewlines, + process.stdout +); diff --git a/packages/evergreen-timestamp-utils/package.json b/packages/evergreen-timestamp-utils/package.json new file mode 100644 index 00000000..9c028b8d --- /dev/null +++ b/packages/evergreen-timestamp-utils/package.json @@ -0,0 +1,15 @@ +{ + "name": "evergreen-timestamp-utils", + "version": "0.0.1", + "description": "utility to strip timestamp from evergreen logs", + "private": true, + "main": "./index.mjs", + "scripts": {}, + "engines": { + "node": ">=16.20.1", + "npm": ">=9.0.0" + }, + "keywords": [], + "author": "The MongoDB NodeJS Team ", + "license": "Apache-2.0" +} \ No newline at end of file