UNPKG

a2r

Version:
105 lines (104 loc) 3.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupSettings = exports.addProject = exports.saveSettings = exports.getSettings = exports.getPackageJson = exports.defaultServer = exports.defaultDevServer = exports.setFileName = void 0; /* eslint-disable @typescript-eslint/naming-convention */ const path_1 = __importDefault(require("path")); const fs_1 = require("@a2r/fs"); const telemetry_1 = require("@a2r/telemetry"); const colors_1 = require("./colors"); const getProjectPath_1 = __importDefault(require("./getProjectPath")); let settingsFileName = 'settings.json'; /** * Sets settings file name * @param fileName File name */ const setFileName = async (fileName) => { const mainProjectPath = await (0, getProjectPath_1.default)(); const settingsPath = path_1.default.resolve(mainProjectPath, '.a2r', fileName); if (await (0, fs_1.exists)(settingsPath)) { telemetry_1.out.info(`Using settings file: ${(0, colors_1.fileName)(fileName)}`); settingsFileName = fileName; } else { telemetry_1.out.info(`Settings file ${(0, colors_1.fileName)(fileName)} not found, using default ${(0, colors_1.fileName)(settingsFileName)}`); } }; exports.setFileName = setFileName; /** * Default dev server info */ exports.defaultDevServer = { name: 'server-dev', env: { PORT: 4000, }, }; /** * Default server info */ exports.defaultServer = { name: 'server', env: { PORT: 80, }, }; /** * Gets `package.json` content from main project path * @param projectPath Main project path */ const getPackageJson = async (projectPath) => { const mainProjectPath = projectPath || (await (0, getProjectPath_1.default)()); const packageJsonPath = path_1.default.resolve(mainProjectPath, 'package.json'); const packageJsonContent = await (0, fs_1.readFile)(packageJsonPath, 'utf8'); return JSON.parse(packageJsonContent); }; exports.getPackageJson = getPackageJson; /** * Gets project settings */ const getSettings = async () => { const mainProjectPath = await (0, getProjectPath_1.default)(); const settingsPath = path_1.default.resolve(mainProjectPath, '.a2r', settingsFileName); const fileContent = await (0, fs_1.readFile)(settingsPath, 'utf8'); return JSON.parse(fileContent); }; exports.getSettings = getSettings; /** * Writes given info as project settings * @param info Info to save * @param projectPath Main project path */ const saveSettings = async (info, projectPath) => { const mainProjectPath = projectPath || (await (0, getProjectPath_1.default)()); const settingsPath = path_1.default.resolve(mainProjectPath, '.a2r', settingsFileName); await (0, fs_1.writeFile)(settingsPath, JSON.stringify(info, null, 2)); return info; }; exports.saveSettings = saveSettings; /** * Adds component project to solution * @param info Project info */ const addProject = async (info) => { const settings = await (0, exports.getSettings)(); settings.projects.push(info); return (0, exports.saveSettings)(settings); }; exports.addProject = addProject; /** * Sets up initial project settings * @param projectPath Main project path * @param settings Initial settings */ const setupSettings = async (projectPath, settings) => { (0, colors_1.log)(`Initializing settings...`); const settingsPath = path_1.default.resolve(projectPath, '.a2r', settingsFileName); const containerPath = path_1.default.dirname(settingsPath); await (0, fs_1.ensureDir)(containerPath); await (0, exports.saveSettings)(settings, projectPath); }; exports.setupSettings = setupSettings; exports.default = exports.setupSettings;