UNPKG

poyka

Version:

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

64 lines 3.17 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WorkspaceSnippets = exports.CodeSnippet = void 0; const decova_dotnet_developer_1 = require("decova-dotnet-developer"); const PackMan_1 = require("./PackMan"); const decova_json_1 = require("decova-json"); const decova_environment_1 = require("decova-environment"); const path_1 = __importDefault(require("path")); const PoykaConstants_1 = require("./PoykaConstants"); class CodeSnippet { constructor() { this.prefix = ''; this.body = []; } } exports.CodeSnippet = CodeSnippet; class WorkspaceSnippets { static Load(path) { return decova_json_1.Json.Load(path); } static LoadOfCurrentWorkspace() { return this.Load(path_1.default.join(decova_environment_1.Process.Current.CurrentWorkingDirectory.FullName, PackMan_1.CommonDirName.vscode, PackMan_1.CommonFileName.decovaSnippets)); } static LoadOfPoyka() { return this.Load(new PoykaConstants_1.PoykaConstants().SnippetsFile.FullName); } static GetMissingInSecond(first, second) { const overriders = new decova_dotnet_developer_1.List(Object.getOwnPropertyNames(first)) .Where(p => (first[p]['overrider'] != null)); return new decova_dotnet_developer_1.List(Object.getOwnPropertyNames(first)) .Except(new decova_dotnet_developer_1.List(Object.getOwnPropertyNames(second))) .Union(overriders) .Distinct(); } static Sync() { const ofPoyka = this.LoadOfPoyka(); const ofWorkspace = this.LoadOfCurrentWorkspace(); const missingSnippetsInPoyka = this.GetMissingInSecond(ofWorkspace, ofPoyka); const missingSnippetsInWorkspace = this.GetMissingInSecond(ofPoyka, ofWorkspace); function updatePoyka() { missingSnippetsInPoyka.Foreach(p => ofPoyka[p] = ofWorkspace[p]); const targetPath = new PoykaConstants_1.PoykaConstants().SnippetsFile.FullName; decova_json_1.Json.TrySave(targetPath, ofPoyka, true); console.log(`The following snippets are synced to Poyka:`, missingSnippetsInPoyka.Items); } function updateCurrentWorkspace() { missingSnippetsInWorkspace.Foreach(p => ofWorkspace[p] = ofWorkspace[p]); const targetPath = path_1.default.join(decova_environment_1.Process.Current.CurrentWorkingDirectory.FullName, PackMan_1.CommonDirName.vscode, PackMan_1.CommonFileName.decovaSettings); decova_json_1.Json.TrySave(targetPath, ofWorkspace, true); console.log(`The following snippets are synced to current workspace:`, missingSnippetsInPoyka.Items); } if (missingSnippetsInPoyka.Any()) { updatePoyka(); } if (missingSnippetsInWorkspace.Any()) { updateCurrentWorkspace(); } } } exports.WorkspaceSnippets = WorkspaceSnippets; //# sourceMappingURL=WorkspaceSnippets.js.map