nexus-agent-installer 0.1.4 → 0.1.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/install.js +37 -4
- package/package.json +1 -1
package/install.js
CHANGED
|
@@ -42,7 +42,10 @@ const STOP_TOOL_PROCESSES_PS = [
|
|
|
42
42
|
"if ($processes.Count -eq 0) { exit 0 }",
|
|
43
43
|
"$processIds = @($processes | ForEach-Object { [int]$_.ProcessId })",
|
|
44
44
|
"foreach ($processId in $processIds) { Stop-Process -Id $processId -Force -ErrorAction SilentlyContinue }",
|
|
45
|
-
"foreach ($processId in $processIds) {
|
|
45
|
+
"foreach ($processId in $processIds) {",
|
|
46
|
+
" Wait-Process -Id $processId -Timeout 30 -ErrorAction SilentlyContinue",
|
|
47
|
+
' if (Get-Process -Id $processId -ErrorAction SilentlyContinue) { throw "Nexus process stop timed out: $processId" }',
|
|
48
|
+
"}",
|
|
46
49
|
'$processIds -join ","',
|
|
47
50
|
].join("\n");
|
|
48
51
|
|
|
@@ -53,7 +56,8 @@ function fail(msg) {
|
|
|
53
56
|
function whlSuffix() {
|
|
54
57
|
const { platform, arch } = process;
|
|
55
58
|
if (platform === "darwin") {
|
|
56
|
-
|
|
59
|
+
if (arch !== "arm64") fail(`macOS는 Apple Silicon(arm64)만 지원합니다 (현재: ${arch}).`);
|
|
60
|
+
return "macosx_11_0_arm64.whl";
|
|
57
61
|
}
|
|
58
62
|
if (platform === "linux") {
|
|
59
63
|
if (arch !== "x64") fail(`Linux는 x86_64만 지원합니다 (현재: ${arch}).`);
|
|
@@ -189,6 +193,12 @@ function stopNexusToolProcesses() {
|
|
|
189
193
|
},
|
|
190
194
|
},
|
|
191
195
|
);
|
|
196
|
+
if (result.status !== 0) {
|
|
197
|
+
const detail = result.error?.code || (result.signal
|
|
198
|
+
? `signal ${result.signal}`
|
|
199
|
+
: `exit code ${result.status ?? "unknown"}`);
|
|
200
|
+
fail(`Nexus Agent 프로세스를 확인·종료하지 못해 설치를 중단합니다 (${detail}).`);
|
|
201
|
+
}
|
|
192
202
|
const stopped = String(result.stdout || "").trim();
|
|
193
203
|
if (stopped) {
|
|
194
204
|
console.log(`실행 중인 Nexus Agent 프로세스를 종료했습니다: ${stopped}`);
|
|
@@ -207,6 +217,12 @@ function verifyRuntime() {
|
|
|
207
217
|
}
|
|
208
218
|
const result = run(paths.python, ["-I", "-m", INTEGRITY_MODULE]);
|
|
209
219
|
if (result.status !== 0) fail("Nexus Agent 설치 무결성 검증에 실패했습니다.");
|
|
220
|
+
if (!paths.launcher || !fs.existsSync(paths.launcher)) {
|
|
221
|
+
fail(`설치된 실행 파일을 찾을 수 없습니다: ${paths.launcher}`);
|
|
222
|
+
}
|
|
223
|
+
const launched = run(paths.launcher, ["--version"]);
|
|
224
|
+
if (launched.status !== 0) fail("Nexus Agent 실행 검증에 실패했습니다.");
|
|
225
|
+
return paths;
|
|
210
226
|
}
|
|
211
227
|
|
|
212
228
|
function removeDamagedTool() {
|
|
@@ -245,7 +261,8 @@ function installUv() {
|
|
|
245
261
|
async function main() {
|
|
246
262
|
const suffix = whlSuffix();
|
|
247
263
|
|
|
248
|
-
|
|
264
|
+
const installedUv = !hasUv();
|
|
265
|
+
if (installedUv) installUv();
|
|
249
266
|
// ensureSafeWindowsUv가 uv tool uninstall을 부를 수 있으므로 그 전에 잠금을 푼다.
|
|
250
267
|
stopNexusToolProcesses();
|
|
251
268
|
ensureSafeWindowsUv();
|
|
@@ -275,6 +292,7 @@ async function main() {
|
|
|
275
292
|
const whlPath = path.join(tmpDir, asset.name);
|
|
276
293
|
const depDir = path.join(tmpDir, "deps");
|
|
277
294
|
let installationCompleted = false;
|
|
295
|
+
let installedPaths;
|
|
278
296
|
try {
|
|
279
297
|
fs.writeFileSync(whlPath, Buffer.from(await dl.arrayBuffer()));
|
|
280
298
|
fs.mkdirSync(depDir);
|
|
@@ -309,7 +327,7 @@ async function main() {
|
|
|
309
327
|
fail(`uv tool install이 실패했습니다 (${detail}).`);
|
|
310
328
|
}
|
|
311
329
|
installationCompleted = true;
|
|
312
|
-
verifyRuntime();
|
|
330
|
+
installedPaths = verifyRuntime();
|
|
313
331
|
} catch (error) {
|
|
314
332
|
if (installationCompleted) removeDamagedTool();
|
|
315
333
|
reportSecuritySoftwareDiagnostics();
|
|
@@ -320,6 +338,21 @@ async function main() {
|
|
|
320
338
|
|
|
321
339
|
console.log("");
|
|
322
340
|
console.log("✓ Nexus Agent 설치 완료");
|
|
341
|
+
const launcherDirectory = path.dirname(installedPaths.launcher);
|
|
342
|
+
const normalizedDirectory = IS_WIN ? launcherDirectory.toLowerCase() : launcherDirectory;
|
|
343
|
+
const onPath = String(process.env.PATH || process.env.Path || "").split(path.delimiter).some((entry) => {
|
|
344
|
+
const directory = path.resolve(entry.replace(/^"|"$/g, ""));
|
|
345
|
+
return (IS_WIN ? directory.toLowerCase() : directory) === normalizedDirectory;
|
|
346
|
+
});
|
|
347
|
+
if (installedUv) {
|
|
348
|
+
console.log(" uv를 새로 설치했습니다. 새 터미널에서 nexus-agent 명령을 실행하세요.");
|
|
349
|
+
}
|
|
350
|
+
if (!onPath) {
|
|
351
|
+
console.log(" 명령 경로를 등록하려면 uv tool update-shell 실행 후 새 터미널을 여세요.");
|
|
352
|
+
}
|
|
353
|
+
if (installedUv || !onPath) {
|
|
354
|
+
console.log(` 검증된 실행 파일: ${installedPaths.launcher}`);
|
|
355
|
+
}
|
|
323
356
|
console.log(" 다음 단계:");
|
|
324
357
|
console.log(" nexus-agent init # ~/.nexus-agent/ 초기 설정 생성");
|
|
325
358
|
console.log(" nexus-agent start # 서버 시작 (http://localhost:4821)");
|
package/package.json
CHANGED