UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

65 lines (64 loc) 2.32 kB
import { newlineRegex, regEx } from "../../../util/regex.js"; import { coerceArray } from "../../../util/array.js"; //#region lib/modules/manager/puppet/puppetfile-parser.ts const forgeRegex = regEx(/^forge\s+['"]([^'"]+)['"]/); const commentRegex = regEx(/#.*$/); /** * For us a Puppetfile is build up of forges that have Modules. * * Modules are the updatable parts. * */ var Puppetfile = class { forgeModules = /* @__PURE__ */ new Map(); add(currentForge, module) { if (Object.keys(module).length === 0) return; if (!this.forgeModules.has(currentForge)) this.forgeModules.set(currentForge, []); this.forgeModules.get(currentForge)?.push(module); } getForges() { return Array.from(this.forgeModules.keys()); } getModulesOfForge(forgeUrl) { return coerceArray(this.forgeModules.get(forgeUrl ?? null)); } }; function parsePuppetfile(content) { const puppetfile = new Puppetfile(); let currentForge = null; let currentPuppetfileModule = {}; for (const rawLine of content.split(newlineRegex)) { const line = rawLine.replace(commentRegex, ""); const forgeResult = forgeRegex.exec(line); if (forgeResult) { puppetfile.add(currentForge, currentPuppetfileModule); currentPuppetfileModule = {}; currentForge = forgeResult[1]; continue; } if (line.startsWith("mod")) { puppetfile.add(currentForge, currentPuppetfileModule); currentPuppetfileModule = {}; } const moduleValueRegex = regEx(/(?:\s*:(\w+)\s+=>\s+)?['"]([^'"]+)['"]/g); let moduleValue; while ((moduleValue = moduleValueRegex.exec(line)) !== null) { const key = moduleValue[1]; const value = moduleValue[2]; if (key) { currentPuppetfileModule.tags = currentPuppetfileModule.tags ?? /* @__PURE__ */ new Map(); currentPuppetfileModule.tags.set(key, value); } else fillPuppetfileModule(currentPuppetfileModule, value); } } puppetfile.add(currentForge, currentPuppetfileModule); return puppetfile; } function fillPuppetfileModule(currentPuppetfileModule, value) { if (currentPuppetfileModule.name === void 0) currentPuppetfileModule.name = value; else if (currentPuppetfileModule.version === void 0) currentPuppetfileModule.version = value; else currentPuppetfileModule.skipReason = "invalid-config"; } //#endregion export { parsePuppetfile }; //# sourceMappingURL=puppetfile-parser.js.map