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
JavaScript
;
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