@team-semicolon/semo-cli 3.0.9 → 3.0.10
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/dist/index.js +18 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -59,7 +59,7 @@ const child_process_1 = require("child_process");
|
|
|
59
59
|
const fs = __importStar(require("fs"));
|
|
60
60
|
const path = __importStar(require("path"));
|
|
61
61
|
const os = __importStar(require("os"));
|
|
62
|
-
const VERSION = "3.0.
|
|
62
|
+
const VERSION = "3.0.10";
|
|
63
63
|
const PACKAGE_NAME = "@team-semicolon/semo-cli";
|
|
64
64
|
// === 버전 비교 유틸리티 ===
|
|
65
65
|
/**
|
|
@@ -313,6 +313,18 @@ function detectProjectType(cwd) {
|
|
|
313
313
|
}
|
|
314
314
|
return detected;
|
|
315
315
|
}
|
|
316
|
+
// === 설치된 Extension 패키지 스캔 ===
|
|
317
|
+
function getInstalledExtensions(cwd) {
|
|
318
|
+
const semoSystemDir = path.join(cwd, "semo-system");
|
|
319
|
+
const installed = [];
|
|
320
|
+
for (const key of Object.keys(EXTENSION_PACKAGES)) {
|
|
321
|
+
const pkgPath = path.join(semoSystemDir, key);
|
|
322
|
+
if (fs.existsSync(pkgPath)) {
|
|
323
|
+
installed.push(key);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return installed;
|
|
327
|
+
}
|
|
316
328
|
function checkRequiredTools() {
|
|
317
329
|
const tools = [
|
|
318
330
|
{
|
|
@@ -1488,7 +1500,9 @@ program
|
|
|
1488
1500
|
}
|
|
1489
1501
|
console.log();
|
|
1490
1502
|
}
|
|
1491
|
-
//
|
|
1503
|
+
// 기존에 설치된 모든 Extension 패키지 스캔
|
|
1504
|
+
const previouslyInstalled = getInstalledExtensions(cwd);
|
|
1505
|
+
// 요청한 패키지 중 이미 설치된 것과 새로 설치할 것 분류
|
|
1492
1506
|
const alreadyInstalled = [];
|
|
1493
1507
|
const toInstall = [];
|
|
1494
1508
|
for (const pkg of packages) {
|
|
@@ -1515,8 +1529,8 @@ program
|
|
|
1515
1529
|
await downloadExtensions(cwd, toInstall, options.force);
|
|
1516
1530
|
// 2. settings.json 병합
|
|
1517
1531
|
await mergeExtensionSettings(cwd, toInstall);
|
|
1518
|
-
// 3. 심볼릭 링크 설정 (
|
|
1519
|
-
const allInstalledPackages = [...new Set([...
|
|
1532
|
+
// 3. 심볼릭 링크 설정 (기존 + 새로 설치한 모든 패키지 포함)
|
|
1533
|
+
const allInstalledPackages = [...new Set([...previouslyInstalled, ...toInstall])];
|
|
1520
1534
|
await setupExtensionSymlinks(cwd, allInstalledPackages);
|
|
1521
1535
|
// 4. CLAUDE.md 재생성 (모든 설치된 패키지 반영)
|
|
1522
1536
|
await setupClaudeMd(cwd, allInstalledPackages, options.force);
|