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
JavaScript
/**
* 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