UNPKG

semantic-release-dotnet

Version:

A semantic-release plugin for versioning .NET core projects.

114 lines 4.67 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createFile = exports.updateFile = void 0; const fs = require("fs"); const convert = require("xml-js"); function updateFile(options, logger, path, version) { var _a, _b, _c; return __awaiter(this, void 0, void 0, function* () { // Load the file into memory. logger.debug("updating file", path); const xml = fs.readFileSync(path).toString(); const js = convert.xml2js(xml); if (!js.elements) { throw new Error("Cannot find top-level elements in " + path); } // Get the root-level object. const root = js.elements.filter((x) => x.type === "element" && x.name === "Project")[0]; if (!root) { throw new Error("Cannot find top-level <Project> element in " + path); } root.elements = (_a = root.elements) !== null && _a !== void 0 ? _a : []; // Look through all the property groups and see if we already have a // version. const groups = (_b = root.elements.filter((x) => x.type === "element" && x.name == "PropertyGroup")) !== null && _b !== void 0 ? _b : []; let foundVersion = false; let firstGroup = undefined; for (const group of groups) { if (!group.elements) { continue; } firstGroup = firstGroup !== null && firstGroup !== void 0 ? firstGroup : group; const element = group.elements.filter((x) => x.type === "element" && x.name === "Version")[0]; if (!element) { continue; } element.elements = [{ type: "text", text: version }]; foundVersion = true; break; } // If we didn't find the file if (!foundVersion) { if (!firstGroup) { firstGroup = { type: "element", name: "PropertyGroup", }; root.elements.push(firstGroup); } firstGroup.elements = (_c = firstGroup.elements) !== null && _c !== void 0 ? _c : []; firstGroup.elements.push({ type: "element", name: "Version", elements: [ { type: "text", text: version, }, ], }); } // Write it all out. writeJs(options, path, js); }); } exports.updateFile = updateFile; function createFile(options, logger, path, version) { return __awaiter(this, void 0, void 0, function* () { logger.debug("creating file", path); const js = { elements: [ { type: "element", name: "Project", elements: [ { type: "element", name: "PropertyGroup", elements: [ { type: "element", name: "Version", elements: [ { type: "text", text: version, }, ], }, ], }, ], }, ], }; writeJs(options, path, js); }); } exports.createFile = createFile; function writeJs(options, path, js) { return __awaiter(this, void 0, void 0, function* () { const xml = convert.js2xml(js, { spaces: options.indent }) + "\n"; fs.writeFileSync(path, Buffer.from(xml, "utf-8")); }); } //# sourceMappingURL=files.js.map