UNPKG

mcp-ai-agent-guidelines

Version:

A comprehensive Model Context Protocol server providing advanced tools, resources, and prompts for implementing AI agent best practices

80 lines 2.96 kB
/** * C++ Parser (vcpkg.json) */ import { BaseParser } from "./base.js"; export class CppVcpkgParser extends BaseParser { parse(content) { const packages = []; const errors = []; let projectName; let projectVersion; try { const manifest = JSON.parse(content); projectName = manifest.name; projectVersion = manifest.version || manifest["version-string"]; if (manifest.dependencies && Array.isArray(manifest.dependencies)) { for (const dep of manifest.dependencies) { if (typeof dep === "string") { packages.push({ name: dep, version: "*", type: "dependencies", ecosystem: "cpp", }); } else if (typeof dep === "object" && dep.name) { packages.push({ name: dep.name, version: dep["version>="] || dep.version || "*", type: "dependencies", ecosystem: "cpp", extras: dep.features, }); } } } } catch (error) { errors.push(`Error parsing vcpkg.json: ${error instanceof Error ? error.message : "Unknown error"}`); } return { packages, projectName, projectVersion, ecosystem: "cpp", fileType: "vcpkg.json", errors: errors.length > 0 ? errors : undefined, }; } canParse(content) { const trimmed = content.trim(); if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return false; try { const parsed = JSON.parse(content); return (typeof parsed === "object" && (parsed.dependencies !== undefined || parsed.name !== undefined) && parsed.devDependencies === undefined); } catch { return false; } } getEcosystem() { return "cpp"; } getFileTypes() { return ["vcpkg.json"]; } analyzePackage(pkg, options, issues) { if (options.checkOutdated && (pkg.version === "*" || !pkg.version)) { this.addIssue(issues, pkg, "Unpinned Version", "moderate", "No version constraint specified", "Pin to a specific version for reproducible builds"); } } addEcosystemRecommendations(recommendations) { recommendations.push("Run 'vcpkg upgrade' to check for available updates"); recommendations.push("Use vcpkg manifest mode for reproducible builds"); recommendations.push("Consider using version constraints in vcpkg.json"); } } //# sourceMappingURL=cpp.js.map