UNPKG

minecraft-utils-shared

Version:

Shared utils for Minecraft Bedrock / Forge development related utilities.

142 lines (131 loc) 4.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _chalk = _interopRequireDefault(require("chalk")); var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _files = _interopRequireDefault(require("./files.cjs")); var _normalizer = _interopRequireDefault(require("./../helper/normalizer.cjs")); var _project_config = _interopRequireDefault(require("./../default/project_config.cjs")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @file Minecraft Utils Shared - Configuration * @license Apache-2.0 * @author Markus@Bordihn.de (Markus Bordihn) */ /** * @returns {string} */ const getConfigurationExtension = () => { switch (getConfigurationPath()) { case '.minecraft-bedrock-utils': return '.mbu'; case '.minecraft-forge-utils': return '.mfu'; default: return '.mus'; } }; /** * @returns {string} */ const getConfigurationPath = () => { if (process.env) { if ((process.env.npm_lifecycle_script || '').includes('minecraft-bedrock-utils') || (process.env.npm_package_name || '').includes('minecraft-bedrock-utils')) { return '.minecraft-bedrock-utils'; } else if ((process.env.npm_lifecycle_script || '').includes('minecraft-forge-utils') || (process.env.npm_package_name || '').includes('minecraft-forge-utils')) { return '.minecraft-forge-utils'; } } return '.minecraft-utils-shared'; }; // eslint-disable-next-line prefer-const let configPath = _path.default.join(process.cwd(), getConfigurationPath()); // eslint-disable-next-line prefer-const let configExtension = getConfigurationExtension(); // eslint-disable-next-line prefer-const let projectConfig = _path.default.join(configPath, `project${configExtension}`); /** * @param {string} file * @returns {Object} */ const loadConfig = file => { if (!_fs.default.existsSync(file)) { console.error(_chalk.default.red('Unable to load configuration file', file)); return {}; } if (!file.endsWith(configExtension)) { console.warn(_chalk.default.yellow(`File is not ending with ${configExtension} suffix, but will try to load it!`)); } const configurationFile = _fs.default.readFileSync(file); return JSON.parse(configurationFile); }; /** * @param {string} name * @returns {Object} */ const loadDefaultConfig = name => { return loadConfig(_path.default.join(configPath, _normalizer.default.normalizeFileName(name))); }; /** * @returns {Object} */ const loadProjectConfig = () => { if (!_fs.default.existsSync(projectConfig)) { if (!global.loadProjectConfigWarningShowed) { console.warn(_chalk.default.yellow('⚠️ Project file', projectConfig, 'does not exists, using automatic default values instead!')); global.loadProjectConfigWarningShowed = true; } return _project_config.default.config; } return loadConfig(projectConfig); }; /** * @param {string} file * @param {Object} options */ const saveConfig = (file, options = {}) => { // Make sure file has an valid or known extension. if (!file.endsWith(configExtension) && !file.endsWith('.mbu') && !file.endsWith('.mfu') && !file.endsWith('.mus')) { file = `${file}${configExtension}`; } if (_fs.default.existsSync(file)) { console.log('Overwrite configuration for', options.name, 'in file', file); _files.default.createBackupFile(file); } else { console.log('Storing configuration for', options.name, 'in file', file); } // Remove context and other options to avoid a endless loop. delete options.context; delete options.save_config; _fs.default.writeFileSync(file, JSON.stringify(options, null, 2)); }; /** * @param {string} name * @param {Object} options */ const saveDefaultConfig = (name, options = {}) => { _files.default.createFolderIfNotExists(configPath); saveConfig(_path.default.join(configPath, _normalizer.default.normalizeFileName(name)), options); }; /** * @param {Object} options */ const saveProjectConfig = (options = {}) => { _files.default.createFolderIfNotExists(configPath); saveConfig(projectConfig, options); }; var _default = { configExtension, configPath, loadConfig, loadDefaultConfig, loadProjectConfig, projectConfig, saveConfig, saveDefaultConfig, saveProjectConfig }; exports.default = _default;