a2r
Version:
A2R Framework
105 lines (104 loc) • 3.83 kB
JavaScript
;
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;