minecraft-utils-shared
Version:
Shared utils for Minecraft Bedrock / Forge development related utilities.
142 lines (131 loc) • 4.43 kB
JavaScript
;
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;