@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
230 lines (229 loc) • 11.7 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OutputType = exports.TaskType = void 0;
const CreatorToolsHost_1 = __importDefault(require("../app/CreatorToolsHost"));
const Project_1 = __importStar(require("../app/Project"));
const Status_1 = require("../app/Status");
const Log_1 = __importDefault(require("../core/Log"));
const LocalEnvironment_1 = require("../local/LocalEnvironment");
const NodeStorage_1 = __importDefault(require("../local/NodeStorage"));
const Database_1 = __importDefault(require("../minecraft/Database"));
const StorageUtilities_1 = __importDefault(require("../storage/StorageUtilities"));
const path = __importStar(require("path"));
var TaskType;
(function (TaskType) {
TaskType[TaskType["noCommand"] = 0] = "noCommand";
TaskType[TaskType["runTests"] = 1] = "runTests";
TaskType[TaskType["exportAddon"] = 2] = "exportAddon";
TaskType[TaskType["exportWorld"] = 3] = "exportWorld";
TaskType[TaskType["ensureRefWorld"] = 4] = "ensureRefWorld";
TaskType[TaskType["deploy"] = 5] = "deploy";
TaskType[TaskType["runDedicatedServer"] = 6] = "runDedicatedServer";
TaskType[TaskType["info"] = 7] = "info";
TaskType[TaskType["add"] = 8] = "add";
TaskType[TaskType["create"] = 9] = "create";
TaskType[TaskType["validate"] = 10] = "validate";
TaskType[TaskType["serve"] = 11] = "serve";
TaskType[TaskType["version"] = 12] = "version";
TaskType[TaskType["passcodes"] = 13] = "passcodes";
TaskType[TaskType["setPasscode"] = 14] = "setPasscode";
TaskType[TaskType["setServerProperties"] = 15] = "setServerProperties";
TaskType[TaskType["minecraftEulaAndPrivacyStatement"] = 16] = "minecraftEulaAndPrivacyStatement";
TaskType[TaskType["deployTestWorld"] = 17] = "deployTestWorld";
TaskType[TaskType["world"] = 18] = "world";
TaskType[TaskType["fix"] = 19] = "fix";
TaskType[TaskType["setProjectProperty"] = 20] = "setProjectProperty";
TaskType[TaskType["autoTest"] = 21] = "autoTest";
TaskType[TaskType["aggregateReports"] = 22] = "aggregateReports";
TaskType[TaskType["docsUpdateFormSource"] = 23] = "docsUpdateFormSource";
TaskType[TaskType["docsGenerateFormJson"] = 24] = "docsGenerateFormJson";
TaskType[TaskType["docsGenerateMarkdown"] = 25] = "docsGenerateMarkdown";
TaskType[TaskType["search"] = 26] = "search";
TaskType[TaskType["docsGenerateTypes"] = 27] = "docsGenerateTypes";
TaskType[TaskType["profileValidation"] = 28] = "profileValidation";
TaskType[TaskType["mcp"] = 29] = "mcp";
TaskType[TaskType["docsUpdateMCCat"] = 30] = "docsUpdateMCCat";
TaskType[TaskType["renderModel"] = 31] = "renderModel";
TaskType[TaskType["renderVanilla"] = 32] = "renderVanilla";
TaskType[TaskType["renderStructure"] = 33] = "renderStructure";
TaskType[TaskType["buildStructure"] = 34] = "buildStructure";
TaskType[TaskType["view"] = 35] = "view";
TaskType[TaskType["edit"] = 36] = "edit";
TaskType[TaskType["docsGenerateJsonSchema"] = 37] = "docsGenerateJsonSchema";
TaskType[TaskType["setup"] = 38] = "setup";
TaskType[TaskType["generateSchemaPackage"] = 39] = "generateSchemaPackage";
})(TaskType || (exports.TaskType = TaskType = {}));
var OutputType;
(function (OutputType) {
OutputType[OutputType["normal"] = 0] = "normal";
OutputType[OutputType["noReports"] = 1] = "noReports";
OutputType[OutputType["json"] = 2] = "json";
})(OutputType || (exports.OutputType = OutputType = {}));
class ClUtils {
static createProject(creatorTools, startInfo) {
const proj = new Project_1.default(creatorTools, startInfo.ctorProjectName, null);
if (startInfo.localFilePath) {
proj.localFilePath = startInfo.localFilePath;
}
if (startInfo.localFolderPath) {
proj.localFolderPath = startInfo.localFolderPath;
}
if (startInfo.accessoryFiles) {
proj.accessoryFilePaths = startInfo.accessoryFiles;
}
proj.autoDeploymentMode = Project_1.ProjectAutoDeploymentMode.noAutoDeployment;
return proj;
}
static handleStatusAdded(creatorTools, status) {
let message = status.message;
if (status.type === Status_1.StatusType.operationStarted) {
message =
LocalEnvironment_1.OperationColors[(status.operationId ? status.operationId : 0) % LocalEnvironment_1.OperationColors.length] +
"[[ START: " +
message +
LocalEnvironment_1.consoleText_reset;
}
else if (status.type === Status_1.StatusType.operationEndedComplete) {
message =
LocalEnvironment_1.OperationColors[(status.operationId ? status.operationId : 0) % LocalEnvironment_1.OperationColors.length] +
" " +
message +
" :END ]]" +
LocalEnvironment_1.consoleText_reset;
}
else if (status.type === Status_1.StatusType.operationEndedErrors) {
message =
LocalEnvironment_1.OperationColors[(status.operationId ? status.operationId : 0) % LocalEnvironment_1.OperationColors.length] +
" " +
message +
" :END - ERRORS ]]" +
LocalEnvironment_1.consoleText_reset;
}
Log_1.default.verbose(message);
}
static async localFolderExists(path) {
const ls = new NodeStorage_1.default(path, "");
return await ls.rootFolder.exists();
}
static async localFileExists(path) {
const folderPath = StorageUtilities_1.default.getFolderPath(path);
const fileName = StorageUtilities_1.default.getLeafName(path);
if (!fileName || fileName.length < 2 || !folderPath || folderPath.length < 2) {
throw new Error("Could not process file with path: `" + path + "`");
}
const ls = new NodeStorage_1.default(folderPath, "");
const file = ls.rootFolder.ensureFile(fileName);
return await file.exists();
}
static ensureLocalFolder(path) {
const ls = new NodeStorage_1.default(path, "");
return ls.rootFolder;
}
static getIsWriteCommand(taskType) {
return (taskType === TaskType.world ||
taskType === TaskType.create ||
taskType === TaskType.add ||
taskType === TaskType.fix);
}
/**
* Returns true for commands that edit content in place (no separate output folder).
* These commands: edit, view, add, create, fix
*/
static getIsEditInPlaceCommand(taskType) {
return (taskType === TaskType.edit ||
taskType === TaskType.view ||
taskType === TaskType.add ||
taskType === TaskType.create ||
taskType === TaskType.fix);
}
static async getMainWorkFolder(taskType, inputFolder, outputFolder) {
// console.log("Using local path: '" + inputFolder + "' from '" + __dirname + "'");
let workFolder;
if (!inputFolder && outputFolder && ClUtils.getIsWriteCommand(taskType)) {
// Resolve relative output paths against current working directory
const resolvedOutput = path.isAbsolute(outputFolder) ? outputFolder : path.resolve(process.cwd(), outputFolder);
const outputStorage = new NodeStorage_1.default(resolvedOutput, "");
workFolder = outputStorage.rootFolder;
await workFolder.ensureExists();
}
if (!workFolder) {
if (!inputFolder) {
inputFolder = process.cwd();
}
else {
// Resolve relative input paths against current working directory
inputFolder = path.isAbsolute(inputFolder) ? inputFolder : path.resolve(process.cwd(), inputFolder);
}
const inputStorage = new NodeStorage_1.default(inputFolder, "");
inputStorage.readOnly = true;
workFolder = inputStorage.rootFolder;
}
const exists = await workFolder.exists();
if (!exists) {
// Use a CLI-friendly message — referring to the bundled CLI's own
// installation directory ("__dirname") only confuses creators who are
// pointing at their own project folder.
throw new Error(`Input folder does not exist: '${workFolder.fullPath}'. Use -i <path> to specify the project folder, or run from inside the project.`);
}
await workFolder.load();
return workFolder;
}
static getCreatorTools(localEnv, basePath) {
CreatorToolsHost_1.default.localFolderExists = ClUtils.localFolderExists;
CreatorToolsHost_1.default.localFileExists = ClUtils.localFileExists;
CreatorToolsHost_1.default.ensureLocalFolder = ClUtils.ensureLocalFolder;
CreatorToolsHost_1.default.prefsStorage = new NodeStorage_1.default(path.join(localEnv.utilities.cliWorkingPath, "prefs") + NodeStorage_1.default.platformFolderDelimiter, "");
CreatorToolsHost_1.default.projectsStorage = new NodeStorage_1.default(path.join(localEnv.utilities.cliWorkingPath, "projects") + NodeStorage_1.default.platformFolderDelimiter, "");
CreatorToolsHost_1.default.packStorage = new NodeStorage_1.default(path.join(localEnv.utilities.cliWorkingPath, "packs") + NodeStorage_1.default.platformFolderDelimiter, "");
CreatorToolsHost_1.default.workingStorage = new NodeStorage_1.default(path.join(localEnv.utilities.cliWorkingPath, "working") + NodeStorage_1.default.platformFolderDelimiter, "");
if (localEnv.utilities && basePath) {
localEnv.utilities.basePathAdjust = basePath;
}
const coreStorage = new NodeStorage_1.default(__dirname + "/../data/content/", "");
Database_1.default.contentFolder = coreStorage.rootFolder;
Database_1.default.local = localEnv.utilities;
CreatorToolsHost_1.default.init();
const ct = CreatorToolsHost_1.default.getCreatorTools();
if (ct) {
ct.local = localEnv.utilities;
}
return ct;
}
}
exports.default = ClUtils;