UNPKG

minecraft-utils-shared

Version:

Shared utils for Minecraft Bedrock / Forge development related utilities.

191 lines (177 loc) 5.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _fs = _interopRequireDefault(require("fs")); var _glob = _interopRequireDefault(require("glob")); var _path = _interopRequireDefault(require("path")); var _java_file = _interopRequireDefault(require("../formats/java_file.cjs")); var _json_file = _interopRequireDefault(require("../formats/json_file.cjs")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @file Minecraft Utils Shared - File Finder * @license Apache-2.0 * @author Markus@Bordihn.de (Markus Bordihn) */ const workingPath = process.cwd(); const javaSrcPath = _path.default.join(workingPath, 'src', 'main', 'java'); /** * @param {string} search_path * @returns {Array<string>} */ const getManifestsInSearchPath = (search_path = process.cwd()) => { const searchPath = _path.default.resolve(search_path); const result = []; if (!_fs.default.existsSync(searchPath)) { console.error('Unable to find search path:', searchPath); return result; } // If we found a manifest.json in root we will use this. if (_fs.default.existsSync(_path.default.join(searchPath, 'manifest.json'))) { return [_path.default.join(searchPath, 'manifest.json')]; } // Search for alternative manifest files. _glob.default.sync('**/manifest.json', { cwd: searchPath, nodir: true }).map(file => { result.push(_path.default.resolve(search_path, file)); }); if (result.length > 0) { return result; } }; /** * @returns {string} */ const getManifestsInWorkingPath = () => { return getManifestsInSearchPath(workingPath); }; /** * @param {string} search_path * @param {Array<string>} manifests * @returns {string} */ const getBehaviorPackInSearchPath = (search_path, manifests) => { const relevantManifests = manifests || getManifestsInSearchPath(search_path); for (const file of relevantManifests || []) { const manifest = _json_file.default.read(file); if (manifest && manifest.header && manifest.modules) { for (const module of manifest.modules) { if (module.type == 'data' || module.type == 'client_data') { return _path.default.resolve(_path.default.dirname(file)); } } } } return ''; }; /** * @param {Array<string>} manifests * @returns {string} */ const getBehaviorPackInWorkingPath = manifests => { return getBehaviorPackInSearchPath(workingPath, manifests); }; /** * @param {string} search_path * @param {Array<string>} manifests * @returns {string} */ const getResourcePackInSearchPath = (search_path, manifests) => { const relevantManifests = manifests || getManifestsInSearchPath(search_path); for (const file of relevantManifests || []) { const manifest = _json_file.default.read(file); if (manifest && manifest.header && manifest.modules) { for (const module of manifest.modules) { if (module.type == 'resources') { return _path.default.resolve(_path.default.dirname(file)); } } } } }; /** * @param {Array<string>} manifests * @returns {string} */ const getResourcePackInWorkingPath = manifests => { return getResourcePackInSearchPath(workingPath, manifests); }; /** * @param {string} search_path * @returns {Array<string>} */ const getJavaFilesInSearchPath = (search_path = process.cwd()) => { const searchPath = _path.default.resolve(search_path); const result = []; // Search for java files. _glob.default.sync('**/*.java', { cwd: searchPath, nodir: true }).map(file => { result.push(_path.default.resolve(search_path, file)); }); if (result.length > 0) { return result; } }; /** * @returns {string} */ const getJavaFilesInWorkingPath = () => { return getJavaFilesInSearchPath(javaSrcPath); }; /** * @param {string} search_path * @param {Array<string>} java_files * @returns {string} */ const getModInSearchPath = (search_path, java_files) => { const modMainClass = getModMainClassInSearchPath(search_path, java_files); return modMainClass ? _path.default.resolve(_path.default.dirname(modMainClass)) : null; }; /** * @param {Array<string>} java_files * @returns {string} */ const getModInWorkingPath = java_files => { return getModInSearchPath(workingPath, java_files); }; /** * @param {string} search_path * @param {Array<string>} java_files * @returns {string} */ const getModMainClassInSearchPath = (search_path, java_files) => { const relevantJavaFiles = java_files || getJavaFilesInSearchPath(search_path); for (const file of relevantJavaFiles || []) { const javaFileContent = _java_file.default.read(file); if (javaFileContent && javaFileContent.includes('@Mod(Constants.MOD_ID)')) { return _path.default.resolve(file); } } }; /** * @param {Array<string>} java_files * @returns {string} */ const getModMainClassInWorkingPath = java_files => { return getModMainClassInSearchPath(workingPath, java_files); }; var _default = { getBehaviorPackInSearchPath, getBehaviorPackInWorkingPath, getJavaFilesInSearchPath, getJavaFilesInWorkingPath, getManifestsInSearchPath, getManifestsInWorkingPath, getModInSearchPath, getModInWorkingPath, getModMainClassInSearchPath, getModMainClassInWorkingPath, getResourcePackInSearchPath, getResourcePackInWorkingPath }; exports.default = _default;