@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
79 lines (78 loc) • 3.56 kB
JavaScript
;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.infoCommand = exports.InfoCommand = void 0;
const IToolCommand_1 = require("../IToolCommand");
const IProjectItemData_1 = require("../../IProjectItemData");
const ProjectItemUtilities_1 = __importDefault(require("../../ProjectItemUtilities"));
class InfoCommand extends IToolCommand_1.ToolCommandBase {
metadata = {
name: "info",
description: "Display metadata about the current project (name, item counts, pack info)",
aliases: ["i"],
category: "Project",
requiresProject: true,
isWriteCommand: false,
examples: ["/info", "/i"],
};
async execute(context, _args, _flags) {
if (!context.project) {
context.output.error("No active project — open a project before running /info.");
return this.error("NO_PROJECT", "No active project");
}
const project = context.project;
const items = project.items || [];
let bpItemCount = 0;
let rpItemCount = 0;
let bpManifestCount = 0;
let rpManifestCount = 0;
for (const item of items) {
if (ProjectItemUtilities_1.default.isBehaviorRelated(item.itemType)) {
bpItemCount++;
}
else if (ProjectItemUtilities_1.default.isResourceRelated(item.itemType)) {
rpItemCount++;
}
if (item.itemType === IProjectItemData_1.ProjectItemType.behaviorPackManifestJson) {
bpManifestCount++;
}
else if (item.itemType === IProjectItemData_1.ProjectItemType.resourcePackManifestJson) {
rpManifestCount++;
}
}
const title = project.title || project.name;
context.output.info(`Project: ${title}`);
if (project.description) {
context.output.info(`Description: ${project.description}`);
}
context.output.info(`Total items: ${items.length}`);
context.output.info(`Behavior pack: ${bpItemCount} item(s) (${bpManifestCount} manifest${bpManifestCount === 1 ? "" : "s"})`);
context.output.info(`Resource pack: ${rpItemCount} item(s) (${rpManifestCount} manifest${rpManifestCount === 1 ? "" : "s"})`);
if (project.defaultBehaviorPackUniqueId) {
context.output.info(`Default BP uuid: ${project.defaultBehaviorPackUniqueId}`);
}
if (project.defaultResourcePackUniqueId) {
context.output.info(`Default RP uuid: ${project.defaultResourcePackUniqueId}`);
}
const summary = `${items.length} items (BP=${bpItemCount}, RP=${rpItemCount})`;
context.output.success(summary);
return this.success(summary, {
name: project.name,
title,
description: project.description || "",
itemCount: items.length,
behaviorPackItems: bpItemCount,
resourcePackItems: rpItemCount,
behaviorPackManifests: bpManifestCount,
resourcePackManifests: rpManifestCount,
defaultBehaviorPackUniqueId: project.defaultBehaviorPackUniqueId,
defaultResourcePackUniqueId: project.defaultResourcePackUniqueId,
});
}
}
exports.InfoCommand = InfoCommand;
exports.infoCommand = new InfoCommand();