mira-app-server
Version:
Mira Server - standalone server application using mira-app-core
162 lines • 5.69 kB
JavaScript
;
/**
* 素材库模块命令
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerLibraries = registerLibraries;
const client_1 = require("../client");
const format_1 = require("../format");
function registerLibraries(program) {
const libraries = program.command('libraries').alias('lib').description('素材库管理');
libraries
.command('list')
.description('获取所有素材库列表')
.option('--status <status>', '按状态筛选 (active|inactive|error)')
.action(async (options) => {
try {
const { client } = (0, client_1.getClient)();
let list = await client.libraries().getAll();
if (options.status) {
list = list.filter(lib => lib.status === options.status);
}
const rows = list.map(lib => ({
id: lib.id,
name: lib.name,
status: lib.status,
fileCount: lib.fileCount,
size: lib.size,
path: lib.path,
}));
(0, format_1.output)(rows, () => (0, format_1.formatTable)(rows));
}
catch (error) {
(0, format_1.fatal)(error);
}
});
libraries
.command('get <id>')
.description('根据 ID 获取单个素材库')
.action(async (id) => {
try {
const { client } = (0, client_1.getClient)();
const lib = await client.libraries().getById(id);
(0, format_1.output)(lib, () => (0, format_1.formatKeyValue)(lib));
}
catch (error) {
(0, format_1.fatal)(error);
}
});
libraries
.command('create')
.description('创建新的素材库')
.requiredOption('-n, --name <name>', '素材库名称')
.requiredOption('-p, --path <path>', '素材库路径')
.option('--desc <desc>', '描述')
.option('--icon <icon>', '图标')
.option('--plugins-dir <dir>', '插件目录')
.option('--no-hash', '禁用 hash 校验')
.action(async (options) => {
try {
const { client } = (0, client_1.getClient)();
const data = {
name: options.name,
path: options.path,
description: options.desc || '',
};
if (options.icon)
data.icon = options.icon;
if (options.pluginsDir)
data.pluginsDir = options.pluginsDir;
data.customFields = { enableHash: options.hash !== false };
const res = await client.libraries().create(data);
(0, format_1.success)(`素材库已创建: ${options.name}`);
(0, format_1.output)(res);
}
catch (error) {
(0, format_1.fatal)(error);
}
});
libraries
.command('update <id>')
.description('更新素材库信息')
.option('--name <name>', '名称')
.option('--desc <desc>', '描述')
.option('--no-hash', '禁用 hash 校验')
.action(async (id, options) => {
try {
const { client } = (0, client_1.getClient)();
const data = {};
if (options.name !== undefined)
data.name = options.name;
if (options.desc !== undefined)
data.description = options.desc;
if (options.hash !== undefined) {
data.customFields = { enableHash: options.hash !== false };
}
const res = await client.libraries().update(id, data);
(0, format_1.success)(`素材库 ${id} 已更新`);
(0, format_1.output)(res);
}
catch (error) {
(0, format_1.fatal)(error);
}
});
libraries
.command('delete <id>')
.alias('rm')
.description('删除素材库')
.action(async (id) => {
try {
const { client } = (0, client_1.getClient)();
const res = await client.libraries().delete(id);
(0, format_1.success)(`素材库 ${id} 已删除`);
(0, format_1.output)(res);
}
catch (error) {
(0, format_1.fatal)(error);
}
});
libraries
.command('start <id>')
.description('启动素材库服务')
.action(async (id) => {
try {
const { client } = (0, client_1.getClient)();
const res = await client.libraries().start(id);
(0, format_1.success)(`素材库 ${id} 已启动`);
(0, format_1.output)(res);
}
catch (error) {
(0, format_1.fatal)(error);
}
});
libraries
.command('stop <id>')
.description('停止素材库服务')
.action(async (id) => {
try {
const { client } = (0, client_1.getClient)();
const res = await client.libraries().stop(id);
(0, format_1.success)(`素材库 ${id} 已停止`);
(0, format_1.output)(res);
}
catch (error) {
(0, format_1.fatal)(error);
}
});
libraries
.command('restart <id>')
.description('重启素材库服务')
.action(async (id) => {
try {
const { client } = (0, client_1.getClient)();
const res = await client.libraries().restart(id);
(0, format_1.success)(`素材库 ${id} 已重启`);
(0, format_1.output)(res);
}
catch (error) {
(0, format_1.fatal)(error);
}
});
}
//# sourceMappingURL=libraries.js.map