An interactive command-line application for performing various useful data processing tasks, including file system navigation and manipulation of data.
This application is built with core Node.js. To get started, clone the repository and ensure Node.js is installed on your system.
To run the CLI tool type in terminal npm start.
upcd path_to_directorypath_to_directory— relative or absolute path to navigate to (required)
lscsv-to-json --input data.csv --output data.json--input— path to the input CSV file (required)--output— path to the output JSON file (required)
Convert a JSON file (array of objects) to a CSV file using Streams.
--input— path to the input JSON file (required)--output— path to the output CSV file (required)
Count lines, words, and characters in a file (similar to the wc command).
count --input file.txt--input— path to the input file (required)
Calculate a cryptographic hash of a file.
hash --input file.txt
hash --input file.txt --algorithm md5
hash --input file.txt --save--input— path to the input file (required)--algorithm— hash algorithm to use (optional, default:sha256). Supported values:sha256,md5,sha512--save— optional flag; if provided, save hash to a file next to the source file
Calculate file hash and compare it with a value stored in a hash file.
hash-compare --input file.txt --hash file.txt.sha256
hash-compare --input file.txt --hash file.txt.md5 --algorithm md5--input— path to the input file (required)--hash— path to file with expected hash (required)--algorithm— hash algorithm to use (optional, default:sha256). Supported values:sha256,md5,sha512
Encrypt a file using AES-256-GCM.
encrypt --input file.txt --output file.txt.enc --password mySecret--input— path to the input file (required)--output— path to the output encrypted file (required)--password— password used to derive the encryption key (required)
Decrypt a file produced by encrypt.
decrypt --input file.txt.enc --output file.txt --password mySecret--input— path to the input encrypted file (required)--output— path to the output file (required)--password— password used to derive the encryption key (required)
Compute statistics for a large log file using Worker Threads for parallel processing.
log-stats --input logs.txt --output stats.json--input— path to the input log file (required)--output— path to the output JSON file (required)
Log line format (space-separated):
<isoTimestamp> <level> <service> <statusCode> <responseTimeMs> <method> <path>
Example line:
2026-02-01T12:34:56.789Z INFO user-service 200 123 GET /api/users
Output format (JSON):
{
"total": 1000,
"levels": { "INFO": 700, "WARN": 200, "ERROR": 100 },
"status": { "2xx": 800, "3xx": 50, "4xx": 120, "5xx": 30 },
"topPaths": [
{ "path": "/api/users", "count": 120 },
{ "path": "/api/orders", "count": 95 }
],
"avgResponseTimeMs": 137.42
}