@bluelamp/cli-token 1.3.0-rc.0 → 1.4.0-rc.0
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 +11 -0
- package/dist/cjs/cli-update.js +222 -0
- package/dist/cjs/cli-update.js.map +1 -0
- package/dist/esm/cli-update.d.ts +93 -0
- package/dist/esm/cli-update.d.ts.map +1 -0
- package/dist/esm/cli-update.js +177 -0
- package/dist/esm/cli-update.js.map +1 -0
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -30,6 +30,17 @@ const maybe = tryReadCliToken();
|
|
|
30
30
|
| 艦隊の資格の門(1.1.0・n=2607) | `checkFleetGate` / `isAllowedForScope` / `getFleetEntitlementFilePath` / `getFleetGateLogPath` / `formatFleetGateLogLine` / `fleetGateRefusalMessage` / `parseFleetEntitlementCache` / `isFleetEntitlementFresh` |
|
|
31
31
|
| 交換済み JWT の機体共有キャッシュ(1.2.0・n=2774) | `getExchangedJwt` / `evictExchangedJwt` / `exchangedJwtCacheKey` / `getExchangedJwtCacheDir` / `parseCachedExchangedJwt` / `isCachedExchangedJwtUsable` |
|
|
32
32
|
| 機体の鍵・登録・札の延長(1.3.0・n=3918) | `startDeviceRegistration` / `pollDeviceRegistration` / `awaitDeviceApproval` / `saveApprovedDevice` / `loadOrCreateDeviceKey` / `readDeviceKey` / `signWithDeviceKey` / `devicePollMessage` / `tokenRefreshMessage` / `readDeviceId` / `saveDeviceId` / `ensureFreshCliToken` / `readFreshCliToken` / `needsRefresh` / `parseExpiresAt` |
|
|
33
|
+
| 発火の前の CLI の更新(1.4.0・n=4082・`@bluelamp/cli-token/cli-update`) | `updateCliToMin` / `fetchMinCliVersion` / `runNpmBesideNode` / `readPackageVersion` / `describeCliUpdate` / `isOlderThan` / `selfUpdatePackage` / `selfUpdateExecArgs` / `parseSelfUpdateLine` |
|
|
34
|
+
|
|
35
|
+
### 発火の前の CLI の更新(`@bluelamp/cli-token/cli-update`・1.4.0)
|
|
36
|
+
|
|
37
|
+
定期便(routine・scheduler)が席を立てる前に、席が使う BlueLamp CLI を最低版(`GET {bluelamp}/cli/min-version`)へ上げる**単一実装**(箱 n=4076 → n=4082)。
|
|
38
|
+
launchd の発火は PATH が `/usr/bin:/bin` だけで、6.7.2 以前の起動子は素の npm を見つけられず自己更新に失敗する。
|
|
39
|
+
|
|
40
|
+
- どの CLI を上げるかは呼び出し側が `locate`(package の dir と版)で渡す。routine=gateway の package/scheduler=起動子の package
|
|
41
|
+
- 古いときだけ node の隣の npm で `npm exec --yes --package=bluelamp@max(min,6.7.3) -- bluelamp-self-update --root <dir> --min <min>`(置き場の選び方は CLI の入口が持つ=ここは二重に作らない)
|
|
42
|
+
- 撃った後は `locate` を引き直して版を読む(入口の `ok` を鵜呑みにしない)。throw しない=上げられなくても便は今の版で走る
|
|
43
|
+
- 別の subpath にしてあるのは、トークンだけを使う消費側(VS Code 拡張の bundle)に child_process を引き込まないため
|
|
33
44
|
|
|
34
45
|
### 艦隊の資格の門(`checkFleetGate`)
|
|
35
46
|
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 発火の前に BlueLamp CLI を最低版へ上げる——routine と scheduler の**単一実装**(箱 n=4076 → n=4082 で共用へ)。
|
|
4
|
+
*
|
|
5
|
+
* 定期便(routine・scheduler)は launchd から起きる=PATH が /usr/bin:/bin だけ。6.7.2 以前の起動子は
|
|
6
|
+
* そこで素の npm を見つけられず自己更新に失敗し、古い gateway のまま load_knowledge を撃ち続ける(n=4058・n=4072)。
|
|
7
|
+
* ⇒ 席を立てる前に `/cli/min-version` と比べ、古いときだけ node の隣の npm で新しい版の入口を借りて上げる。
|
|
8
|
+
*
|
|
9
|
+
* ⛔ 置き場の選び方・npm の撃ち方は CLI の `bluelamp-self-update`(n=4072・selfUpdate.ts)が持つ。ここは二重に作らない。
|
|
10
|
+
* ここがするのは「古いかを測る」と「新しい版の入口を npm exec で借りて撃つ」だけ(古い版には入口が無い)。
|
|
11
|
+
* 「どの CLI を上げるか」は呼び出し側が locate で渡す(routine=gateway の package/scheduler=起動子の package)。
|
|
12
|
+
*
|
|
13
|
+
* 制約は index.ts と同じ: node 標準モジュール以外に依存しない・console に出さない・throw しない(結果は CliUpdate で返す)。
|
|
14
|
+
*/
|
|
15
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(o, k2, desc);
|
|
22
|
+
}) : (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
o[k2] = m[k];
|
|
25
|
+
}));
|
|
26
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
+
}) : function(o, v) {
|
|
29
|
+
o["default"] = v;
|
|
30
|
+
});
|
|
31
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
+
var ownKeys = function(o) {
|
|
33
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
+
var ar = [];
|
|
35
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
return ownKeys(o);
|
|
39
|
+
};
|
|
40
|
+
return function (mod) {
|
|
41
|
+
if (mod && mod.__esModule) return mod;
|
|
42
|
+
var result = {};
|
|
43
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
+
__setModuleDefault(result, mod);
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
})();
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.SELF_UPDATE_TIMEOUT_MS = exports.MIN_VERSION_TIMEOUT_MS = exports.SELF_UPDATE_DONE_ENV = exports.SELF_UPDATE_PACKAGE_ENV = exports.SELF_UPDATE_SINCE = exports.SELF_UPDATE_BIN = void 0;
|
|
50
|
+
exports.isOlderThan = isOlderThan;
|
|
51
|
+
exports.selfUpdatePackage = selfUpdatePackage;
|
|
52
|
+
exports.selfUpdateExecArgs = selfUpdateExecArgs;
|
|
53
|
+
exports.parseSelfUpdateLine = parseSelfUpdateLine;
|
|
54
|
+
exports.describeCliUpdate = describeCliUpdate;
|
|
55
|
+
exports.readPackageVersion = readPackageVersion;
|
|
56
|
+
exports.fetchMinCliVersion = fetchMinCliVersion;
|
|
57
|
+
exports.runNpmBesideNode = runNpmBesideNode;
|
|
58
|
+
exports.updateCliToMin = updateCliToMin;
|
|
59
|
+
const node_child_process_1 = require("node:child_process");
|
|
60
|
+
const fs = __importStar(require("node:fs"));
|
|
61
|
+
const os = __importStar(require("node:os"));
|
|
62
|
+
const path = __importStar(require("node:path"));
|
|
63
|
+
/** CLI の更新だけの入口(n=4072) */
|
|
64
|
+
exports.SELF_UPDATE_BIN = 'bluelamp-self-update';
|
|
65
|
+
/** 入口が入った最初の版。min がこれより低くても、入口はこの版から借りる */
|
|
66
|
+
exports.SELF_UPDATE_SINCE = '6.7.3';
|
|
67
|
+
/** 入口を借りる package を上書きする env(rc を撃つ検体のため。例 bluelamp@6.7.3-rc.1) */
|
|
68
|
+
exports.SELF_UPDATE_PACKAGE_ENV = 'BLUELAMP_SELF_UPDATE_PACKAGE';
|
|
69
|
+
/** 起動子が子へ渡す「もう上げた」の印(n=4072)。npm の子へは渡さない */
|
|
70
|
+
exports.SELF_UPDATE_DONE_ENV = 'BLUELAMP_SELFUPDATE_DONE';
|
|
71
|
+
exports.MIN_VERSION_TIMEOUT_MS = 2500;
|
|
72
|
+
/** npm exec(入口の取得+npm install)を待つ上限 */
|
|
73
|
+
exports.SELF_UPDATE_TIMEOUT_MS = 180_000;
|
|
74
|
+
/** 版の比較(a < b)。起動子の isOlderThan と同じ数え方(数字以外は 0) */
|
|
75
|
+
function isOlderThan(a, b) {
|
|
76
|
+
const parse = (v) => String(v)
|
|
77
|
+
.trim()
|
|
78
|
+
.split('.')
|
|
79
|
+
.map((p) => {
|
|
80
|
+
const n = parseInt(p, 10);
|
|
81
|
+
return Number.isFinite(n) ? n : 0;
|
|
82
|
+
});
|
|
83
|
+
const pa = parse(a);
|
|
84
|
+
const pb = parse(b);
|
|
85
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
86
|
+
const x = pa[i] ?? 0;
|
|
87
|
+
const y = pb[i] ?? 0;
|
|
88
|
+
if (x !== y)
|
|
89
|
+
return x < y;
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
/** 入口を借りる package(env の上書き>max(min, 入口の版)) */
|
|
94
|
+
function selfUpdatePackage(minVersion, override) {
|
|
95
|
+
if (override && override.trim())
|
|
96
|
+
return override.trim();
|
|
97
|
+
return `bluelamp@${isOlderThan(minVersion, exports.SELF_UPDATE_SINCE) ? exports.SELF_UPDATE_SINCE : minVersion}`;
|
|
98
|
+
}
|
|
99
|
+
/** `npm` に渡す引数(⛔ @latest にしない・入れる版は --min で名指し) */
|
|
100
|
+
function selfUpdateExecArgs(pkg, root, minVersion) {
|
|
101
|
+
return ['exec', '--yes', `--package=${pkg}`, '--', exports.SELF_UPDATE_BIN, '--root', root, '--min', minVersion];
|
|
102
|
+
}
|
|
103
|
+
/** 入口の stdout の最後の JSON 行(npm の出力が混じっても拾う)。無ければ null */
|
|
104
|
+
function parseSelfUpdateLine(stdout) {
|
|
105
|
+
const lines = stdout.split(/\r?\n/).map((l) => l.trim()).filter(Boolean).reverse();
|
|
106
|
+
for (const line of lines) {
|
|
107
|
+
if (!line.startsWith('{'))
|
|
108
|
+
continue;
|
|
109
|
+
try {
|
|
110
|
+
const v = JSON.parse(line);
|
|
111
|
+
if (typeof v.ok !== 'boolean')
|
|
112
|
+
continue;
|
|
113
|
+
const str = (k) => (typeof v[k] === 'string' ? v[k] : undefined);
|
|
114
|
+
return {
|
|
115
|
+
ok: v.ok,
|
|
116
|
+
...(str('from') ? { from: str('from') } : {}),
|
|
117
|
+
...(str('to') ? { to: str('to') } : {}),
|
|
118
|
+
...(str('root') ? { root: str('root') } : {}),
|
|
119
|
+
...(str('reason') ? { reason: str('reason') } : {}),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// 次の行へ
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
/** 記録の行に足す括弧の中(current・skipped は何も足さない) */
|
|
129
|
+
function describeCliUpdate(u) {
|
|
130
|
+
switch (u.kind) {
|
|
131
|
+
case 'updated':
|
|
132
|
+
return `CLI ${u.from}→${u.to}`;
|
|
133
|
+
case 'failed':
|
|
134
|
+
return `CLI の更新に失敗: ${u.reason}・${u.from} のまま(最低版 ${u.want})`;
|
|
135
|
+
default:
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** package の dir の package.json の版(読めなければ null) */
|
|
140
|
+
function readPackageVersion(root) {
|
|
141
|
+
try {
|
|
142
|
+
const v = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf-8')).version;
|
|
143
|
+
return typeof v === 'string' && v.trim() ? v.trim() : null;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/** `<base>/cli/min-version` の最低版(base は `/api/bluelamp` 付き)。引けなければ null・throw しない */
|
|
150
|
+
async function fetchMinCliVersion(base, fetchFn = fetch, timeoutMs = exports.MIN_VERSION_TIMEOUT_MS) {
|
|
151
|
+
const controller = new AbortController();
|
|
152
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
153
|
+
try {
|
|
154
|
+
const res = await fetchFn(`${base.replace(/\/+$/, '')}/cli/min-version`, { signal: controller.signal });
|
|
155
|
+
if (!res.ok)
|
|
156
|
+
return null;
|
|
157
|
+
const v = (await res.json())?.data?.min_cli_version;
|
|
158
|
+
return typeof v === 'string' && v.trim() ? v.trim() : null;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
clearTimeout(timer);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* node の隣の npm で撃つ(launchd の発火は PATH が /usr/bin:/bin だけ=素の npm は ENOENT)。
|
|
169
|
+
* Windows の npm.cmd は shell 経由でないと spawn できない。cwd は home(作業フォルダの package.json を拾わない)
|
|
170
|
+
*/
|
|
171
|
+
function runNpmBesideNode(args, nodePath = process.execPath) {
|
|
172
|
+
const dir = path.dirname(nodePath);
|
|
173
|
+
const win = process.platform === 'win32';
|
|
174
|
+
const beside = path.join(dir, win ? 'npm.cmd' : 'npm');
|
|
175
|
+
const bin = fs.existsSync(beside) ? beside : win ? 'npm.cmd' : 'npm';
|
|
176
|
+
const env = { ...process.env, PATH: process.env.PATH ? `${dir}${path.delimiter}${process.env.PATH}` : dir };
|
|
177
|
+
delete env[exports.SELF_UPDATE_DONE_ENV];
|
|
178
|
+
return new Promise((resolve) => {
|
|
179
|
+
(0, node_child_process_1.execFile)(win && bin.includes(' ') ? `"${bin}"` : bin, args, { cwd: os.homedir(), env, timeout: exports.SELF_UPDATE_TIMEOUT_MS, maxBuffer: 4 * 1024 * 1024, shell: win }, (err, stdout) => {
|
|
180
|
+
const e = err;
|
|
181
|
+
if (!e)
|
|
182
|
+
return resolve({ code: 0, stdout: String(stdout) });
|
|
183
|
+
const error = e.killed ? `時間切れ(${exports.SELF_UPDATE_TIMEOUT_MS / 1000} 秒)` : typeof e.code === 'string' ? e.code : undefined;
|
|
184
|
+
resolve({ code: typeof e.code === 'number' ? e.code : null, stdout: String(stdout ?? ''), ...(error ? { error } : {}) });
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* 席を立てる前に、locate が指す CLI を最低版へ上げる。throw しない=上げられなくても便は今の版で走る。
|
|
190
|
+
*/
|
|
191
|
+
async function updateCliToMin(deps) {
|
|
192
|
+
try {
|
|
193
|
+
const cli = deps.locate();
|
|
194
|
+
if (!cli)
|
|
195
|
+
return { kind: 'skipped', reason: 'CLI が無い' };
|
|
196
|
+
if (!cli.version)
|
|
197
|
+
return { kind: 'skipped', reason: '版が読めない' };
|
|
198
|
+
const min = await deps.fetchMinVersion();
|
|
199
|
+
if (!min)
|
|
200
|
+
return { kind: 'skipped', reason: '最低版を引けない' };
|
|
201
|
+
if (!isOlderThan(cli.version, min))
|
|
202
|
+
return { kind: 'current', version: cli.version };
|
|
203
|
+
const run = await deps.runNpm(selfUpdateExecArgs(selfUpdatePackage(min, deps.env[exports.SELF_UPDATE_PACKAGE_ENV]), cli.root, min));
|
|
204
|
+
const line = parseSelfUpdateLine(run.stdout);
|
|
205
|
+
// ⛔ 入口の ok を鵜呑みにしない=使う CLI を引き直して版を読む
|
|
206
|
+
const after = deps.locate();
|
|
207
|
+
const now = after?.version ?? null;
|
|
208
|
+
if (now && !isOlderThan(now, min))
|
|
209
|
+
return { kind: 'updated', from: cli.version, to: now };
|
|
210
|
+
const reason = (line?.ok && line.root && after && path.resolve(line.root) !== path.resolve(after.root)
|
|
211
|
+
? `${line.to ?? min} は ${line.root} に入ったが、席が使うのは ${after.root}`
|
|
212
|
+
: undefined) ??
|
|
213
|
+
line?.reason ??
|
|
214
|
+
run.error ??
|
|
215
|
+
(run.code !== 0 ? `npm が失敗しました(終了コード ${run.code ?? 'null'})` : `入れたはずの ${min} が見つかりません(いま ${now ?? '不明'})`);
|
|
216
|
+
return { kind: 'failed', from: cli.version, want: min, reason };
|
|
217
|
+
}
|
|
218
|
+
catch (err) {
|
|
219
|
+
return { kind: 'skipped', reason: `測れない: ${err.message.slice(0, 80)}` };
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=cli-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-update.js","sourceRoot":"","sources":["../../src/cli-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 発火の前に BlueLamp CLI を最低版へ上げる——routine と scheduler の**単一実装**(箱 n=4076 → n=4082 で共用へ)。
|
|
3
|
+
*
|
|
4
|
+
* 定期便(routine・scheduler)は launchd から起きる=PATH が /usr/bin:/bin だけ。6.7.2 以前の起動子は
|
|
5
|
+
* そこで素の npm を見つけられず自己更新に失敗し、古い gateway のまま load_knowledge を撃ち続ける(n=4058・n=4072)。
|
|
6
|
+
* ⇒ 席を立てる前に `/cli/min-version` と比べ、古いときだけ node の隣の npm で新しい版の入口を借りて上げる。
|
|
7
|
+
*
|
|
8
|
+
* ⛔ 置き場の選び方・npm の撃ち方は CLI の `bluelamp-self-update`(n=4072・selfUpdate.ts)が持つ。ここは二重に作らない。
|
|
9
|
+
* ここがするのは「古いかを測る」と「新しい版の入口を npm exec で借りて撃つ」だけ(古い版には入口が無い)。
|
|
10
|
+
* 「どの CLI を上げるか」は呼び出し側が locate で渡す(routine=gateway の package/scheduler=起動子の package)。
|
|
11
|
+
*
|
|
12
|
+
* 制約は index.ts と同じ: node 標準モジュール以外に依存しない・console に出さない・throw しない(結果は CliUpdate で返す)。
|
|
13
|
+
*/
|
|
14
|
+
/** CLI の更新だけの入口(n=4072) */
|
|
15
|
+
export declare const SELF_UPDATE_BIN = "bluelamp-self-update";
|
|
16
|
+
/** 入口が入った最初の版。min がこれより低くても、入口はこの版から借りる */
|
|
17
|
+
export declare const SELF_UPDATE_SINCE = "6.7.3";
|
|
18
|
+
/** 入口を借りる package を上書きする env(rc を撃つ検体のため。例 bluelamp@6.7.3-rc.1) */
|
|
19
|
+
export declare const SELF_UPDATE_PACKAGE_ENV = "BLUELAMP_SELF_UPDATE_PACKAGE";
|
|
20
|
+
/** 起動子が子へ渡す「もう上げた」の印(n=4072)。npm の子へは渡さない */
|
|
21
|
+
export declare const SELF_UPDATE_DONE_ENV = "BLUELAMP_SELFUPDATE_DONE";
|
|
22
|
+
export declare const MIN_VERSION_TIMEOUT_MS = 2500;
|
|
23
|
+
/** npm exec(入口の取得+npm install)を待つ上限 */
|
|
24
|
+
export declare const SELF_UPDATE_TIMEOUT_MS = 180000;
|
|
25
|
+
/** 版の比較(a < b)。起動子の isOlderThan と同じ数え方(数字以外は 0) */
|
|
26
|
+
export declare function isOlderThan(a: string, b: string): boolean;
|
|
27
|
+
/** 入口を借りる package(env の上書き>max(min, 入口の版)) */
|
|
28
|
+
export declare function selfUpdatePackage(minVersion: string, override: string | undefined): string;
|
|
29
|
+
/** `npm` に渡す引数(⛔ @latest にしない・入れる版は --min で名指し) */
|
|
30
|
+
export declare function selfUpdateExecArgs(pkg: string, root: string, minVersion: string): string[];
|
|
31
|
+
export interface SelfUpdateLine {
|
|
32
|
+
ok: boolean;
|
|
33
|
+
from?: string;
|
|
34
|
+
to?: string;
|
|
35
|
+
root?: string;
|
|
36
|
+
reason?: string;
|
|
37
|
+
}
|
|
38
|
+
/** 入口の stdout の最後の JSON 行(npm の出力が混じっても拾う)。無ければ null */
|
|
39
|
+
export declare function parseSelfUpdateLine(stdout: string): SelfUpdateLine | null;
|
|
40
|
+
/** 発火の前の更新の結果 */
|
|
41
|
+
export type CliUpdate =
|
|
42
|
+
/** 測れなかった・測る物が無い(CLI が無い・最低版が引けない)=いまの版のまま */
|
|
43
|
+
{
|
|
44
|
+
kind: 'skipped';
|
|
45
|
+
reason: string;
|
|
46
|
+
} | {
|
|
47
|
+
kind: 'current';
|
|
48
|
+
version: string;
|
|
49
|
+
} | {
|
|
50
|
+
kind: 'updated';
|
|
51
|
+
from: string;
|
|
52
|
+
to: string;
|
|
53
|
+
} | {
|
|
54
|
+
kind: 'failed';
|
|
55
|
+
from: string;
|
|
56
|
+
want: string;
|
|
57
|
+
reason: string;
|
|
58
|
+
};
|
|
59
|
+
/** 記録の行に足す括弧の中(current・skipped は何も足さない) */
|
|
60
|
+
export declare function describeCliUpdate(u: CliUpdate): string | null;
|
|
61
|
+
/** 上げる対象の CLI(package の dir と、その package.json の版) */
|
|
62
|
+
export interface InstalledCli {
|
|
63
|
+
root: string;
|
|
64
|
+
version: string | null;
|
|
65
|
+
}
|
|
66
|
+
export interface NpmRun {
|
|
67
|
+
code: number | null;
|
|
68
|
+
stdout: string;
|
|
69
|
+
error?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface CliUpdateDeps {
|
|
72
|
+
/** 席が使う CLI を引く(上げた後にもう一度撃つ=入口の ok を鵜呑みにしない)。無ければ null */
|
|
73
|
+
locate: () => InstalledCli | null;
|
|
74
|
+
/** 最低版(引けなければ null) */
|
|
75
|
+
fetchMinVersion: () => Promise<string | null>;
|
|
76
|
+
/** npm を撃つ(throw しない) */
|
|
77
|
+
runNpm: (args: string[]) => Promise<NpmRun>;
|
|
78
|
+
env: NodeJS.ProcessEnv;
|
|
79
|
+
}
|
|
80
|
+
/** package の dir の package.json の版(読めなければ null) */
|
|
81
|
+
export declare function readPackageVersion(root: string): string | null;
|
|
82
|
+
/** `<base>/cli/min-version` の最低版(base は `/api/bluelamp` 付き)。引けなければ null・throw しない */
|
|
83
|
+
export declare function fetchMinCliVersion(base: string, fetchFn?: typeof fetch, timeoutMs?: number): Promise<string | null>;
|
|
84
|
+
/**
|
|
85
|
+
* node の隣の npm で撃つ(launchd の発火は PATH が /usr/bin:/bin だけ=素の npm は ENOENT)。
|
|
86
|
+
* Windows の npm.cmd は shell 経由でないと spawn できない。cwd は home(作業フォルダの package.json を拾わない)
|
|
87
|
+
*/
|
|
88
|
+
export declare function runNpmBesideNode(args: string[], nodePath?: string): Promise<NpmRun>;
|
|
89
|
+
/**
|
|
90
|
+
* 席を立てる前に、locate が指す CLI を最低版へ上げる。throw しない=上げられなくても便は今の版で走る。
|
|
91
|
+
*/
|
|
92
|
+
export declare function updateCliToMin(deps: CliUpdateDeps): Promise<CliUpdate>;
|
|
93
|
+
//# sourceMappingURL=cli-update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-update.d.ts","sourceRoot":"","sources":["../../src/cli-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 発火の前に BlueLamp CLI を最低版へ上げる——routine と scheduler の**単一実装**(箱 n=4076 → n=4082 で共用へ)。
|
|
3
|
+
*
|
|
4
|
+
* 定期便(routine・scheduler)は launchd から起きる=PATH が /usr/bin:/bin だけ。6.7.2 以前の起動子は
|
|
5
|
+
* そこで素の npm を見つけられず自己更新に失敗し、古い gateway のまま load_knowledge を撃ち続ける(n=4058・n=4072)。
|
|
6
|
+
* ⇒ 席を立てる前に `/cli/min-version` と比べ、古いときだけ node の隣の npm で新しい版の入口を借りて上げる。
|
|
7
|
+
*
|
|
8
|
+
* ⛔ 置き場の選び方・npm の撃ち方は CLI の `bluelamp-self-update`(n=4072・selfUpdate.ts)が持つ。ここは二重に作らない。
|
|
9
|
+
* ここがするのは「古いかを測る」と「新しい版の入口を npm exec で借りて撃つ」だけ(古い版には入口が無い)。
|
|
10
|
+
* 「どの CLI を上げるか」は呼び出し側が locate で渡す(routine=gateway の package/scheduler=起動子の package)。
|
|
11
|
+
*
|
|
12
|
+
* 制約は index.ts と同じ: node 標準モジュール以外に依存しない・console に出さない・throw しない(結果は CliUpdate で返す)。
|
|
13
|
+
*/
|
|
14
|
+
import { execFile } from 'node:child_process';
|
|
15
|
+
import * as fs from 'node:fs';
|
|
16
|
+
import * as os from 'node:os';
|
|
17
|
+
import * as path from 'node:path';
|
|
18
|
+
/** CLI の更新だけの入口(n=4072) */
|
|
19
|
+
export const SELF_UPDATE_BIN = 'bluelamp-self-update';
|
|
20
|
+
/** 入口が入った最初の版。min がこれより低くても、入口はこの版から借りる */
|
|
21
|
+
export const SELF_UPDATE_SINCE = '6.7.3';
|
|
22
|
+
/** 入口を借りる package を上書きする env(rc を撃つ検体のため。例 bluelamp@6.7.3-rc.1) */
|
|
23
|
+
export const SELF_UPDATE_PACKAGE_ENV = 'BLUELAMP_SELF_UPDATE_PACKAGE';
|
|
24
|
+
/** 起動子が子へ渡す「もう上げた」の印(n=4072)。npm の子へは渡さない */
|
|
25
|
+
export const SELF_UPDATE_DONE_ENV = 'BLUELAMP_SELFUPDATE_DONE';
|
|
26
|
+
export const MIN_VERSION_TIMEOUT_MS = 2500;
|
|
27
|
+
/** npm exec(入口の取得+npm install)を待つ上限 */
|
|
28
|
+
export const SELF_UPDATE_TIMEOUT_MS = 180_000;
|
|
29
|
+
/** 版の比較(a < b)。起動子の isOlderThan と同じ数え方(数字以外は 0) */
|
|
30
|
+
export function isOlderThan(a, b) {
|
|
31
|
+
const parse = (v) => String(v)
|
|
32
|
+
.trim()
|
|
33
|
+
.split('.')
|
|
34
|
+
.map((p) => {
|
|
35
|
+
const n = parseInt(p, 10);
|
|
36
|
+
return Number.isFinite(n) ? n : 0;
|
|
37
|
+
});
|
|
38
|
+
const pa = parse(a);
|
|
39
|
+
const pb = parse(b);
|
|
40
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
41
|
+
const x = pa[i] ?? 0;
|
|
42
|
+
const y = pb[i] ?? 0;
|
|
43
|
+
if (x !== y)
|
|
44
|
+
return x < y;
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
/** 入口を借りる package(env の上書き>max(min, 入口の版)) */
|
|
49
|
+
export function selfUpdatePackage(minVersion, override) {
|
|
50
|
+
if (override && override.trim())
|
|
51
|
+
return override.trim();
|
|
52
|
+
return `bluelamp@${isOlderThan(minVersion, SELF_UPDATE_SINCE) ? SELF_UPDATE_SINCE : minVersion}`;
|
|
53
|
+
}
|
|
54
|
+
/** `npm` に渡す引数(⛔ @latest にしない・入れる版は --min で名指し) */
|
|
55
|
+
export function selfUpdateExecArgs(pkg, root, minVersion) {
|
|
56
|
+
return ['exec', '--yes', `--package=${pkg}`, '--', SELF_UPDATE_BIN, '--root', root, '--min', minVersion];
|
|
57
|
+
}
|
|
58
|
+
/** 入口の stdout の最後の JSON 行(npm の出力が混じっても拾う)。無ければ null */
|
|
59
|
+
export function parseSelfUpdateLine(stdout) {
|
|
60
|
+
const lines = stdout.split(/\r?\n/).map((l) => l.trim()).filter(Boolean).reverse();
|
|
61
|
+
for (const line of lines) {
|
|
62
|
+
if (!line.startsWith('{'))
|
|
63
|
+
continue;
|
|
64
|
+
try {
|
|
65
|
+
const v = JSON.parse(line);
|
|
66
|
+
if (typeof v.ok !== 'boolean')
|
|
67
|
+
continue;
|
|
68
|
+
const str = (k) => (typeof v[k] === 'string' ? v[k] : undefined);
|
|
69
|
+
return {
|
|
70
|
+
ok: v.ok,
|
|
71
|
+
...(str('from') ? { from: str('from') } : {}),
|
|
72
|
+
...(str('to') ? { to: str('to') } : {}),
|
|
73
|
+
...(str('root') ? { root: str('root') } : {}),
|
|
74
|
+
...(str('reason') ? { reason: str('reason') } : {}),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// 次の行へ
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
/** 記録の行に足す括弧の中(current・skipped は何も足さない) */
|
|
84
|
+
export function describeCliUpdate(u) {
|
|
85
|
+
switch (u.kind) {
|
|
86
|
+
case 'updated':
|
|
87
|
+
return `CLI ${u.from}→${u.to}`;
|
|
88
|
+
case 'failed':
|
|
89
|
+
return `CLI の更新に失敗: ${u.reason}・${u.from} のまま(最低版 ${u.want})`;
|
|
90
|
+
default:
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** package の dir の package.json の版(読めなければ null) */
|
|
95
|
+
export function readPackageVersion(root) {
|
|
96
|
+
try {
|
|
97
|
+
const v = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf-8')).version;
|
|
98
|
+
return typeof v === 'string' && v.trim() ? v.trim() : null;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** `<base>/cli/min-version` の最低版(base は `/api/bluelamp` 付き)。引けなければ null・throw しない */
|
|
105
|
+
export async function fetchMinCliVersion(base, fetchFn = fetch, timeoutMs = MIN_VERSION_TIMEOUT_MS) {
|
|
106
|
+
const controller = new AbortController();
|
|
107
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
108
|
+
try {
|
|
109
|
+
const res = await fetchFn(`${base.replace(/\/+$/, '')}/cli/min-version`, { signal: controller.signal });
|
|
110
|
+
if (!res.ok)
|
|
111
|
+
return null;
|
|
112
|
+
const v = (await res.json())?.data?.min_cli_version;
|
|
113
|
+
return typeof v === 'string' && v.trim() ? v.trim() : null;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
clearTimeout(timer);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* node の隣の npm で撃つ(launchd の発火は PATH が /usr/bin:/bin だけ=素の npm は ENOENT)。
|
|
124
|
+
* Windows の npm.cmd は shell 経由でないと spawn できない。cwd は home(作業フォルダの package.json を拾わない)
|
|
125
|
+
*/
|
|
126
|
+
export function runNpmBesideNode(args, nodePath = process.execPath) {
|
|
127
|
+
const dir = path.dirname(nodePath);
|
|
128
|
+
const win = process.platform === 'win32';
|
|
129
|
+
const beside = path.join(dir, win ? 'npm.cmd' : 'npm');
|
|
130
|
+
const bin = fs.existsSync(beside) ? beside : win ? 'npm.cmd' : 'npm';
|
|
131
|
+
const env = { ...process.env, PATH: process.env.PATH ? `${dir}${path.delimiter}${process.env.PATH}` : dir };
|
|
132
|
+
delete env[SELF_UPDATE_DONE_ENV];
|
|
133
|
+
return new Promise((resolve) => {
|
|
134
|
+
execFile(win && bin.includes(' ') ? `"${bin}"` : bin, args, { cwd: os.homedir(), env, timeout: SELF_UPDATE_TIMEOUT_MS, maxBuffer: 4 * 1024 * 1024, shell: win }, (err, stdout) => {
|
|
135
|
+
const e = err;
|
|
136
|
+
if (!e)
|
|
137
|
+
return resolve({ code: 0, stdout: String(stdout) });
|
|
138
|
+
const error = e.killed ? `時間切れ(${SELF_UPDATE_TIMEOUT_MS / 1000} 秒)` : typeof e.code === 'string' ? e.code : undefined;
|
|
139
|
+
resolve({ code: typeof e.code === 'number' ? e.code : null, stdout: String(stdout ?? ''), ...(error ? { error } : {}) });
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 席を立てる前に、locate が指す CLI を最低版へ上げる。throw しない=上げられなくても便は今の版で走る。
|
|
145
|
+
*/
|
|
146
|
+
export async function updateCliToMin(deps) {
|
|
147
|
+
try {
|
|
148
|
+
const cli = deps.locate();
|
|
149
|
+
if (!cli)
|
|
150
|
+
return { kind: 'skipped', reason: 'CLI が無い' };
|
|
151
|
+
if (!cli.version)
|
|
152
|
+
return { kind: 'skipped', reason: '版が読めない' };
|
|
153
|
+
const min = await deps.fetchMinVersion();
|
|
154
|
+
if (!min)
|
|
155
|
+
return { kind: 'skipped', reason: '最低版を引けない' };
|
|
156
|
+
if (!isOlderThan(cli.version, min))
|
|
157
|
+
return { kind: 'current', version: cli.version };
|
|
158
|
+
const run = await deps.runNpm(selfUpdateExecArgs(selfUpdatePackage(min, deps.env[SELF_UPDATE_PACKAGE_ENV]), cli.root, min));
|
|
159
|
+
const line = parseSelfUpdateLine(run.stdout);
|
|
160
|
+
// ⛔ 入口の ok を鵜呑みにしない=使う CLI を引き直して版を読む
|
|
161
|
+
const after = deps.locate();
|
|
162
|
+
const now = after?.version ?? null;
|
|
163
|
+
if (now && !isOlderThan(now, min))
|
|
164
|
+
return { kind: 'updated', from: cli.version, to: now };
|
|
165
|
+
const reason = (line?.ok && line.root && after && path.resolve(line.root) !== path.resolve(after.root)
|
|
166
|
+
? `${line.to ?? min} は ${line.root} に入ったが、席が使うのは ${after.root}`
|
|
167
|
+
: undefined) ??
|
|
168
|
+
line?.reason ??
|
|
169
|
+
run.error ??
|
|
170
|
+
(run.code !== 0 ? `npm が失敗しました(終了コード ${run.code ?? 'null'})` : `入れたはずの ${min} が見つかりません(いま ${now ?? '不明'})`);
|
|
171
|
+
return { kind: 'failed', from: cli.version, want: min, reason };
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
return { kind: 'skipped', reason: `測れない: ${err.message.slice(0, 80)}` };
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=cli-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-update.js","sourceRoot":"","sources":["../../src/cli-update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bluelamp/cli-token",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0-rc.0",
|
|
4
4
|
"description": "BlueLamp CLI が保存するローカルトークンファイルの読み書きの単一実装",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bluelamp",
|
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
"types": "./dist/esm/index.d.ts",
|
|
15
15
|
"import": "./dist/esm/index.js",
|
|
16
16
|
"require": "./dist/cjs/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./cli-update": {
|
|
19
|
+
"types": "./dist/esm/cli-update.d.ts",
|
|
20
|
+
"import": "./dist/esm/cli-update.js",
|
|
21
|
+
"require": "./dist/cjs/cli-update.js"
|
|
17
22
|
}
|
|
18
23
|
},
|
|
19
24
|
"main": "dist/cjs/index.js",
|