UNPKG

decova-gotcha

Version:

It's my personal trial for automating daunting tasks

78 lines 3.73 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WorkspaceSnippets = exports.CodeSnippet = void 0; const decova_json_1 = require("decova-json"); const PoykaConstants_1 = require("../../__old/PoykaConstants"); const PathMan_1 = require("../PathMan"); const tsyringe_1 = require("tsyringe"); class CodeSnippet { constructor() { this.prefix = ''; this.body = []; } } exports.CodeSnippet = CodeSnippet; let WorkspaceSnippets = class WorkspaceSnippets { constructor(srv_PathMan) { this.srv_PathMan = srv_PathMan; } Load(path) { return decova_json_1.Json.Load(path); } LoadOfCurrentWorkspace() { return this.Load(this.srv_PathMan.CurrentWorkspace_DecovaSnippets.FullName); } LoadOfPoyka() { return this.Load(new PoykaConstants_1.PoykaConstants().SnippetsFile.FullName); } GetMissingInSecond(first, second) { const overriders = Object.getOwnPropertyNames(first) .xWhere(p => (first[p]['overrider'] != null)); return Object.getOwnPropertyNames(first) .xExcept(Object.getOwnPropertyNames(second)) .xUnion(overriders) .xDistinct(); } Sync() { const ofPoyka = this.LoadOfPoyka(); const ofWorkspace = this.LoadOfCurrentWorkspace(); const missingSnippetsInPoyka = this.GetMissingInSecond(ofWorkspace, ofPoyka); const missingSnippetsInWorkspace = this.GetMissingInSecond(ofPoyka, ofWorkspace); function updatePoyka() { missingSnippetsInPoyka.xForeach(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); } const updateCurrentWorkspace = () => { missingSnippetsInWorkspace.xForeach(p => ofWorkspace[p] = ofWorkspace[p]); const targetPath = this.srv_PathMan.CurrentWorkspace_DecovaSettings.FullName; decova_json_1.Json.TrySave(targetPath, ofWorkspace, true); console.log(`The following snippets are synced to current workspace:`, missingSnippetsInPoyka); }; if (missingSnippetsInPoyka.xAny()) { updatePoyka(); } if (missingSnippetsInWorkspace.xAny()) { updateCurrentWorkspace(); } } }; WorkspaceSnippets = __decorate([ __param(0, (0, tsyringe_1.inject)(PathMan_1.PathMan)), __metadata("design:paramtypes", [PathMan_1.PathMan]) ], WorkspaceSnippets); exports.WorkspaceSnippets = WorkspaceSnippets; //# sourceMappingURL=WorkspaceSnippets.js.map