tmuxclihook 0.3.4 → 0.3.5
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/package.json +1 -1
- package/src/update.js +22 -17
package/package.json
CHANGED
package/src/update.js
CHANGED
|
@@ -12,8 +12,9 @@ export const CURRENT_VERSION = packageJson.version;
|
|
|
12
12
|
// `npm install -g` 在版本管理器(volta 等)环境下不会更新其管理的 shim:
|
|
13
13
|
// volta 的 `~/.volta/bin` shim 指向 packages/ 镜像,而 npm -g 只写 node
|
|
14
14
|
// 工具链目录,两者互不感知(实测 0.3.0 → 0.3.2 升级时用户命令仍解析到
|
|
15
|
-
//
|
|
16
|
-
//
|
|
15
|
+
// 旧版)。生效收敛由 repairWithVolta 无条件完成(见下);本节自检只是
|
|
16
|
+
// 事后确认:按 update 进程的 PATH 解析一份,尽力读取真实版本并与
|
|
17
|
+
// registry latest 比对,无法确认或版本不符时打警告。
|
|
17
18
|
// 验证是尽力而为的提示,不改变 update 的返回值(install 本身已成功)。
|
|
18
19
|
|
|
19
20
|
function findOnPath(name, env) {
|
|
@@ -95,9 +96,12 @@ function warnNotEffective(log, result) {
|
|
|
95
96
|
|
|
96
97
|
// volta 生效修正:`npm install -g` 只写 node 工具链目录,不更新 volta 的
|
|
97
98
|
// shim 镜像(实测 volta 2.0.2:shim npm 的全局 prefix 就是工具链目录),
|
|
98
|
-
// 用户的命令经 ~/.volta/bin shim
|
|
99
|
-
//
|
|
100
|
-
//
|
|
99
|
+
// 用户的命令经 ~/.volta/bin shim 解析时仍是旧版。因此只要检测到 volta
|
|
100
|
+
// 就无条件补一次 volta install 完成生效(幂等,已是最新时秒回)。不走
|
|
101
|
+
// 「自检失败才修」的条件路径:自检按 update 进程自己的 PATH 找第一份,
|
|
102
|
+
// 可能恰好命中 npm -g 刚写的那份而误判 ok(实测 0.3.3 → 0.3.4:verify
|
|
103
|
+
// 判 ok,修复从未触发,用户命令仍是旧版)。npm install -g 是安装语义,
|
|
104
|
+
// volta install 是生效语义,两者都执行;用户无需改变安装习惯。
|
|
101
105
|
export async function repairWithVolta(run, log, env = process.env) {
|
|
102
106
|
const voltaHome = env.VOLTA_HOME || join(env.HOME || '', '.volta');
|
|
103
107
|
const voltaBin = findOnPath('volta', env) || join(voltaHome, 'bin', 'volta');
|
|
@@ -149,19 +153,20 @@ export async function updatePackage(options = {}) {
|
|
|
149
153
|
|
|
150
154
|
log.log(`Done. Updated to v${latestVersion}`);
|
|
151
155
|
|
|
156
|
+
// 生效收敛:有 volta 就无条件跑(幂等;无 volta 时静默跳过,纯 npm 场景
|
|
157
|
+
// npm -g 本身已生效)。任何命令行执行 update 都能升级生效的关键。
|
|
158
|
+
if (repairVolta) {
|
|
159
|
+
await repairVolta(run, log);
|
|
160
|
+
}
|
|
161
|
+
|
|
152
162
|
if (verify) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
if (result.status === 'ok') {
|
|
161
|
-
log.log(`Verified: tmuxclihook on your PATH now resolves to v${latestVersion}.`);
|
|
162
|
-
} else {
|
|
163
|
-
warnNotEffective(log, result);
|
|
164
|
-
}
|
|
163
|
+
// 事后确认(尽力而为):两处落点都应已是新版,命中哪份都该 ok;
|
|
164
|
+
// 不 ok(如 PATH 上另有第三份旧安装)只警告,不影响返回值。
|
|
165
|
+
const result = await verify(latestVersion);
|
|
166
|
+
if (result.status === 'ok') {
|
|
167
|
+
log.log(`Verified: tmuxclihook on your PATH now resolves to v${latestVersion}.`);
|
|
168
|
+
} else {
|
|
169
|
+
warnNotEffective(log, result);
|
|
165
170
|
}
|
|
166
171
|
}
|
|
167
172
|
|