@wecom/wecom-openclaw-cli 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -5
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +7 -2
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/install.d.ts +2 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +40 -19
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/update.d.ts +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +5 -63
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/utils/constants.d.ts +2 -2
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +3 -3
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/plugin.d.ts +10 -1
- package/dist/utils/plugin.d.ts.map +1 -1
- package/dist/utils/plugin.js +51 -3
- package/dist/utils/plugin.js.map +1 -1
- package/dist/utils/system.d.ts +0 -9
- package/dist/utils/system.d.ts.map +1 -1
- package/dist/utils/system.js +0 -23
- package/dist/utils/system.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,40 +41,66 @@ wecom-openclaw-cli --help
|
|
|
41
41
|
|
|
42
42
|
### `install` — 安装插件
|
|
43
43
|
|
|
44
|
-
安装并配置企业微信官方 OpenClaw
|
|
44
|
+
安装并配置企业微信官方 OpenClaw 插件。安装过程中会自动检测并禁用冲突插件,并交互式提示输入机器人 ID(Bot ID)和机器人密钥(Secret)。
|
|
45
|
+
|
|
46
|
+
> **提示**:如果插件已安装,`install` 会自动进入更新流程,无需手动调用 `update`。
|
|
45
47
|
|
|
46
48
|
```bash
|
|
47
49
|
wecom-openclaw-cli install
|
|
48
50
|
|
|
49
51
|
# 指定版本安装
|
|
50
52
|
wecom-openclaw-cli install --version 1.2.0
|
|
53
|
+
|
|
54
|
+
# 强制重新安装(清除已有插件和配置后全量重装)
|
|
55
|
+
wecom-openclaw-cli install --force
|
|
56
|
+
|
|
57
|
+
# 指定 npm 包名(适用于私有源或自定义包名场景)
|
|
58
|
+
wecom-openclaw-cli install --package-name @my-scope/my-plugin
|
|
51
59
|
```
|
|
52
60
|
|
|
61
|
+
| 参数 | 说明 |
|
|
62
|
+
|------|------|
|
|
63
|
+
| `--version <version>` | 安装指定版本的插件 |
|
|
64
|
+
| `--package-name <packageName>` | 指定 npm 包名(默认 `@wecom/wecom-openclaw-plugin`) |
|
|
65
|
+
| `--force` | 强制重新安装,清除已有插件目录和配置 |
|
|
66
|
+
|
|
53
67
|
### `update` — 更新插件
|
|
54
68
|
|
|
55
|
-
|
|
69
|
+
将已安装的企业微信插件更新到最新版本或指定版本。更新完成后会自动运行 `doctor` 诊断检查。
|
|
56
70
|
|
|
57
71
|
```bash
|
|
58
72
|
wecom-openclaw-cli update
|
|
59
73
|
|
|
60
74
|
# 更新到指定版本
|
|
61
75
|
wecom-openclaw-cli update --version 1.3.0
|
|
76
|
+
|
|
77
|
+
# 指定 npm 包名
|
|
78
|
+
wecom-openclaw-cli update --package-name @my-scope/my-plugin
|
|
62
79
|
```
|
|
63
80
|
|
|
81
|
+
| 参数 | 说明 |
|
|
82
|
+
|------|------|
|
|
83
|
+
| `--version <version>` | 更新到指定版本的插件 |
|
|
84
|
+
| `--package-name <packageName>` | 指定 npm 包名(默认 `@wecom/wecom-openclaw-plugin`) |
|
|
85
|
+
|
|
64
86
|
### `info` — 查看信息
|
|
65
87
|
|
|
66
|
-
显示 CLI 版本、OpenClaw
|
|
88
|
+
显示 CLI 版本、OpenClaw 版本、插件版本和环境信息。
|
|
67
89
|
|
|
68
90
|
```bash
|
|
69
91
|
wecom-openclaw-cli info
|
|
70
92
|
|
|
71
|
-
#
|
|
93
|
+
# 显示完整详情(含配置状态、冲突插件检测、npm 源连通性及脱敏后的配置内容)
|
|
72
94
|
wecom-openclaw-cli info --all
|
|
73
95
|
```
|
|
74
96
|
|
|
97
|
+
| 参数 | 说明 |
|
|
98
|
+
|------|------|
|
|
99
|
+
| `--all` | 显示所有详细信息,包括配置状态、冲突插件、npm 源连通性和脱敏配置 |
|
|
100
|
+
|
|
75
101
|
### `doctor` — 诊断问题
|
|
76
102
|
|
|
77
|
-
|
|
103
|
+
全面检查插件安装状态,包括:插件目录、依赖完整性、配置正确性、冲突插件检测和 channel 配置。
|
|
78
104
|
|
|
79
105
|
```bash
|
|
80
106
|
wecom-openclaw-cli doctor
|
|
@@ -83,6 +109,20 @@ wecom-openclaw-cli doctor
|
|
|
83
109
|
wecom-openclaw-cli doctor --fix
|
|
84
110
|
```
|
|
85
111
|
|
|
112
|
+
| 参数 | 说明 |
|
|
113
|
+
|------|------|
|
|
114
|
+
| `--fix` | 尝试自动修复检测到的问题(如安装依赖、移除冲突插件、补全配置等) |
|
|
115
|
+
|
|
116
|
+
## 其他
|
|
117
|
+
|
|
118
|
+
### 版本查看
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
wecom-openclaw-cli -V
|
|
122
|
+
# 或
|
|
123
|
+
wecom-openclaw-cli --cli-version
|
|
124
|
+
```
|
|
125
|
+
|
|
86
126
|
## License
|
|
87
127
|
|
|
88
128
|
ISC
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GhF"}
|
package/dist/commands/info.js
CHANGED
|
@@ -50,12 +50,17 @@ async function infoCommand(options = {}) {
|
|
|
50
50
|
(openClawVersion !== '未安装'
|
|
51
51
|
? chalk.green(openClawVersion)
|
|
52
52
|
: chalk.red(openClawVersion)));
|
|
53
|
-
// 2.
|
|
53
|
+
// 2. 获取插件包名和版本
|
|
54
|
+
const pluginPackageName = (await plugin.getPluginPackageName()) ?? '未安装';
|
|
54
55
|
const pluginVersion = (await plugin.getPluginVersion()) ?? '未安装';
|
|
55
56
|
console.log(chalk.bold('wecom-openclaw-plugin: ') +
|
|
56
57
|
(pluginVersion !== '未安装'
|
|
57
58
|
? chalk.green(pluginVersion)
|
|
58
59
|
: chalk.red(pluginVersion)));
|
|
60
|
+
console.log(chalk.bold('plugin package: ') +
|
|
61
|
+
(pluginPackageName !== '未安装'
|
|
62
|
+
? chalk.green(pluginPackageName)
|
|
63
|
+
: chalk.red(pluginPackageName)));
|
|
59
64
|
// 3. 环境信息
|
|
60
65
|
console.log('');
|
|
61
66
|
console.log(chalk.bold.underline('环境信息:'));
|
|
@@ -115,7 +120,7 @@ async function infoCommand(options = {}) {
|
|
|
115
120
|
}
|
|
116
121
|
}
|
|
117
122
|
catch (error) {
|
|
118
|
-
console.error(chalk.red('
|
|
123
|
+
console.error(chalk.red('获取信息失败:'), error instanceof Error ? error.message : error);
|
|
119
124
|
}
|
|
120
125
|
}
|
|
121
126
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sources":["../../src/commands/info.ts"],"sourcesContent":[null],"names":["pkg","getPlatformCommand","runCommandQuiet","getPluginVersion","os","getConfigPath","fs","config","readConfig","PLUGIN_NAME","CONFLICT_PLUGINS","NPM_REGISTRIES"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"info.js","sources":["../../src/commands/info.ts"],"sourcesContent":[null],"names":["pkg","getPlatformCommand","runCommandQuiet","getPluginPackageName","getPluginVersion","os","getConfigPath","fs","config","readConfig","PLUGIN_NAME","CONFLICT_PLUGINS","NPM_REGISTRIES"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAuDA;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoHxH"}
|
package/dist/commands/install.js
CHANGED
|
@@ -63,10 +63,6 @@ async function ensureChannelConfig() {
|
|
|
63
63
|
if (!newConfig.channels.wecom.secret) {
|
|
64
64
|
newConfig.channels.wecom.secret = await prompts.promptSecret();
|
|
65
65
|
}
|
|
66
|
-
// // 确保 dmPolicy 设置正确
|
|
67
|
-
// if (!newConfig.channels.wecom.dmPolicy) {
|
|
68
|
-
// newConfig.channels.wecom.dmPolicy = 'pairing';
|
|
69
|
-
// }
|
|
70
66
|
// 更新 plugins.allow
|
|
71
67
|
if (!newConfig.plugins)
|
|
72
68
|
newConfig.plugins = {};
|
|
@@ -82,8 +78,33 @@ async function ensureChannelConfig() {
|
|
|
82
78
|
*/
|
|
83
79
|
async function installCommand(options) {
|
|
84
80
|
console.log(chalk.blue('开始安装...'));
|
|
85
|
-
//
|
|
86
|
-
if (
|
|
81
|
+
// 0. force 模式:清理所有已有安装和配置,重新全量安装
|
|
82
|
+
if (options.force) {
|
|
83
|
+
console.log(chalk.yellow('强制安装模式,正在清理已有安装...'));
|
|
84
|
+
// 禁用冲突插件并清除 channels.wecom 配置(合并为一次读写)
|
|
85
|
+
console.log(chalk.blue('正在禁用冲突插件并清理配置...'));
|
|
86
|
+
const currentConfig = await config.readConfig();
|
|
87
|
+
const cleanedConfig = await plugin.disableConflictPlugins(currentConfig);
|
|
88
|
+
if (cleanedConfig.channels?.wecom) {
|
|
89
|
+
delete cleanedConfig.channels.wecom;
|
|
90
|
+
console.log(chalk.blue('已清除 channels.wecom 配置。'));
|
|
91
|
+
}
|
|
92
|
+
await config.writeConfig(cleanedConfig);
|
|
93
|
+
// 移除所有冲突目录
|
|
94
|
+
for (const conflictPath of constants.CONFLICT_PLUGIN_PATHS) {
|
|
95
|
+
if (await fs__namespace.pathExists(conflictPath)) {
|
|
96
|
+
console.log(chalk.blue(`正在移除冲突的插件目录: ${conflictPath}...`));
|
|
97
|
+
await fs__namespace.remove(conflictPath);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// 移除 wecom-openclaw-plugin 目录
|
|
101
|
+
if (await fs__namespace.pathExists(constants.PLUGIN_PATH)) {
|
|
102
|
+
console.log(chalk.blue(`正在移除插件目录: ${constants.PLUGIN_PATH}...`));
|
|
103
|
+
await fs__namespace.remove(constants.PLUGIN_PATH);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (await fs__namespace.pathExists(constants.PLUGIN_PATH)) {
|
|
107
|
+
// 1. 非 force 模式下检查已有安装,走更新流程
|
|
87
108
|
console.log(chalk.yellow('插件已安装,开始更新流程...'));
|
|
88
109
|
const newVersion = await update.updateCommand(options, true);
|
|
89
110
|
// 更新后验证配置
|
|
@@ -106,33 +127,33 @@ async function installCommand(options) {
|
|
|
106
127
|
const openclawCmd = system.getPlatformCommand('openclaw');
|
|
107
128
|
const version = system.runCommandQuiet(`${openclawCmd} --version`);
|
|
108
129
|
if (plugin.compareVersions(version, '2026.2.13') < 0) {
|
|
109
|
-
console.error(chalk.red(`错误: OpenClaw 版本不匹配,需要 >= 2026.2.13,当前版本 ${version}
|
|
130
|
+
console.error(chalk.red(`错误: OpenClaw 版本不匹配,需要 >= 2026.2.13,当前版本 ${version},请升级: openclaw update。`));
|
|
110
131
|
process.exit(1);
|
|
111
132
|
}
|
|
112
133
|
}
|
|
113
134
|
catch (error) {
|
|
114
135
|
const isWin = process.platform === 'win32';
|
|
115
|
-
console.error(chalk.red('错误: OpenClaw 未安装或未添加到 PATH 环境变量。'));
|
|
136
|
+
console.error(chalk.red('错误: OpenClaw 未安装或未添加到 PATH 环境变量。 https://openclaw.ai/'));
|
|
116
137
|
if (isWin) {
|
|
117
138
|
console.error(chalk.yellow('提示: Windows 用户请确认已将 OpenClaw 安装目录添加到系统 PATH 中,安装后可能需要重启终端。'));
|
|
118
139
|
}
|
|
119
140
|
process.exit(1);
|
|
120
141
|
}
|
|
121
|
-
// 4.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
142
|
+
// 4. 禁用冲突插件(force 模式下已在前面执行过,跳过)
|
|
143
|
+
if (!options.force) {
|
|
144
|
+
console.log(chalk.blue('正在禁用冲突插件...'));
|
|
145
|
+
await plugin.disableConflictPlugins();
|
|
146
|
+
// 5. 移除冲突目录
|
|
147
|
+
for (const conflictPath of constants.CONFLICT_PLUGIN_PATHS) {
|
|
148
|
+
if (await fs__namespace.pathExists(conflictPath)) {
|
|
149
|
+
console.log(chalk.blue(`正在移除冲突的插件目录: ${conflictPath}...`));
|
|
150
|
+
await fs__namespace.remove(conflictPath);
|
|
151
|
+
}
|
|
131
152
|
}
|
|
132
153
|
}
|
|
133
154
|
// 6. 安装官方插件
|
|
134
155
|
console.log(chalk.blue('正在安装官方 WeCom 插件...'));
|
|
135
|
-
const installed = plugin.installPluginFromRegistry(options.version);
|
|
156
|
+
const installed = plugin.installPluginFromRegistry(options.version, options.packageName);
|
|
136
157
|
if (!installed) {
|
|
137
158
|
process.exit(1);
|
|
138
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sources":["../../src/commands/install.ts"],"sourcesContent":[null],"names":["readConfig","promptConfirmBotId","promptBotId","promptSecret","PLUGIN_NAME","writeConfig","fs","PLUGIN_PATH","updateCommand","validateVersion","getPlatformCommand","runCommandQuiet","compareVersions","
|
|
1
|
+
{"version":3,"file":"install.js","sources":["../../src/commands/install.ts"],"sourcesContent":[null],"names":["readConfig","promptConfirmBotId","promptBotId","promptSecret","PLUGIN_NAME","writeConfig","disableConflictPlugins","CONFLICT_PLUGIN_PATHS","fs","PLUGIN_PATH","updateCommand","validateVersion","getPlatformCommand","runCommandQuiet","compareVersions","installPluginFromRegistry","path"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EACnD,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoC7B"}
|
package/dist/commands/update.js
CHANGED
|
@@ -1,32 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var fs = require('fs-extra');
|
|
4
3
|
var chalk = require('chalk');
|
|
5
|
-
var config = require('../utils/config.js');
|
|
6
4
|
var system = require('../utils/system.js');
|
|
7
5
|
var doctor = require('./doctor.js');
|
|
8
|
-
var constants = require('../utils/constants.js');
|
|
9
6
|
var plugin = require('../utils/plugin.js');
|
|
10
7
|
|
|
11
|
-
function _interopNamespaceDefault(e) {
|
|
12
|
-
var n = Object.create(null);
|
|
13
|
-
if (e) {
|
|
14
|
-
Object.keys(e).forEach(function (k) {
|
|
15
|
-
if (k !== 'default') {
|
|
16
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
get: function () { return e[k]; }
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
n.default = e;
|
|
25
|
-
return Object.freeze(n);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
|
|
29
|
-
|
|
30
8
|
/**
|
|
31
9
|
* update 命令
|
|
32
10
|
*/
|
|
@@ -37,51 +15,15 @@ async function updateCommand(options, silent = false) {
|
|
|
37
15
|
console.error(chalk.red('错误: 版本号格式不合法,只允许数字、点、连字符和字母。'));
|
|
38
16
|
process.exit(1);
|
|
39
17
|
}
|
|
40
|
-
// 2.
|
|
41
|
-
console.log(chalk.blue('
|
|
42
|
-
const
|
|
43
|
-
const configBackup = JSON.parse(JSON.stringify(config$1));
|
|
44
|
-
// 移除 plugins.entries 中的插件配置
|
|
45
|
-
if (config$1.plugins?.entries?.[constants.PLUGIN_NAME]) {
|
|
46
|
-
delete config$1.plugins.entries[constants.PLUGIN_NAME];
|
|
47
|
-
}
|
|
48
|
-
// 从 plugins.allow 中移除当前插件和冲突插件
|
|
49
|
-
if (config$1.plugins?.allow) {
|
|
50
|
-
config$1.plugins.allow = config$1.plugins.allow.filter((name) => name !== constants.PLUGIN_NAME && !constants.CONFLICT_PLUGINS.includes(name));
|
|
51
|
-
}
|
|
52
|
-
await config.writeConfig(config$1);
|
|
53
|
-
// 3. 删除旧文件
|
|
54
|
-
// 确保 cwd 不在即将被删除的目录内,防止 uv_cwd 错误
|
|
55
|
-
system.ensureSafeCwd([constants.PLUGIN_PATH], constants.EXTENSIONS_DIR);
|
|
56
|
-
console.log(chalk.blue('正在移除旧版插件文件...'));
|
|
57
|
-
if (await fs__namespace.pathExists(constants.PLUGIN_PATH)) {
|
|
58
|
-
await fs__namespace.remove(constants.PLUGIN_PATH);
|
|
59
|
-
}
|
|
60
|
-
// 4. 安装新版本
|
|
61
|
-
console.log(chalk.blue('正在安装新版本...'));
|
|
62
|
-
const installed = plugin.installPluginFromRegistry(options.version);
|
|
18
|
+
// 2. 更新插件
|
|
19
|
+
console.log(chalk.blue('正在更新插件...'));
|
|
20
|
+
const installed = plugin.updatePluginFromRegistry(options.version, options.packageName);
|
|
63
21
|
if (!installed) {
|
|
64
|
-
// 安装失败时回滚配置
|
|
65
|
-
console.log(chalk.yellow('正在回滚配置...'));
|
|
66
|
-
await config.writeConfig(configBackup);
|
|
67
22
|
process.exit(1);
|
|
68
23
|
}
|
|
69
|
-
//
|
|
70
|
-
console.log(chalk.blue('正在更新配置...'));
|
|
71
|
-
const newConfig = await config.readConfig();
|
|
72
|
-
if (!newConfig.plugins)
|
|
73
|
-
newConfig.plugins = {};
|
|
74
|
-
if (!newConfig.plugins.allow)
|
|
75
|
-
newConfig.plugins.allow = [];
|
|
76
|
-
if (!newConfig.plugins.allow.includes(constants.PLUGIN_NAME)) {
|
|
77
|
-
newConfig.plugins.allow.push(constants.PLUGIN_NAME);
|
|
78
|
-
}
|
|
79
|
-
// 禁用冲突插件并从 allow 列表移除
|
|
80
|
-
await plugin.disableConflictPlugins(newConfig);
|
|
81
|
-
await config.writeConfig(newConfig);
|
|
82
|
-
// 6. 运行 Doctor 检查
|
|
24
|
+
// 3. 运行 Doctor 检查(仅诊断,doctor 内部会输出检查结果)
|
|
83
25
|
await doctor.doctorCommand();
|
|
84
|
-
//
|
|
26
|
+
// 4. 报告结果和版本
|
|
85
27
|
const version = await plugin.getPluginVersion();
|
|
86
28
|
if (version) {
|
|
87
29
|
if (!silent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sources":["../../src/commands/update.ts"],"sourcesContent":[null],"names":["validateVersion","
|
|
1
|
+
{"version":3,"file":"update.js","sources":["../../src/commands/update.ts"],"sourcesContent":[null],"names":["validateVersion","updatePluginFromRegistry","doctorCommand","getPluginVersion"],"mappings":";;;;;;;AAKA;;AAEG;AACI,eAAe,aAAa,CACjC,OAAmD,EACnD,SAAkB,KAAK,EAAA;IAEvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAGpC,IAAA,IAAI,OAAO,CAAC,OAAO,IAAI,CAACA,sBAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACxD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AACxD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;;IAGA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC,IAAA,MAAM,SAAS,GAAGC,+BAAwB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC;IAChF,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;;IAGA,MAAMC,oBAAa,EAAE;;AAGrB,IAAA,MAAM,OAAO,GAAG,MAAMC,uBAAgB,EAAE;IACxC,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,UAAA,EAAa,OAAO,CAAA,CAAE,CAAC,CAAC;QAClD;IACF;SAAO;QACL,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,sCAAsC,CACvC,CACF;QACH;IACF;AAEA,IAAA,OAAO,OAAO;AAChB;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,8 @@ program
|
|
|
22
22
|
.command('install')
|
|
23
23
|
.description('安装并配置企业微信官方插件')
|
|
24
24
|
.option('--version <version>', '安装指定版本的插件')
|
|
25
|
+
.option('--package-name <packageName>', '指定 npm 包名(默认 @wecom/wecom-openclaw-plugin)')
|
|
26
|
+
.option('--force', '强制重新安装,清除已有插件和配置')
|
|
25
27
|
.action(async (options) => {
|
|
26
28
|
await install.installCommand(options);
|
|
27
29
|
});
|
|
@@ -46,6 +48,7 @@ program
|
|
|
46
48
|
.command('update')
|
|
47
49
|
.description('更新企业微信官方插件')
|
|
48
50
|
.option('--version <version>', '更新到指定版本的插件')
|
|
51
|
+
.option('--package-name <packageName>', '指定 npm 包名(默认 @wecom/wecom-openclaw-plugin)')
|
|
49
52
|
.action(async (options) => {
|
|
50
53
|
await update.updateCommand(options);
|
|
51
54
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":["Command","pkg","installCommand","infoCommand","doctorCommand","updateCommand"],"mappings":";;;;;;;;;;AAOA;AACA,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,KAAI;AACvC,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC;AAC7B,IAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,IAAIA,iBAAO,EAAE;AAE7B;KACG,IAAI,CAAC,oBAAoB;KACzB,WAAW,CAAC,sBAAsB;AAClC,KAAA,OAAO,CAACC,gBAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC;AAE5C;KACG,OAAO,CAAC,SAAS;KACjB,WAAW,CAAC,eAAe;AAC3B,KAAA,MAAM,CAAC,qBAAqB,EAAE,WAAW;AACzC,KAAA,MAAM,CAAC,OAAO,OAAO,KAAI;AACxB,IAAA,MAAMC,sBAAc,CAAC,OAAO,CAAC;AAC/B,CAAC,CAAC;AAEJ;KACG,OAAO,CAAC,MAAM;KACd,WAAW,CAAC,QAAQ;AACpB,KAAA,MAAM,CAAC,OAAO,EAAE,eAAe;AAC/B,KAAA,MAAM,CAAC,OAAO,OAAO,KAAI;AACxB,IAAA,MAAMC,gBAAW,CAAC,OAAO,CAAC;AAC5B,CAAC,CAAC;AAEJ;KACG,OAAO,CAAC,QAAQ;KAChB,WAAW,CAAC,QAAQ;AACpB,KAAA,MAAM,CAAC,OAAO,EAAE,UAAU;AAC1B,KAAA,MAAM,CAAC,OAAO,OAAO,KAAI;AACxB,IAAA,MAAM,MAAM,GAAG,MAAMC,oBAAa,CAAC,OAAO,CAAC;IAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC3B,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AACF,CAAC,CAAC;AAEJ;KACG,OAAO,CAAC,QAAQ;KAChB,WAAW,CAAC,YAAY;AACxB,KAAA,MAAM,CAAC,qBAAqB,EAAE,YAAY;AAC1C,KAAA,MAAM,CAAC,OAAO,OAAO,KAAI;AACxB,IAAA,MAAMC,oBAAa,CAAC,OAAO,CAAC;AAC9B,CAAC,CAAC;AAEJ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":["Command","pkg","installCommand","infoCommand","doctorCommand","updateCommand"],"mappings":";;;;;;;;;;AAOA;AACA,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,KAAI;AACvC,IAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC;AAC7B,IAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,IAAIA,iBAAO,EAAE;AAE7B;KACG,IAAI,CAAC,oBAAoB;KACzB,WAAW,CAAC,sBAAsB;AAClC,KAAA,OAAO,CAACC,gBAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC;AAE5C;KACG,OAAO,CAAC,SAAS;KACjB,WAAW,CAAC,eAAe;AAC3B,KAAA,MAAM,CAAC,qBAAqB,EAAE,WAAW;AACzC,KAAA,MAAM,CAAC,8BAA8B,EAAE,4CAA4C;AACnF,KAAA,MAAM,CAAC,SAAS,EAAE,kBAAkB;AACpC,KAAA,MAAM,CAAC,OAAO,OAAO,KAAI;AACxB,IAAA,MAAMC,sBAAc,CAAC,OAAO,CAAC;AAC/B,CAAC,CAAC;AAEJ;KACG,OAAO,CAAC,MAAM;KACd,WAAW,CAAC,QAAQ;AACpB,KAAA,MAAM,CAAC,OAAO,EAAE,eAAe;AAC/B,KAAA,MAAM,CAAC,OAAO,OAAO,KAAI;AACxB,IAAA,MAAMC,gBAAW,CAAC,OAAO,CAAC;AAC5B,CAAC,CAAC;AAEJ;KACG,OAAO,CAAC,QAAQ;KAChB,WAAW,CAAC,QAAQ;AACpB,KAAA,MAAM,CAAC,OAAO,EAAE,UAAU;AAC1B,KAAA,MAAM,CAAC,OAAO,OAAO,KAAI;AACxB,IAAA,MAAM,MAAM,GAAG,MAAMC,oBAAa,CAAC,OAAO,CAAC;IAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC3B,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AACF,CAAC,CAAC;AAEJ;KACG,OAAO,CAAC,QAAQ;KAChB,WAAW,CAAC,YAAY;AACxB,KAAA,MAAM,CAAC,qBAAqB,EAAE,YAAY;AAC1C,KAAA,MAAM,CAAC,8BAA8B,EAAE,4CAA4C;AACnF,KAAA,MAAM,CAAC,OAAO,OAAO,KAAI;AACxB,IAAA,MAAMC,oBAAa,CAAC,OAAO,CAAC;AAC9B,CAAC,CAAC;AAEJ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;;"}
|
package/dist/package.json.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var name = "@wecom/wecom-openclaw-cli";
|
|
6
|
-
var version = "1.0.
|
|
6
|
+
var version = "1.0.9";
|
|
7
7
|
var description = "CLI for managing WeCom official plugin for OpenClaw";
|
|
8
8
|
var main = "dist/index.js";
|
|
9
9
|
var type = "commonjs";
|
|
@@ -4,8 +4,8 @@ export declare const EXTENSIONS_DIR: string;
|
|
|
4
4
|
export declare const PLUGIN_NAME = "wecom-openclaw-plugin";
|
|
5
5
|
/** 插件安装路径 */
|
|
6
6
|
export declare const PLUGIN_PATH: string;
|
|
7
|
-
/** npm 包名 */
|
|
8
|
-
export declare const
|
|
7
|
+
/** 默认 npm 包名 */
|
|
8
|
+
export declare const DEFAULT_PACKAGE_NAME = "@wecom/wecom-openclaw-plugin";
|
|
9
9
|
/** 冲突的插件名称列表 */
|
|
10
10
|
export declare const CONFLICT_PLUGINS: string[];
|
|
11
11
|
/** 冲突的插件路径列表 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAGA,aAAa;AACb,eAAO,MAAM,cAAc,QAAqB,CAAC;AAEjD,WAAW;AACX,eAAO,MAAM,WAAW,0BAA0B,CAAC;AAEnD,aAAa;AACb,eAAO,MAAM,WAAW,QAAyC,CAAC;AAElE,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAGA,aAAa;AACb,eAAO,MAAM,cAAc,QAAqB,CAAC;AAEjD,WAAW;AACX,eAAO,MAAM,WAAW,0BAA0B,CAAC;AAEnD,aAAa;AACb,eAAO,MAAM,WAAW,QAAyC,CAAC;AAElE,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,iCAAiC,CAAC;AAEnE,gBAAgB;AAChB,eAAO,MAAM,gBAAgB,UAAgD,CAAC;AAE9E,gBAAgB;AAChB,eAAO,MAAM,qBAAqB,UAAgE,CAAC;AAEnG,oCAAoC;AACpC,eAAO,MAAM,cAAc,UAG1B,CAAC"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -28,8 +28,8 @@ const EXTENSIONS_DIR = config.getExtensionsDir();
|
|
|
28
28
|
const PLUGIN_NAME = 'wecom-openclaw-plugin';
|
|
29
29
|
/** 插件安装路径 */
|
|
30
30
|
const PLUGIN_PATH = path__namespace.join(EXTENSIONS_DIR, PLUGIN_NAME);
|
|
31
|
-
/** npm 包名 */
|
|
32
|
-
const
|
|
31
|
+
/** 默认 npm 包名 */
|
|
32
|
+
const DEFAULT_PACKAGE_NAME = '@wecom/wecom-openclaw-plugin';
|
|
33
33
|
/** 冲突的插件名称列表 */
|
|
34
34
|
const CONFLICT_PLUGINS = ['wecom', 'openclaw-wecom', 'wecom-openclaw'];
|
|
35
35
|
/** 冲突的插件路径列表 */
|
|
@@ -42,9 +42,9 @@ const NPM_REGISTRIES = [
|
|
|
42
42
|
|
|
43
43
|
exports.CONFLICT_PLUGINS = CONFLICT_PLUGINS;
|
|
44
44
|
exports.CONFLICT_PLUGIN_PATHS = CONFLICT_PLUGIN_PATHS;
|
|
45
|
+
exports.DEFAULT_PACKAGE_NAME = DEFAULT_PACKAGE_NAME;
|
|
45
46
|
exports.EXTENSIONS_DIR = EXTENSIONS_DIR;
|
|
46
47
|
exports.NPM_REGISTRIES = NPM_REGISTRIES;
|
|
47
|
-
exports.PACKAGE_NAME = PACKAGE_NAME;
|
|
48
48
|
exports.PLUGIN_NAME = PLUGIN_NAME;
|
|
49
49
|
exports.PLUGIN_PATH = PLUGIN_PATH;
|
|
50
50
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../src/utils/constants.ts"],"sourcesContent":[null],"names":["getExtensionsDir","path"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACO,MAAM,cAAc,GAAGA,uBAAgB;AAE9C;AACO,MAAM,WAAW,GAAG;AAE3B;AACO,MAAM,WAAW,GAAGC,eAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW;AAEhE;AACO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../src/utils/constants.ts"],"sourcesContent":[null],"names":["getExtensionsDir","path"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACO,MAAM,cAAc,GAAGA,uBAAgB;AAE9C;AACO,MAAM,WAAW,GAAG;AAE3B;AACO,MAAM,WAAW,GAAGC,eAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW;AAEhE;AACO,MAAM,oBAAoB,GAAG;AAEpC;AACO,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB;AAE5E;MACa,qBAAqB,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAIA,eAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;AAEjG;AACO,MAAM,cAAc,GAAG;IAC5B,uCAAuC;IACvC,6BAA6B;;;;;;;;;;;"}
|
package/dist/utils/plugin.d.ts
CHANGED
|
@@ -7,12 +7,21 @@ export declare function compareVersions(v1: string, v2: string): number;
|
|
|
7
7
|
* 从多个 npm 源尝试安装插件
|
|
8
8
|
* @returns 是否安装成功
|
|
9
9
|
*/
|
|
10
|
-
export declare function installPluginFromRegistry(version?: string): boolean;
|
|
10
|
+
export declare function installPluginFromRegistry(version?: string, packageName?: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* 从多个 npm 源尝试更新插件(插件已安装时使用)
|
|
13
|
+
* @returns 是否更新成功
|
|
14
|
+
*/
|
|
15
|
+
export declare function updatePluginFromRegistry(version?: string, packageName?: string): boolean;
|
|
11
16
|
/**
|
|
12
17
|
* 获取已安装插件的版本号
|
|
13
18
|
* @returns 版本号字符串,未安装或读取失败时返回 undefined
|
|
14
19
|
*/
|
|
15
20
|
export declare function getPluginVersion(): Promise<string | undefined>;
|
|
21
|
+
/**
|
|
22
|
+
* 获取插件 package.json 中的 name 字段
|
|
23
|
+
*/
|
|
24
|
+
export declare function getPluginPackageName(): Promise<string | undefined>;
|
|
16
25
|
/**
|
|
17
26
|
* 移除冲突插件配置
|
|
18
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/utils/plugin.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/utils/plugin.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CA2BzF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CA0BxF;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAWpE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAWxE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAkCvE"}
|
package/dist/utils/plugin.js
CHANGED
|
@@ -56,10 +56,11 @@ function compareVersions(v1, v2) {
|
|
|
56
56
|
* 从多个 npm 源尝试安装插件
|
|
57
57
|
* @returns 是否安装成功
|
|
58
58
|
*/
|
|
59
|
-
function installPluginFromRegistry(version) {
|
|
59
|
+
function installPluginFromRegistry(version, packageName) {
|
|
60
|
+
const resolvedPackageName = packageName || constants.DEFAULT_PACKAGE_NAME;
|
|
60
61
|
const packageIdentifier = version
|
|
61
|
-
? `${
|
|
62
|
-
:
|
|
62
|
+
? `${resolvedPackageName}@${version}`
|
|
63
|
+
: resolvedPackageName;
|
|
63
64
|
const openclawCmd = system.getPlatformCommand('openclaw');
|
|
64
65
|
for (let i = 0; i < constants.NPM_REGISTRIES.length; i++) {
|
|
65
66
|
const registry = constants.NPM_REGISTRIES[i];
|
|
@@ -81,6 +82,35 @@ function installPluginFromRegistry(version) {
|
|
|
81
82
|
}
|
|
82
83
|
return false;
|
|
83
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* 从多个 npm 源尝试更新插件(插件已安装时使用)
|
|
87
|
+
* @returns 是否更新成功
|
|
88
|
+
*/
|
|
89
|
+
function updatePluginFromRegistry(version, packageName) {
|
|
90
|
+
const resolvedPackageName = packageName || constants.DEFAULT_PACKAGE_NAME;
|
|
91
|
+
const packageIdentifier = version
|
|
92
|
+
? `${resolvedPackageName}@${version}`
|
|
93
|
+
: resolvedPackageName;
|
|
94
|
+
const openclawCmd = system.getPlatformCommand('openclaw');
|
|
95
|
+
for (let i = 0; i < constants.NPM_REGISTRIES.length; i++) {
|
|
96
|
+
const registry = constants.NPM_REGISTRIES[i];
|
|
97
|
+
try {
|
|
98
|
+
console.log(chalk.blue(`正在从 ${registry} 更新插件 ${packageIdentifier}...`));
|
|
99
|
+
system.runCommandWithEnv(`${openclawCmd} plugins update ${packageIdentifier}`, { npm_config_registry: registry });
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (i < constants.NPM_REGISTRIES.length - 1) {
|
|
104
|
+
console.warn(chalk.yellow(`从 ${registry} 更新失败,正在切换到备用源重试...`));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
console.error(chalk.red('所有 npm 源均更新失败。'));
|
|
108
|
+
console.error(error);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
84
114
|
/**
|
|
85
115
|
* 获取已安装插件的版本号
|
|
86
116
|
* @returns 版本号字符串,未安装或读取失败时返回 undefined
|
|
@@ -98,6 +128,22 @@ async function getPluginVersion() {
|
|
|
98
128
|
}
|
|
99
129
|
return undefined;
|
|
100
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* 获取插件 package.json 中的 name 字段
|
|
133
|
+
*/
|
|
134
|
+
async function getPluginPackageName() {
|
|
135
|
+
const packageJsonPath = path__namespace.join(constants.PLUGIN_PATH, 'package.json');
|
|
136
|
+
if (await fs__namespace.pathExists(packageJsonPath)) {
|
|
137
|
+
try {
|
|
138
|
+
const pkgJson = await fs__namespace.readJSON(packageJsonPath);
|
|
139
|
+
return pkgJson.name;
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// 读取失败
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
101
147
|
/**
|
|
102
148
|
* 移除冲突插件配置
|
|
103
149
|
*/
|
|
@@ -134,6 +180,8 @@ async function disableConflictPlugins(config$1) {
|
|
|
134
180
|
|
|
135
181
|
exports.compareVersions = compareVersions;
|
|
136
182
|
exports.disableConflictPlugins = disableConflictPlugins;
|
|
183
|
+
exports.getPluginPackageName = getPluginPackageName;
|
|
137
184
|
exports.getPluginVersion = getPluginVersion;
|
|
138
185
|
exports.installPluginFromRegistry = installPluginFromRegistry;
|
|
186
|
+
exports.updatePluginFromRegistry = updatePluginFromRegistry;
|
|
139
187
|
//# sourceMappingURL=plugin.js.map
|
package/dist/utils/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../src/utils/plugin.ts"],"sourcesContent":[null],"names":["
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../src/utils/plugin.ts"],"sourcesContent":[null],"names":["DEFAULT_PACKAGE_NAME","getPlatformCommand","NPM_REGISTRIES","runCommandWithEnv","path","PLUGIN_PATH","fs","config","readConfig","CONFLICT_PLUGINS","writeConfig"],"mappings":"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"}
|
package/dist/utils/system.d.ts
CHANGED
|
@@ -34,13 +34,4 @@ export declare function runCommandQuiet(command: string, options?: {
|
|
|
34
34
|
* 只允许数字、点、连字符和字母(如 1.0.0、1.0.0-beta.1)
|
|
35
35
|
*/
|
|
36
36
|
export declare function validateVersion(version: string): boolean;
|
|
37
|
-
/**
|
|
38
|
-
* 确保当前工作目录(cwd)不在即将被删除的目录内。
|
|
39
|
-
* 如果 cwd 位于待删除的目录下,或者 cwd 已经失效,则切换到指定的安全目录。
|
|
40
|
-
* 解决:用户在插件目录下执行命令,目录被删除后 Node.js 报 uv_cwd 错误的问题。
|
|
41
|
-
*
|
|
42
|
-
* @param pathsToRemove 即将被删除的目录路径列表
|
|
43
|
-
* @param safeDir 安全的回退目录
|
|
44
|
-
*/
|
|
45
|
-
export declare function ensureSafeCwd(pathsToRemove: string[], safeDir: string): void;
|
|
46
37
|
//# sourceMappingURL=system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/utils/system.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAUD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAUhF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,IAAI,CAWN;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAUvF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/utils/system.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAUD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAUhF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,IAAI,CAWN;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAUvF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD"}
|
package/dist/utils/system.js
CHANGED
|
@@ -99,30 +99,7 @@ function runCommandQuiet(command, options = {}) {
|
|
|
99
99
|
function validateVersion(version) {
|
|
100
100
|
return /^[a-zA-Z0-9.\-]+$/.test(version);
|
|
101
101
|
}
|
|
102
|
-
/**
|
|
103
|
-
* 确保当前工作目录(cwd)不在即将被删除的目录内。
|
|
104
|
-
* 如果 cwd 位于待删除的目录下,或者 cwd 已经失效,则切换到指定的安全目录。
|
|
105
|
-
* 解决:用户在插件目录下执行命令,目录被删除后 Node.js 报 uv_cwd 错误的问题。
|
|
106
|
-
*
|
|
107
|
-
* @param pathsToRemove 即将被删除的目录路径列表
|
|
108
|
-
* @param safeDir 安全的回退目录
|
|
109
|
-
*/
|
|
110
|
-
function ensureSafeCwd(pathsToRemove, safeDir) {
|
|
111
|
-
let cwd;
|
|
112
|
-
try {
|
|
113
|
-
cwd = process.cwd();
|
|
114
|
-
}
|
|
115
|
-
catch {
|
|
116
|
-
// cwd 已经失效(目录已被删除),直接切换到安全目录
|
|
117
|
-
process.chdir(safeDir);
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
if (pathsToRemove.some(p => cwd === p || cwd.startsWith(p + '/'))) {
|
|
121
|
-
process.chdir(safeDir);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
102
|
|
|
125
|
-
exports.ensureSafeCwd = ensureSafeCwd;
|
|
126
103
|
exports.getPlatformCommand = getPlatformCommand;
|
|
127
104
|
exports.isWindows = isWindows;
|
|
128
105
|
exports.runCommand = runCommand;
|
package/dist/utils/system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sources":["../../src/utils/system.ts"],"sourcesContent":[null],"names":["os","execSync"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAEG;SACa,SAAS,GAAA;AACvB,IAAA,OAAOA,aAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;AAClC;AAEA;;;AAGG;AACH,SAAS,QAAQ,GAAA;IACf,OAAO,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS;AAC5C;AAEA;;;;AAIG;AACG,SAAU,kBAAkB,CAAC,OAAe,EAAA;AAChD,IAAA,OAAO,OAAO;AAChB;AAEA;;;AAGG;SACa,UAAU,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAA;AACxE,IAAA,IAAI;QACFC,sBAAQ,CAAC,OAAO,EAAE;AAChB,YAAA,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ,EAAE;AAClB,SAAA,CAAC;IACJ;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAA,CAAE,CAAC;IACvC;AACF;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAC/B,OAAe,EACf,QAAgC,EAChC,UAA4B,EAAE,EAAA;AAE9B,IAAA,IAAI;QACFA,sBAAQ,CAAC,OAAO,EAAE;AAChB,YAAA,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ,EAAE;YACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE;AACrC,SAAA,CAAC;IACJ;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAA,CAAE,CAAC;IACvC;AACF;AAEA;;;AAGG;SACa,eAAe,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAA;AAC7E,IAAA,IAAI;QACF,OAAOA,sBAAQ,CAAC,OAAO,EAAE;AACvB,YAAA,QAAQ,EAAE,OAAO;YACjB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ,EAAE;SAClB,CAAC,CAAC,IAAI,EAAE;IACX;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAA,CAAE,CAAC;IACvC;AACF;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,OAAe,EAAA;AAC7C,IAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1C
|
|
1
|
+
{"version":3,"file":"system.js","sources":["../../src/utils/system.ts"],"sourcesContent":[null],"names":["os","execSync"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAEG;SACa,SAAS,GAAA;AACvB,IAAA,OAAOA,aAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;AAClC;AAEA;;;AAGG;AACH,SAAS,QAAQ,GAAA;IACf,OAAO,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS;AAC5C;AAEA;;;;AAIG;AACG,SAAU,kBAAkB,CAAC,OAAe,EAAA;AAChD,IAAA,OAAO,OAAO;AAChB;AAEA;;;AAGG;SACa,UAAU,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAA;AACxE,IAAA,IAAI;QACFC,sBAAQ,CAAC,OAAO,EAAE;AAChB,YAAA,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ,EAAE;AAClB,SAAA,CAAC;IACJ;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAA,CAAE,CAAC;IACvC;AACF;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAC/B,OAAe,EACf,QAAgC,EAChC,UAA4B,EAAE,EAAA;AAE9B,IAAA,IAAI;QACFA,sBAAQ,CAAC,OAAO,EAAE;AAChB,YAAA,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ,EAAE;YACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE;AACrC,SAAA,CAAC;IACJ;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAA,CAAE,CAAC;IACvC;AACF;AAEA;;;AAGG;SACa,eAAe,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAA;AAC7E,IAAA,IAAI;QACF,OAAOA,sBAAQ,CAAC,OAAO,EAAE;AACvB,YAAA,QAAQ,EAAE,OAAO;YACjB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ,EAAE;SAClB,CAAC,CAAC,IAAI,EAAE;IACX;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAA,CAAE,CAAC;IACvC;AACF;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,OAAe,EAAA;AAC7C,IAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1C;;;;;;;;;"}
|