UNPKG

@wocker/ws

Version:

Docker workspace for web projects

119 lines (118 loc) 4.57 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.PresetRepository = void 0; const core_1 = require("@wocker/core"); const env_1 = require("../../../env"); let PresetRepository = class PresetRepository { constructor(appConfigService, logService, driver) { this.appConfigService = appConfigService; this.logService = logService; this.driver = driver; } load(data) { const _this = this, fs = new core_1.FileSystem(data.path, this.driver); const config = { ...fs.readJSON("config.json"), name: data.name, source: data.source, path: data.path }; return new class extends core_1.Preset { constructor(data) { super(data); } save() { switch (this.source) { case core_1.PRESET_SOURCE_EXTERNAL: fs.writeJSON("config.json", this.toObject()); break; } _this.appConfigService.registerPreset(this.name, this.source, data.path); } delete() { switch (this.source) { case core_1.PRESET_SOURCE_GITHUB: if (fs.exists()) { fs.rm("", { recursive: true }); } break; } _this.appConfigService.unregisterPreset(this.name); } }(config); } configs() { const fs = new core_1.FileSystem(env_1.PRESETS_DIR, this.driver), dirs = fs.exists("") ? fs.readdir("") : []; const { presets = [] } = this.appConfigService.config; return [ ...dirs.map((name) => { return { name, source: core_1.PRESET_SOURCE_INTERNAL, path: fs.path(name) }; }), ...presets.map((item) => { if (item.source === core_1.PRESET_SOURCE_GITHUB) { return { ...item, path: this.appConfigService.fs.path("presets", item.name) }; } return item; }) ]; } search(options = {}) { const { name, source, path } = options; const presets = [], configs = this.configs(); for (const config of configs) { if (name && name !== config.name) { continue; } if (source && source !== config.source) { continue; } if (path && path !== config.path) { continue; } try { const preset = this.load(config); presets.push(preset); } catch (err) { this.logService.error(err.message, { name: config.name, source: config.source, path: config.path }); } } return presets; } searchOne(options = {}) { const [preset] = this.search(options); return preset || null; } }; exports.PresetRepository = PresetRepository; exports.PresetRepository = PresetRepository = __decorate([ (0, core_1.Injectable)(), __param(2, (0, core_1.Inject)(core_1.FILE_SYSTEM_DRIVER_KEY)), __metadata("design:paramtypes", [core_1.AppConfigService, core_1.LogService, Object]) ], PresetRepository);