relayax-cli 0.2.29 → 0.2.30
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/commands/publish.js +41 -2
- package/dist/lib/command-adapter.js +36 -5
- package/package.json +1 -1
package/dist/commands/publish.js
CHANGED
|
@@ -435,6 +435,30 @@ function registerPublish(program) {
|
|
|
435
435
|
}));
|
|
436
436
|
process.exit(1);
|
|
437
437
|
}
|
|
438
|
+
// Version bump suggestion for republishing
|
|
439
|
+
if (isTTY) {
|
|
440
|
+
const { select: promptVersion } = await import('@inquirer/prompts');
|
|
441
|
+
const [major, minor, patch] = config.version.split('.').map(Number);
|
|
442
|
+
const bumpPatch = `${major}.${minor}.${patch + 1}`;
|
|
443
|
+
const bumpMinor = `${major}.${minor + 1}.0`;
|
|
444
|
+
const bumpMajor = `${major + 1}.0.0`;
|
|
445
|
+
const newVersion = await promptVersion({
|
|
446
|
+
message: `버전 (현재 v${config.version}):`,
|
|
447
|
+
choices: [
|
|
448
|
+
{ name: `v${bumpPatch} — patch (버그 수정)`, value: bumpPatch },
|
|
449
|
+
{ name: `v${bumpMinor} — minor (기능 추가)`, value: bumpMinor },
|
|
450
|
+
{ name: `v${bumpMajor} — major (큰 변경)`, value: bumpMajor },
|
|
451
|
+
{ name: `v${config.version} — 유지`, value: config.version },
|
|
452
|
+
],
|
|
453
|
+
});
|
|
454
|
+
if (newVersion !== config.version) {
|
|
455
|
+
config.version = newVersion;
|
|
456
|
+
const yamlData = js_yaml_1.default.load(fs_1.default.readFileSync(relayYamlPath, 'utf-8'));
|
|
457
|
+
yamlData.version = newVersion;
|
|
458
|
+
fs_1.default.writeFileSync(relayYamlPath, js_yaml_1.default.dump(yamlData, { lineWidth: 120 }), 'utf-8');
|
|
459
|
+
console.error(` → relay.yaml에 version: ${newVersion} 저장됨\n`);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
438
462
|
// Visibility validation: must be explicitly set
|
|
439
463
|
if (!config.visibility) {
|
|
440
464
|
if (isTTY) {
|
|
@@ -480,12 +504,27 @@ function registerPublish(program) {
|
|
|
480
504
|
process.exit(1);
|
|
481
505
|
}
|
|
482
506
|
}
|
|
483
|
-
// Confirm visibility before publish
|
|
507
|
+
// Confirm visibility before publish (재배포 시 변경 기회 제공)
|
|
484
508
|
if (isTTY) {
|
|
509
|
+
const { select: promptConfirmVis } = await import('@inquirer/prompts');
|
|
485
510
|
const visLabel = config.visibility === 'public'
|
|
486
511
|
? '\x1b[32m공개\x1b[0m (마켓플레이스에 누구나 검색·설치)'
|
|
487
512
|
: '\x1b[33m비공개\x1b[0m (Space 멤버만 접근)';
|
|
488
|
-
|
|
513
|
+
const visAction = await promptConfirmVis({
|
|
514
|
+
message: `공개 범위: ${config.visibility === 'public' ? '공개' : '비공개'} — 유지할까요?`,
|
|
515
|
+
choices: [
|
|
516
|
+
{ name: `유지 — ${visLabel}`, value: 'keep' },
|
|
517
|
+
{ name: '변경', value: 'change' },
|
|
518
|
+
],
|
|
519
|
+
});
|
|
520
|
+
if (visAction === 'change') {
|
|
521
|
+
config.visibility = config.visibility === 'public' ? 'private' : 'public';
|
|
522
|
+
const yamlData = js_yaml_1.default.load(fs_1.default.readFileSync(relayYamlPath, 'utf-8'));
|
|
523
|
+
yamlData.visibility = config.visibility;
|
|
524
|
+
fs_1.default.writeFileSync(relayYamlPath, js_yaml_1.default.dump(yamlData, { lineWidth: 120 }), 'utf-8');
|
|
525
|
+
const newLabel = config.visibility === 'public' ? '공개' : '비공개';
|
|
526
|
+
console.error(` → relay.yaml에 visibility: ${config.visibility} 저장됨 (${newLabel})\n`);
|
|
527
|
+
}
|
|
489
528
|
}
|
|
490
529
|
// Profile hint
|
|
491
530
|
if (isTTY) {
|
|
@@ -183,11 +183,28 @@ slug가 직접 주어지면 (\`/relay-install @alice/doc-writer\`) 이 단계를
|
|
|
183
183
|
- CLI가 init과 login을 자동으로 처리합니다 (사용자가 별도 실행할 필요 없음).
|
|
184
184
|
- JSON 출력에서 \`install_path\` (패키지 경로)를 확인합니다.
|
|
185
185
|
|
|
186
|
-
#### 2-2. 배치 범위 선택
|
|
186
|
+
#### 2-2. 배치 범위 선택 (추천 포함)
|
|
187
|
+
|
|
188
|
+
팀의 성격을 분석하여 글로벌/로컬 중 적합한 쪽을 추천합니다.
|
|
189
|
+
|
|
190
|
+
**추천 로직:**
|
|
191
|
+
- **글로벌 추천** — 범용 유틸리티 팀: 코드 리뷰, 문서 생성, 테스트, 번역 등 프로젝트에 무관하게 사용하는 도구성 팀
|
|
192
|
+
- **로컬 추천** — 프로젝트 특화 팀: 특정 프레임워크/스택 전용, 프로젝트별 워크플로우, 팀 내부 컨벤션에 의존하는 팀
|
|
193
|
+
|
|
194
|
+
판단 기준 (다운로드된 패키지의 relay.yaml과 콘텐츠를 분석):
|
|
195
|
+
1. \`tags\`에 특정 프레임워크/스택 키워드가 있으면 (nextjs, supabase, react 등) → 로컬 추천
|
|
196
|
+
2. \`requires\`에 프로젝트 종속 의존성이 있으면 (npm 패키지, 특정 파일 구조) → 로컬 추천
|
|
197
|
+
3. rules/ 파일이 있으면 (프로젝트 컨벤션 주입) → 로컬 추천
|
|
198
|
+
4. 범용 키워드 (utility, review, docs, testing 등) → 글로벌 추천
|
|
199
|
+
5. 판단이 어려우면 → 글로벌 추천 (기본값)
|
|
187
200
|
|
|
188
201
|
**AskUserQuestion 호출:**
|
|
189
|
-
- question: "
|
|
190
|
-
- options: \`["글로벌 (모든 프로젝트)", "로컬 (이 프로젝트만)"]\`
|
|
202
|
+
- question: "{추천 이유}. {추천}에 설치할까요?"
|
|
203
|
+
- options: \`["글로벌 (모든 프로젝트) ✓ 추천", "로컬 (이 프로젝트만)"]\` 또는 \`["글로벌 (모든 프로젝트)", "로컬 (이 프로젝트만) ✓ 추천"]\`
|
|
204
|
+
|
|
205
|
+
예시:
|
|
206
|
+
- "범용 코드 리뷰 도구입니다. 글로벌에 설치할까요?" → \`["글로벌 (모든 프로젝트) ✓ 추천", "로컬 (이 프로젝트만)"]\`
|
|
207
|
+
- "Next.js + Supabase 전용 팀입니다. 이 프로젝트에 설치할까요?" → \`["글로벌 (모든 프로젝트)", "로컬 (이 프로젝트만) ✓ 추천"]\`
|
|
191
208
|
|
|
192
209
|
**응답 처리:**
|
|
193
210
|
- "글로벌" → \`~/.claude/\`에 배치
|
|
@@ -401,7 +418,21 @@ ${LOGIN_JIT_GUIDE}
|
|
|
401
418
|
|
|
402
419
|
## 인터랙션 플로우
|
|
403
420
|
|
|
404
|
-
이 커맨드는
|
|
421
|
+
이 커맨드는 6단계 인터랙션으로 진행됩니다. 각 단계에서 반드시 AskUserQuestion 도구를 사용하세요.
|
|
422
|
+
|
|
423
|
+
### Step 0. 버전 범프
|
|
424
|
+
|
|
425
|
+
relay.yaml의 현재 \`version\`을 읽고 semver 범프를 제안합니다.
|
|
426
|
+
|
|
427
|
+
**AskUserQuestion 호출:**
|
|
428
|
+
- question: "버전을 올릴까요? (현재 v{version})"
|
|
429
|
+
- options: \`["v{patch} — patch (버그 수정)", "v{minor} — minor (기능 추가)", "v{major} — major (큰 변경)", "v{version} — 유지"]\`
|
|
430
|
+
|
|
431
|
+
예시: 현재 v1.0.0이면 → \`["v1.0.1 — patch", "v1.1.0 — minor", "v2.0.0 — major", "v1.0.0 — 유지"]\`
|
|
432
|
+
|
|
433
|
+
**응답 처리:**
|
|
434
|
+
- 유지 외 선택 → relay.yaml의 version을 선택된 값으로 업데이트
|
|
435
|
+
- 유지 → 그대로 진행
|
|
405
436
|
|
|
406
437
|
### Step 1. 공개 범위 선택
|
|
407
438
|
|
|
@@ -604,7 +635,7 @@ requires: env 2개, cli 1개
|
|
|
604
635
|
- options: \`["배포", "취소"]\`
|
|
605
636
|
|
|
606
637
|
**응답 처리:**
|
|
607
|
-
- "배포" → \`relay publish\` 실행
|
|
638
|
+
- "배포" → \`relay publish --json\` 실행 (슬래시 커맨드에서 이미 버전/visibility를 relay.yaml에 저장했으므로 --json으로 인터랙티브 프롬프트 생략)
|
|
608
639
|
- "취소" → 중단
|
|
609
640
|
|
|
610
641
|
#### 5-3. 배포 완료 & 온보딩 가이드
|