UNPKG

ai-commit-report-generator-cli

Version:

An AI-powered CLI tool that generates weekly reports from your Git activity

50 lines (49 loc) 2.63 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateReportUseCase = generateReportUseCase; const json_store_factory_1 = require("../json-store.factory"); const date_fns_1 = require("date-fns"); const reportAIGenerator_1 = require("../reportAIGenerator"); const progress_service_1 = require("../services/progress.service"); const utils_1 = require("../utils"); function generateReportUseCase(commitsWithSummaries_1) { return __awaiter(this, arguments, void 0, function* (commitsWithSummaries, repoPath = ".") { const storeFactory = json_store_factory_1.JsonStoreFactory.getInstance(); const cacheStore = yield storeFactory.createOrGetStore((0, utils_1.slugify)(repoPath)); // generate report const groupedByDate = commitsWithSummaries.reduce((acc, { commit, statistics, summary }) => { const date = (0, date_fns_1.format)(new Date(commit.date), 'yyyy-MM-dd'); if (!acc[date]) { acc[date] = []; } acc[date].push({ commit, statistics, summary }); return acc; }, {}); const dates = Object.keys(groupedByDate); const progressBar = progress_service_1.ProgressService.createProgressBar('Generating daily reports'); progressBar.start(dates.length); const dailyReportAIGenerator = new reportAIGenerator_1.DailyReportAIGenerator(); for (const date of dates) { const commitsEntries = groupedByDate[date]; const reportKey = `reports:${date}`; const cachedReport = cacheStore.get(reportKey); if (cachedReport) { progressBar.increment(); continue; } const report = yield dailyReportAIGenerator.generateReport(commitsEntries); cacheStore.set(reportKey, report); progressBar.increment(); } progressBar.stop(); }); }