UNPKG

mcp-ai-agent-guidelines

Version:

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

75 lines 2.79 kB
/** * Lua Parser (rockspec) */ import { BaseParser } from "./base.js"; export class LuaRockspecParser extends BaseParser { parse(content) { const packages = []; const errors = []; let projectName; let projectVersion; try { const packageMatch = content.match(/package\s*=\s*["']([^"']+)["']/); const versionMatch = content.match(/version\s*=\s*["']([^"']+)["']/); if (packageMatch) projectName = packageMatch[1]; if (versionMatch) projectVersion = versionMatch[1]; const depsMatch = content.match(/dependencies\s*=\s*\{([\s\S]*?)\}/); if (depsMatch) { const depMatches = depsMatch[1].matchAll(/["']([^"']+)["']/g); for (const match of depMatches) { const parsed = this.parseLuaDependency(match[1]); if (parsed) packages.push(parsed); } } } catch (error) { errors.push(`Error parsing rockspec: ${error instanceof Error ? error.message : "Unknown error"}`); } return { packages, projectName, projectVersion, ecosystem: "lua", fileType: "rockspec", errors: errors.length > 0 ? errors : undefined, }; } parseLuaDependency(spec) { const match = spec.match(/^([a-zA-Z0-9_-]+)\s*(.*)$/); if (!match) return null; return { name: match[1], version: match[2]?.trim() || "*", type: "dependencies", ecosystem: "lua", }; } canParse(content) { if (content.includes("rockspec_format")) return true; const hasLuaPackage = /package\s*=\s*["'][^"']+["']/.test(content); const hasLuaVersion = /version\s*=\s*["'][\d.]+-\d+["']/.test(content); return hasLuaPackage && (hasLuaVersion || content.includes("source = {")); } getEcosystem() { return "lua"; } getFileTypes() { return ["rockspec"]; } analyzePackage(pkg, options, issues) { if (options.checkOutdated && (pkg.version === "*" || !pkg.version)) { this.addIssue(issues, pkg, "Unpinned Version", "moderate", "No version constraint specified", "Use specific version constraints for production"); } } addEcosystemRecommendations(recommendations) { recommendations.push("Run 'luarocks list --outdated' to check for updates"); recommendations.push("Use specific version constraints for production"); recommendations.push("Consider using luarocks-admin for private rocks"); } } //# sourceMappingURL=lua.js.map