import { classifyPath, type IgnoreIndex } from './classify.ts' import type { BucketDelta, FileKind } from './types.ts' export function accumulateBuckets( files: Array<{ filename: string additions?: number deletions?: number patch?: string }>, ignore: IgnoreIndex, ) { const buckets = new Map() let skippedFiles = 0 let countedFiles = 0 const generatedToRemember: Array<{ path: string; reason: string }> = [] for (const file of files) { const classification = classifyPath(file.filename, { patch: file.patch, ignore, }) if (!classification.countable) { skippedFiles += 1 if ( classification.reason === 'generated-content-marker' || classification.reason.startsWith('generated') ) { generatedToRemember.push({ path: file.filename, reason: classification.reason, }) } continue } countedFiles += 1 const key = `${classification.language}\t${classification.kind}` const current = buckets.get(key) ?? { language: classification.language, kind: classification.kind as FileKind, additions: 0, deletions: 0, } current.additions += file.additions ?? 0 current.deletions += file.deletions ?? 0 buckets.set(key, current) } return { buckets: [...buckets.values()], skippedFiles, countedFiles, generatedToRemember, } }