dependency-context
Version:
MCP server for providing dependency documentation context to AI assistants
93 lines • 4.21 kB
JavaScript
;
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