UNPKG

dependency-context

Version:

MCP server for providing dependency documentation context to AI assistants

93 lines 4.21 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.downloadRawDependencyDocs = downloadRawDependencyDocs; const parsers_1 = require("../parsers"); const repositories_1 = require("../repositories"); const documents_1 = require("../documents"); const config_1 = require("../config"); const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); /** * Downloads raw dependency documentation to a local folder without vectorization */ async function downloadRawDependencyDocs(projectPath) { try { // Validate project path if (!projectPath || !fs_extra_1.default.existsSync(projectPath)) { console.error(`Invalid project path: ${projectPath}`); process.exit(1); } console.log(`Starting dependency documentation download for project at ${projectPath}`); // Get configuration (includes project-specific .env) const config = (0, config_1.getConfig)(projectPath); // Parse dependencies from project files const dependencies = await (0, parsers_1.parseDependencies)(projectPath); if (dependencies.length === 0) { console.error("No dependencies found in project"); process.exit(1); } console.log(`Found ${dependencies.length} dependencies`); // Create main docs directory const docsDir = path_1.default.join(projectPath, "dependency-context"); // Only remove if the directory already exists (no need for warning for new download) if (await fs_extra_1.default.pathExists(docsDir)) { console.log(`Found existing dependency-context directory, files will be overwritten`); } await fs_extra_1.default.ensureDir(docsDir); // Process each dependency let successCount = 0; let errorCount = 0; const errors = []; for (const dep of dependencies) { try { console.log(`Processing dependency: ${dep.name}@${dep.version}`); // Find repository const repo = await (0, repositories_1.findGitHubRepository)(dep, config); if (!repo) { console.error(`Could not find GitHub repository for ${dep.name}@${dep.version}`); errorCount++; continue; } // Download documentation const depDocsDir = await (0, documents_1.downloadDependencyDocs)(projectPath, dep, repo, config); successCount++; console.log(`Successfully downloaded documentation for ${dep.name} to ${depDocsDir}`); } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); console.error(`Error processing ${dep.name}: ${errorMessage}`); errorCount++; } } console.log("\nSummary:"); console.log(`- Processed ${dependencies.length} dependencies`); console.log(`- Successfully downloaded: ${successCount}`); console.log(`- Errors: ${errorCount}`); if (successCount > 0) { console.log(`\nDocumentation has been downloaded to: ${docsDir}`); console.log("You can now browse the raw markdown files directly in this folder."); } if (errorCount > 0) { process.exit(1); } } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); console.error("Failed to download dependency documentation:", errorMessage); process.exit(1); } } // Direct execution (called from CLI script) if (require.main === module) { const args = process.argv.slice(2); const projectPath = args[0] ? path_1.default.resolve(args[0]) : process.cwd(); downloadRawDependencyDocs(projectPath) .catch(error => { console.error("Error:", error.message); process.exit(1); }); } //# sourceMappingURL=download.js.map