UNPKG

poyka

Version:

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

155 lines 7.02 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.CommonDirName = exports.CommonFileName = exports.PackageManifest = void 0; const decova_filesystem_1 = require("decova-filesystem"); const decova_dotnet_developer_1 = require("decova-dotnet-developer"); const decova_json_1 = require("decova-json"); const decova_environment_1 = require("decova-environment"); const path_1 = __importDefault(require("path")); const decova_terminal_1 = require("decova-terminal"); class PackageManifest { constructor(FilePath) { this.FilePath = FilePath; 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(); decova_json_1.Json.Populate(this, this.FilePath); } 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) { const objToSave = Object.assign({}, this); delete objToSave.FilePath; decova_json_1.Json.TrySave(filePath, objToSave, true); } Save() { this.SaveAs(this.FilePath); } } exports.PackageManifest = PackageManifest; class DecovaSettings { constructor() { this.nodeProjectsContainers = []; } } var CommonFileName; (function (CommonFileName) { CommonFileName["decovaSettings"] = "decova-settings.json"; CommonFileName["decovaSnippets"] = "decova.code-snippets"; CommonFileName["launch"] = "launch.json"; CommonFileName["tasksJson"] = "tasks.json"; CommonFileName["settings"] = "settings.json"; CommonFileName["packgeJson"] = "package.json"; })(CommonFileName = exports.CommonFileName || (exports.CommonFileName = {})); var CommonDirName; (function (CommonDirName) { CommonDirName["vscode"] = ".vscode"; })(CommonDirName = exports.CommonDirName || (exports.CommonDirName = {})); 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_json_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_json_1.Json.TrySave(packageFilePath, this._manifest, true, true); return version.Text; } catch (err) { console.log(err); throw err; } }); } GetProjectsContainerDirs() { const workSpace = decova_environment_1.Process.Current.CurrentWorkingDirectory.FullName; const decovaSettingsFile = path_1.default.join(workSpace, CommonDirName.vscode, CommonFileName.decovaSettings); let decovaSettings = decova_json_1.Json.Load(decovaSettingsFile); return new decova_dotnet_developer_1.List(decovaSettings.nodeProjectsContainers).Select(path => new decova_filesystem_1.DirectoryInfo(path)); } GetAllProjectManifests() { function isProjectDir(dir) { return dir.GetFiles().Any(f => f.Name.toLowerCase() == 'package.json'); } function getManifestFile(projDir) { return new decova_filesystem_1.FileInfo(path_1.default.join(projDir.FullName, CommonFileName.packgeJson)); } const allProjectDirs = this.GetProjectsContainerDirs() .SelectMany(d => d.GetDirectories()) .Where(d => isProjectDir(d)); const allPackgeJsonFiles = allProjectDirs.Select(d => getManifestFile(d)); return allPackgeJsonFiles.Select(f => new PackageManifest(f.FullName)); } GetDependentManifests() { return this.GetAllProjectManifests().Where(m => m.Dependencies.Contains(this._manifest.name)); } UpdateLeastVersionOnDependents() { const allDependencies = this.GetDependentManifests(); if (allDependencies.Count == 0) { decova_terminal_1.CurrentTerminal.DisplayInfo(`No dependent workspaces detected!`); } else { const updateDependencyVersion = (dependentManifest) => { dependentManifest.dependencies[this._manifest.name] = `^${this._manifest.version}`; dependentManifest.Save(); decova_terminal_1.CurrentTerminal.DoneMessage(`[${dependentManifest.name}] was configured as [${this._manifest.name}:^${this._manifest.version}] dependent.`); }; allDependencies.Foreach(dp => updateDependencyVersion(dp)); } } } exports.PackMan = PackMan; //# sourceMappingURL=PackMan.js.map