@devilsdev/rag-pipeline-utils
Version:
A modular toolkit for building RAG (Retrieval-Augmented Generation) pipelines in Node.js
66 lines (52 loc) • 1.74 kB
JavaScript
/**
* Version: 1.1.0
* Description: Closes GitHub issues marked as ✅ Done in the PROJECT_ROADMAP.md
* Author: Ali Kahwaji
*/
import fs from 'fs';
import { Octokit } from 'octokit';
const GITHUB_TOKEN = process.env.GITHUB_TOKEN;
const OWNER = 'DevilsDev';
const REPO = 'rag-pipeline-utils';
const ROADMAP_PATH = '.github/PROJECT_ROADMAP.md';
const octokit = new Octokit({ auth: GITHUB_TOKEN });
async function closeDoneIssues() {
const content = fs.readFileSync(ROADMAP_PATH, 'utf-8');
const lines = content.split('\n').filter(line => line.startsWith('|'));
if (lines.length < 3) {
console.log('⚠️ No roadmap rows found to evaluate.');
return;
}
const rows = lines.slice(2); // Skip header and separator
const { data: issues } = await octokit.rest.issues.listForRepo({
owner: OWNER,
repo: REPO,
state: 'open',
per_page: 100
});
for (const row of rows) {
const cols = row.split('|').map(col => col.trim());
const [, , , title, , status] = cols;
const safeStatus = status?.toLowerCase?.();
if (!safeStatus || !safeStatus.includes('✅')) continue;
const match = issues.find(issue => issue.title.trim() === title.trim());
if (!match) continue;
await octokit.rest.issues.createComment({
owner: OWNER,
repo: REPO,
issue_number: match.number,
body: '✅ Automatically closed from roadmap sync.'
});
await octokit.rest.issues.update({
owner: OWNER,
repo: REPO,
issue_number: match.number,
state: 'closed'
});
console.log(`🔒 Closed: #${match.number} "${title}"`);
}
}
closeDoneIssues().catch(error => {
console.error('❌ Error closing roadmap issues:', error);
process.exit(1);
});