UNPKG

kotori-bot

Version:

Cross-platform chatbot framework base on Node.js and TypeScript

97 lines (96 loc) 5.48 kB
/** * @Package kotori-bot * @Version 1.7.0 * @Author Arimura Sena <me@hotaru.icu> * @Copyright 2024-2025 Hotaru. All rights reserved. * @License BAN-ZHINESE-USING * @Link https://github.com/kotorijs/kotori * @Date 17:26:14 */ "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var import_cac = __toESM(require("cac")); var import_loader = require("@kotori-bot/loader"); var import_node_path = require("node:path"); var import_env = __toESM(require("./utils/env")); var import_core = require("@kotori-bot/core"); var import_daemon = __toESM(require("./daemon")); var import_gui = require("./gui"); var import_build = __toESM(require("./dev/build")); var import_pub = __toESM(require("./dev/pub")); var import_common = require("./dev/common"); const program = (0, import_cac.default)(); program.version(require("../package.json"), "-v, --version"); program.help(); program.command("").option("--daemon", "Set daemon process").option("--mode [name]", "Set running mode of program, build or dev").option("--dir [path]", "Set running root dir of program").option("--config [name]", "Set name of config file").option("--level [number]", "Set level of log output").option("--port [number]", "Set port of server").option("--dbPrefix [string]", "Set prefix of database").option("--noColor", "Do not use logger colors").action((options) => { const loaderOptions = Object.assign(import_env.default, { mode: (options.mode ?? import_env.default.mode) === import_loader.DEV_MODE ? import_loader.DEV_MODE : import_loader.BUILD_MODE }); if (options.dir !== void 0) loaderOptions.dir = options.dir; if (options.config) loaderOptions.config = options.config; if (options.level !== void 0) loaderOptions.level = Number.parseInt(options.level); if (options.port !== void 0) loaderOptions.port = Number.parseInt(options.port); if (options.dbPrefix) loaderOptions.dbPrefix = options.dbPrefix; if (options.noColor) loaderOptions.noColor = true; if (options.daemon || loaderOptions.mode === import_loader.BUILD_MODE) loaderOptions.daemon = true; const virtualEnv = { ...process.env, NODE_ENV: loaderOptions.mode === import_loader.DEV_MODE ? "dev" : "build", CONFIG: loaderOptions.config, DIR: loaderOptions.dir, PORT: loaderOptions.port !== void 0 ? String(loaderOptions.port) : void 0, LEVEL: loaderOptions.level !== void 0 ? String(loaderOptions.level) : void 0, NO_COLOR: loaderOptions.noColor !== void 0 ? loaderOptions.noColor ? "on" : "off" : void 0, IS_DAEMON: "on" }; if (!options.daemon && loaderOptions.mode === import_loader.DEV_MODE && !(0, import_core.supportTs)()) { import_loader.Logger.error("You need to transform running environment to use dev mode"); const child = (0, import_core.executeCommand)( `npm exec tsx "${(0, import_node_path.resolve)(__filename)}"`, { cwd: process.cwd(), env: virtualEnv }, (error, stdout, stderr) => { if (stdout) process.stderr.write(stdout); if (stderr) process.stderr.write(stderr); if (error) process.stderr.write(error.message); } ); process.stdin.on("data", (data) => child.stdin?.write(data)); return; } if (loaderOptions.daemon && !import_env.default.isDaemon) return (0, import_daemon.default)(virtualEnv); const loader = new import_loader.Loader(loaderOptions); loader.meta.version = require((0, import_node_path.resolve)(__dirname, "../package.json")).version; import_core.Container[import_core.Symbols.setInstance](loader); loader.run(); }); program.command("ui", "Run the interactive GUI").alias("gui").action(() => { (0, import_gui.mainScope)(); }); program.command("build [filters]", "Build the workspace").option("--silent", "Do not output logs").option("--types", "Build types").option("--onlyTypes", "Build only types").option("--ignoreError", "Ignore error when building").action((filters, options) => { (0, import_build.default)(options, { ...(0, import_core.loadConfig)((0, import_node_path.resolve)(import_common.CWD, import_env.default.config ?? import_loader.CONFIG_NAME), "toml") ?? {}, ...filters }); }); program.command("pub [filters]", "Publish the workspace").action((filters) => (0, import_pub.default)(filters)); program.on("command:*", () => { import_loader.Logger.error("Invalid command: %s", program.args.join(" ")); process.exit(1); }); program.parse();