UNPKG

a2r

Version:
137 lines (136 loc) 4.78 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.addActiveProject = exports.getKey = exports.getKeys = exports.setKey = exports.setKeys = exports.init = exports.saveSettings = exports.getSettings = exports.settingsExist = void 0; const path_1 = __importDefault(require("path")); const fs_1 = require("@a2r/fs"); const getProjectPath_1 = __importDefault(require("./getProjectPath")); const settings_1 = require("../settings"); const settingsFileName = 'settings.json'; /** * Formats dev settings * @param settings Dev settings */ const formatSettings = (settings) => JSON.stringify(settings, null, 2); const getSettingsPath = async (projectPath) => { const mainProjectPath = projectPath || (await (0, getProjectPath_1.default)()); return path_1.default.resolve(mainProjectPath, settings_1.projectsInternalPath, settings_1.devServerPath, settingsFileName); }; /** * Checks if dev settings exist */ const settingsExist = async (projectPath) => { const settingsPath = await getSettingsPath(projectPath); return (0, fs_1.exists)(settingsPath); }; exports.settingsExist = settingsExist; /** * Gets dev settings * @param projectPath Main project path */ const getSettings = async (projectPath) => { const settingsPath = await getSettingsPath(projectPath); const fileContent = await (0, fs_1.readFile)(settingsPath, 'utf8'); return JSON.parse(fileContent); }; exports.getSettings = getSettings; /** * Writes given info as dev settings * @param info Info to save * @param projectPath Main project path */ const saveSettings = async (info, projectPath) => { const settingsPath = await getSettingsPath(projectPath); await (0, fs_1.writeFile)(settingsPath, formatSettings(info)); return info; }; exports.saveSettings = saveSettings; /** * Inits dev settings * @param serverPort Port that server will be using * @param projectPath Main project path */ const init = async (serverPort, serverDockerName, serverDockerImage, keys, projectPath) => { const check = await (0, exports.settingsExist)(projectPath); if (check) { const settings = await (0, exports.getSettings)(projectPath); settings.server = { port: serverPort, dockerName: serverDockerName, dockerImage: serverDockerImage, serverPath: settings_1.dockerServerPath, }; settings.keys = (keys || []).reduce((t, [key, value]) => (Object.assign(Object.assign({}, t), { [key]: value })), {}); settings.activeProjects = settings.activeProjects || []; return (0, exports.saveSettings)(settings, projectPath); } const settings = { server: { port: serverPort, dockerName: serverDockerName, dockerImage: serverDockerImage, serverPath: settings_1.dockerServerPath, }, keys: (keys || []).reduce((t, [key, value]) => (Object.assign(Object.assign({}, t), { [key]: value })), {}), activeProjects: [], }; return (0, exports.saveSettings)(settings, projectPath); }; exports.init = init; /** * Update several key-value pairs * @param keys Key-Value pairs */ const setKeys = async (keys) => { const settings = await (0, exports.getSettings)(); keys.forEach(([key, value]) => { settings.keys[key] = value; }); await (0, exports.saveSettings)(settings); }; exports.setKeys = setKeys; /** * Set key value * @param key Key name * @param value Key value */ const setKey = async (key, value) => { const settings = await (0, exports.getSettings)(); settings.keys[key] = value; await (0, exports.saveSettings)(settings); }; exports.setKey = setKey; /** * Gets keys dictionary */ const getKeys = async () => { const settings = await (0, exports.getSettings)(); return settings.keys; }; exports.getKeys = getKeys; /** * Gets key value * @param key Key name */ const getKey = async (key) => { const settings = await (0, exports.getSettings)(); return settings.keys[key]; }; exports.getKey = getKey; /** * Adds project to active project * @param project Project info */ const addActiveProject = async (project) => { const settings = await (0, exports.getSettings)(); const activeProjects = settings.activeProjects.slice(); const existing = activeProjects.findIndex(p => p.path === project.path); if (existing !== -1) { activeProjects.splice(existing, 1); } activeProjects.push(project); await (0, exports.saveSettings)(Object.assign(Object.assign({}, settings), { activeProjects })); }; exports.addActiveProject = addActiveProject;