decova-gotcha
Version:
It's my personal trial for automating daunting tasks
78 lines • 3.73 kB
JavaScript
;
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