UNPKG

poyka

Version:

A framework for interactively creating, extending and maintaining web application as never easier before while doing it in elegant design patterns.

137 lines 6.43 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PackMan = exports.CommonFileName = exports.PackageManifest = void 0; const decova_filesystem_1 = require("decova-filesystem"); const decova_dotnet_developer_1 = require("decova-dotnet-developer"); const path_1 = __importDefault(require("path")); const WorkspaceAugmenter_1 = require("./WorkspaceAugmenter"); const decova_terminal_1 = require("decova-terminal"); class PackageManifest { constructor() { this.name = ''; this.version = ''; this.liscense = ''; this.main = ''; this.module = ''; this.description = ''; this.sourceMap = true; this.inlineSourceMap = false; this.outDir = ''; this.scripts = []; this.files = []; this.keywords = []; this.dependencies = new Object(); this.bin = new Object(); this.devDependencies = new Object(); } get Scripts() { return new decova_dotnet_developer_1.List(this.scripts); } get Files() { return new decova_dotnet_developer_1.List(this.files); } get Keywords() { return new decova_dotnet_developer_1.List(this.keywords); } get Dependencies() { return decova_dotnet_developer_1.Dictionary.FromObjectProps(this.dependencies); } get Bin() { return decova_dotnet_developer_1.Dictionary.FromObjectProps(this.bin); } get DevDependencies() { return decova_dotnet_developer_1.Dictionary.FromObjectProps(this.devDependencies); } SaveAs(filePath) { decova_dotnet_developer_1.Json.TrySave(filePath, this, true); } } exports.PackageManifest = PackageManifest; class DecovaSettings { constructor() { this.nodeProjectsContainers = []; } } var CommonFileName; (function (CommonFileName) { CommonFileName["decovaSettings"] = "decova-settings.json"; CommonFileName["decovaSnippets"] = "decova-snippets.json"; CommonFileName["packgeJson"] = "package.json"; })(CommonFileName = exports.CommonFileName || (exports.CommonFileName = {})); class PackMan { constructor(PackageDir) { this.PackageDir = PackageDir; this._filePath = path_1.default.join(PackageDir, `package.json`); if (new decova_filesystem_1.FileInfo(this._filePath).Exists() === false) throw new decova_dotnet_developer_1.Exception(`Package file not found @ [${this._filePath}]`); try { this._manifest = decova_dotnet_developer_1.Json.Load(this._filePath); } catch (error) { throw new decova_dotnet_developer_1.Exception(`Couldn't load configuration file`, error); } } IncrementVersionPatch() { return __awaiter(this, void 0, void 0, function* () { try { const version = new decova_dotnet_developer_1.SemVersion(this._manifest.version); version.Patch++; this._manifest.version = version.Text; const packageFilePath = path_1.default.join(this.PackageDir, 'package.json'); decova_dotnet_developer_1.Json.TrySave(packageFilePath, this._manifest, true); return version.Text; } catch (err) { console.log(err); throw err; } }); } UpdateLeastVersionOnDependents() { function readPackageJsonOfAllProjects() { function readNodeProjectsContainers() { const workSpace = decova_dotnet_developer_1.Process.CurrentWorkingDirectory.FullName; const decovaSettingsFile = path_1.default.join(workSpace, WorkspaceAugmenter_1.FILE_NAME_DecovaSettings); let decovaSettings = decova_dotnet_developer_1.Json.Load(decovaSettingsFile); return new decova_dotnet_developer_1.List(decovaSettings.nodeProjectsContainers); } const output = new decova_dotnet_developer_1.List(); for (let container of readNodeProjectsContainers().Items) { new decova_filesystem_1.DirectoryInfo(container).GetDirectories().Foreach(workSpace => { const dependentPackageJsonManifestPath = path_1.default.join(workSpace.FullName, CommonFileName.packgeJson); output.Add(new decova_filesystem_1.FileInfo(dependentPackageJsonManifestPath)); }); } return output; } const updateVersion = (file) => { let potentialDpendentConfig = decova_dotnet_developer_1.Json.Load(file.FullName); if (potentialDpendentConfig.Dependencies.Contains(this._manifest.name)) { potentialDpendentConfig.Dependencies.Set(this._manifest.name, `^${this._manifest.version}`); potentialDpendentConfig.SaveAs(file.FullName); decova_terminal_1.CurrentTerminal.DisplayInfo(`${this._manifest.name}:${this._manifest.version} was updated as the least version for: [${potentialDpendentConfig.name}]`); } }; const allDependentManifests = readPackageJsonOfAllProjects(); if (allDependentManifests.Count == 0) { decova_terminal_1.CurrentTerminal.DisplayInfo(`No dependents found for ${this._manifest.name}`); } else { allDependentManifests.Foreach(f => updateVersion(f)); } } } exports.PackMan = PackMan; //# sourceMappingURL=PackageMan.js.map