UNPKG

weapp-ide-cli

Version:

让微信开发者工具,用起来更加方便!

218 lines (207 loc) 7.27 kB
"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 )); // src/cli.ts var import_node_process3 = __toESM(require("process"), 1); // src/logger.ts var import_logger = __toESM(require("@weapp-core/logger"), 1); var logger_default = import_logger.default; // src/parse.ts var import_node_process2 = __toESM(require("process"), 1); var import_node_readline = __toESM(require("readline"), 1); var import_fs_extra2 = __toESM(require("fs-extra"), 1); // src/compose.ts function compose(...funcs) { if (funcs.length === 0) { return (arg) => arg; } if (funcs.length === 1) { return funcs[0]; } return funcs.reduce( (a, b) => (...args) => a(b(...args)) ); } // src/config.ts var import_fs_extra = __toESM(require("fs-extra"), 1); // src/defaults.ts var import_node_os = __toESM(require("os"), 1); var import_pathe = __toESM(require("pathe"), 1); var homedir = import_node_os.default.homedir(); var SupportedPlatformsMap = { Windows_NT: "Windows_NT", Darwin: "Darwin" }; var defaultPathMap = { [SupportedPlatformsMap.Windows_NT]: "C:\\Program Files (x86)\\Tencent\\\u5FAE\u4FE1web\u5F00\u53D1\u8005\u5DE5\u5177\\cli.bat", [SupportedPlatformsMap.Darwin]: "/Applications/wechatwebdevtools.app/Contents/MacOS/cli" }; var operatingSystemName = import_node_os.default.type(); var defaultCustomConfigDirPath = import_pathe.default.join(homedir, ".weapp-ide-cli"); var defaultCustomConfigFilePath = import_pathe.default.join( defaultCustomConfigDirPath, "config.json" ); var defaultPath = defaultPathMap[operatingSystemName]; // src/config.ts function createCustomConfig(params) { return import_fs_extra.default.outputJSON( defaultCustomConfigFilePath, { cliPath: params.cliPath }, { encoding: "utf8", spaces: 2 } ); } async function getConfig() { const isExisted = await import_fs_extra.default.exists(defaultCustomConfigFilePath); if (isExisted) { const content = await import_fs_extra.default.readFile(defaultCustomConfigFilePath, { encoding: "utf8" }); const config = JSON.parse(content); logger_default.log("> \u5168\u5C40\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84\uFF1A", defaultCustomConfigFilePath); logger_default.log("> \u81EA\u5B9A\u4E49cli\u8DEF\u5F84\uFF1A", config.cliPath); return config; } else { return { cliPath: defaultPath }; } } // src/utils.ts var import_node_process = __toESM(require("process"), 1); var import_pathe2 = __toESM(require("pathe"), 1); async function execute(cliPath, argv2) { const { execa } = await import("execa"); const task = execa(cliPath, argv2); task?.stdout?.pipe(import_node_process.default.stdout); await task; } function resolvePath(filePath) { if (import_pathe2.default.isAbsolute(filePath)) { return filePath; } else { return import_pathe2.default.resolve(import_node_process.default.cwd(), filePath); } } function alias(argv2, entry) { let findIdx = argv2.indexOf(entry.find); if (findIdx > -1) { argv2[findIdx] = entry.replacement; } else { findIdx = argv2.indexOf(entry.replacement); } if (findIdx > -1) { const paramIdx = findIdx + 1; const param = argv2[paramIdx]; if (param && param[0] !== "-") { argv2[paramIdx] = resolvePath(param); } else { argv2.splice(paramIdx, 0, import_node_process.default.cwd()); } } return argv2; } function pathCompat(argv2, option) { const findIdx = argv2.indexOf(option); if (findIdx > -1) { const paramIdx = findIdx + 1; const param = argv2[paramIdx]; if (param && param[0] !== "-") { argv2[paramIdx] = resolvePath(param); } else { argv2.splice(paramIdx, 0, import_node_process.default.cwd()); } } return argv2; } function createAlias(entry) { return function(argv2) { return alias(argv2, entry); }; } function createPathCompat(option) { return function(argv2) { return pathCompat(argv2, option); }; } // src/parse.ts var isSupported = Boolean(defaultPath); function rlSetConfig() { const rl = import_node_readline.default.createInterface({ input: import_node_process2.default.stdin, output: import_node_process2.default.stdout }); logger_default.log("\u8BF7\u8BBE\u7F6E\u5FAE\u4FE1web\u5F00\u53D1\u8005\u5DE5\u5177 cli \u7684\u8DEF\u5F84"); logger_default.log("> \u63D0\u793A\uFF1A\u547D\u4EE4\u884C\u5DE5\u5177\u9ED8\u8BA4\u6240\u5728\u4F4D\u7F6E\uFF1A"); logger_default.log("- MacOS: <\u5B89\u88C5\u8DEF\u5F84>/Contents/MacOS/cli"); logger_default.log("- Windows: <\u5B89\u88C5\u8DEF\u5F84>/cli.bat"); return new Promise((resolve, _reject) => { rl.question("\u8BF7\u8F93\u5165\u5FAE\u4FE1web\u5F00\u53D1\u8005\u5DE5\u5177cli\u8DEF\u5F84\uFF1A", async (cliPath) => { await createCustomConfig({ cliPath }); logger_default.log(`\u5168\u5C40\u914D\u7F6E\u5B58\u50A8\u4F4D\u7F6E\uFF1A${defaultCustomConfigFilePath}`); resolve(cliPath); }); }); } var parseArgv = compose( createAlias({ find: "-p", replacement: "--project" }), createPathCompat("--result-output"), createPathCompat("-r"), createPathCompat("--qr-output"), createPathCompat("-o"), createPathCompat("--info-output"), createPathCompat("-i") ); async function parse(argv2) { if (isSupported) { const { cliPath } = await getConfig(); const isExisted = await import_fs_extra2.default.exists(cliPath); if (isExisted) { if (argv2[0] === "config") { await rlSetConfig(); return; } const formattedArgv = parseArgv(argv2); await execute(cliPath, formattedArgv); } else { logger_default.log( "\u5728\u5F53\u524D\u81EA\u5B9A\u4E49\u8DEF\u5F84\u4E2D,\u672A\u627E\u5230\u5FAE\u4FE1web\u5F00\u53D1\u8005\u547D\u4EE4\u884C\u5DE5\u5177\uFF0C\u8BF7\u91CD\u65B0\u6307\u5B9A\u8DEF\u5F84" ); await rlSetConfig(); } } else { logger_default.log(`\u5FAE\u4FE1web\u5F00\u53D1\u8005\u5DE5\u5177\u4E0D\u652F\u6301\u5F53\u524D\u5E73\u53F0\uFF1A${operatingSystemName} !`); } } // src/cli.ts var argv = import_node_process3.default.argv.slice(2); parse(argv).catch((err) => { logger_default.error(err); });