UNPKG

rxcc

Version:

A tool to pack repository contents to single file for AI consumption

54 lines 2.9 kB
import path from "node:path"; import pc from "picocolors"; import { logger } from "../shared/logger.js"; export const printSummary = (totalFiles, totalTokens, totalLines, outputPath, suspiciousFilesResults, config) => { let securityCheckMessage = ""; if (config.security.enableSecurityCheck) { if (suspiciousFilesResults.length > 0) { securityCheckMessage = pc.yellow(`${suspiciousFilesResults.length.toLocaleString()} suspicious file(s) detected and excluded`); } else { } } else { securityCheckMessage = pc.dim("security check disabled"); } logger.log(`${pc.white("files")} ${pc.white(totalFiles.toLocaleString())}`); logger.log(`${pc.white("lines:")} ${pc.white(totalLines.toLocaleString())}`); logger.log(`${pc.white("tokens:")} ${pc.white(totalTokens.toLocaleString())}`); logger.log(""); logger.log(`${pc.white("output:")} ${pc.white(outputPath)}`); if (securityCheckMessage) logger.log(`${pc.white("security:")} ${pc.white(securityCheckMessage)}`); }; export const printSecurityCheck = (rootDir, suspiciousFilesResults, config) => { if (!config.security.enableSecurityCheck) { return; } if (suspiciousFilesResults.length === 0) { } else { logger.log(pc.yellow(`${suspiciousFilesResults.length} suspicious file(s) detected and excluded from the output:`)); suspiciousFilesResults.forEach((suspiciousFilesResult, index) => { const relativeFilePath = path.relative(rootDir, suspiciousFilesResult.filePath); logger.log(`${pc.white(`${index + 1}.`)} ${pc.white(relativeFilePath)}`); logger.log(pc.dim(` - ${suspiciousFilesResult.messages.join("\n - ")}`)); }); logger.log(pc.yellow("\nThese files have been excluded from the output for security reasons.")); logger.log(pc.yellow("Please review these files for potential sensitive information.")); } }; export const printTopFiles = (fileLineCounts, fileTokenCounts, topFilesLength) => { const topFilesLengthStrLen = topFilesLength.toString().length; logger.log(pc.white(`top ${topFilesLength} files`)); logger.log(pc.dim(`─────────────────────────────────────────────────${"─".repeat(topFilesLengthStrLen)}`)); const topFiles = Object.entries(fileLineCounts) .sort((a, b) => b[1] - a[1]) .slice(0, topFilesLength); topFiles.forEach(([filePath, lineCount], index) => { const tokenCount = fileTokenCounts[filePath]; const indexString = `${index + 1}.`.padEnd(3, " "); logger.log(`${pc.white(`${indexString}`)} ${pc.white(filePath)} ${pc.dim(`(${lineCount.toLocaleString()} lines, ${tokenCount.toLocaleString()} tokens)`)}`); }); }; //# sourceMappingURL=cliPrint.js.map