@sleighmaster/bmad 1.4.1 → 1.5.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.
@@ -32,7 +32,7 @@ if (-not $gitDir) {
32
32
  $hooksDir = Join-Path $gitDir "hooks"
33
33
  $sourceDir = Split-Path -Parent $MyInvocation.MyCommand.Path
34
34
 
35
- $hooks = @("pre-commit", "commit-msg")
35
+ $hooks = @("pre-commit", "commit-msg", "pre-push")
36
36
 
37
37
  if ($Uninstall) {
38
38
  Write-Info "Git Hooks 제거 중..."
@@ -81,5 +81,6 @@ Write-Host ""
81
81
  Write-Info "설치된 Hook:"
82
82
  Write-Host " - pre-commit: master 브랜치 직접 커밋 차단" -ForegroundColor White
83
83
  Write-Host " - commit-msg: Conventional Commits 형식 검증" -ForegroundColor White
84
+ Write-Host " - pre-push: master 브랜치 직접 푸시 차단" -ForegroundColor White
84
85
  Write-Host ""
85
86
  Write-Info "Hook 제거: .\install-hooks.ps1 -Uninstall"
@@ -0,0 +1,23 @@
1
+ #!/bin/bash
2
+ # BMad6GitHub - Pre-push Hook
3
+ # master/main 브랜치로 직접 푸시 방지
4
+
5
+ # 푸시 대상 분석
6
+ while read local_ref local_sha remote_ref remote_sha; do
7
+ if echo "$remote_ref" | grep -qE "refs/heads/(master|main)$"; then
8
+ echo ""
9
+ echo "=========================================="
10
+ echo " ERROR: master/main 브랜치로 직접 푸시 불가!"
11
+ echo "=========================================="
12
+ echo ""
13
+ echo "BMad6GitHub 워크플로우를 따라주세요:"
14
+ echo ""
15
+ echo " 1. Feature 브랜치에서 작업"
16
+ echo " 2. PR 생성: gh pr create"
17
+ echo " 3. 리뷰 후 머지"
18
+ echo ""
19
+ exit 1
20
+ fi
21
+ done
22
+
23
+ exit 0
package/dist/cli.js CHANGED
@@ -37,6 +37,8 @@ program
37
37
  .option('-f, --force', 'Overwrite existing _bmad folder')
38
38
  .option('--skip-github', 'Skip .github templates installation')
39
39
  .option('--skip-hooks', 'Skip Git hooks installation')
40
+ .option('--skip-repo-setup', 'Skip GitHub repository settings')
41
+ .option('-y, --yes', 'Accept all defaults (non-interactive mode)')
40
42
  .action(async (options) => {
41
43
  await install(options);
42
44
  });
@@ -45,6 +47,10 @@ program
45
47
  .description('Update BMad6GitHub to the latest version')
46
48
  .option('-v, --version <version>', 'Update to specific version')
47
49
  .option('--dry-run', 'Show what would be updated without making changes')
50
+ .option('--skip-github', 'Skip .github templates update')
51
+ .option('--skip-hooks', 'Skip Git hooks update')
52
+ .option('--skip-repo-setup', 'Skip GitHub repository settings')
53
+ .option('-y, --yes', 'Accept all defaults (non-interactive mode)')
48
54
  .action(async (options) => {
49
55
  await update(options);
50
56
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAkB,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAiB,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAgB,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,uBAAuB;AACvB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC1D,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB,IAAI,CAAC;IACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,CAAC;AAAC,MAAM,CAAC;IACP,0BAA0B;IAC1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,yBAAyB,EAAE,yCAAyC,CAAC;KAC5E,MAAM,CAAC,aAAa,EAAE,iCAAiC,CAAC;KACxD,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC;KAC9D,MAAM,CAAC,cAAc,EAAE,6BAA6B,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;IACxC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,mDAAmD,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;IACvC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE;IACtC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAkB,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAiB,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAgB,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,uBAAuB;AACvB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC1D,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB,IAAI,CAAC;IACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,CAAC;AAAC,MAAM,CAAC;IACP,0BAA0B;IAC1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,yBAAyB,EAAE,yCAAyC,CAAC;KAC5E,MAAM,CAAC,aAAa,EAAE,iCAAiC,CAAC;KACxD,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC;KAC9D,MAAM,CAAC,cAAc,EAAE,6BAA6B,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;KAC9D,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;IACxC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,mDAAmD,CAAC;KACxE,MAAM,CAAC,eAAe,EAAE,+BAA+B,CAAC;KACxD,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;KAC9D,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;IACvC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE;IACtC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -3,6 +3,8 @@ export interface InstallOptions {
3
3
  force?: boolean;
4
4
  skipGithub?: boolean;
5
5
  skipHooks?: boolean;
6
+ skipRepoSetup?: boolean;
7
+ yes?: boolean;
6
8
  }
7
9
  export declare function install(options: InstallOptions): Promise<void>;
8
10
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDpE"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkLpE"}
@@ -1,10 +1,12 @@
1
1
  import ora from 'ora';
2
2
  import { readFileSync } from 'fs';
3
+ import { execSync } from 'child_process';
3
4
  import { fileURLToPath } from 'url';
4
- import { dirname, join } from 'path';
5
- import { isBmadInstalled } from '../utils/fs-utils.js';
5
+ import { dirname, join, basename } from 'path';
6
+ import { isBmadInstalled, isGitRepository } from '../utils/fs-utils.js';
6
7
  import { logger } from '../utils/logger.js';
7
- import { performInstall } from '../services/installer.js';
8
+ import { performInstall, setupGitHubRepo, createGitHubRepo } from '../services/installer.js';
9
+ import { askYesNo, isGhCliAvailable, hasRemoteRepository, askText, askChoice } from '../utils/prompt-utils.js';
8
10
  const __filename = fileURLToPath(import.meta.url);
9
11
  const __dirname = dirname(__filename);
10
12
  // 패키지 버전 읽기
@@ -22,41 +24,162 @@ export async function install(options) {
22
24
  const projectRoot = process.cwd();
23
25
  const version = `v${getPackageVersion()}`;
24
26
  logger.title('BMad6GitHub Install');
27
+ logger.highlight('Version', version);
28
+ logger.newline();
25
29
  // 기존 설치 확인
26
- if (await isBmadInstalled(projectRoot)) {
27
- if (!options.force) {
28
- logger.error('BMad6GitHub is already installed in this project.');
29
- logger.plain('Use --force to overwrite, or use "npx @sleighmaster/bmad update" to update.');
30
- process.exit(1);
30
+ const alreadyInstalled = await isBmadInstalled(projectRoot);
31
+ if (alreadyInstalled) {
32
+ if (options.force) {
33
+ logger.warning('기존 설치가 발견되었습니다. 백업 덮어씁니다.');
34
+ }
35
+ else {
36
+ const overwrite = await askYesNo('기존 설치가 발견되었습니다. 백업 후 덮어쓰시겠습니까?', false);
37
+ if (!overwrite) {
38
+ logger.plain('설치를 취소합니다. 업데이트하려면 "npx @sleighmaster/bmad update"를 사용하세요.');
39
+ process.exit(0);
40
+ }
41
+ options.force = true;
42
+ }
43
+ }
44
+ // 인터랙티브 설정 수집
45
+ logger.plain('설치 옵션을 선택해주세요:');
46
+ logger.newline();
47
+ // GitHub 템플릿 설치 여부
48
+ let installGithub = !options.skipGithub;
49
+ if (options.skipGithub === undefined && !options.yes) {
50
+ installGithub = await askYesNo('GitHub 템플릿을 설치하시겠습니까? (Actions, Issue/PR 템플릿)', true);
51
+ }
52
+ // Git 저장소 확인 및 초기화
53
+ let isGitRepo = await isGitRepository(projectRoot);
54
+ let gitInitialized = false;
55
+ if (!isGitRepo && !options.yes) {
56
+ const initGit = await askYesNo('Git 저장소가 아닙니다. git init을 실행하시겠습니까?', true);
57
+ if (initGit) {
58
+ try {
59
+ execSync('git init', { cwd: projectRoot, stdio: 'pipe' });
60
+ isGitRepo = true;
61
+ gitInitialized = true;
62
+ logger.success('Git 저장소가 초기화되었습니다.');
63
+ }
64
+ catch {
65
+ logger.warning('git init 실패. Git hooks와 저장소 설정을 건너뜁니다.');
66
+ }
67
+ }
68
+ }
69
+ // Git hooks 설치 여부
70
+ let installHooks = !options.skipHooks;
71
+ if (isGitRepo && options.skipHooks === undefined && !options.yes) {
72
+ installHooks = await askYesNo('Git hooks를 설치하시겠습니까? (커밋/푸시 규칙 적용)', true);
73
+ }
74
+ else if (!isGitRepo) {
75
+ installHooks = false;
76
+ logger.dim('Git 저장소가 아니므로 Git hooks 설치를 건너뜁니다.');
77
+ }
78
+ // GitHub 저장소 설정 여부
79
+ let setupRepo = !options.skipRepoSetup;
80
+ const ghAvailable = await isGhCliAvailable();
81
+ let hasRemote = await hasRemoteRepository();
82
+ let repoCreated = false;
83
+ if (ghAvailable && !hasRemote && isGitRepo && options.skipRepoSetup === undefined && !options.yes) {
84
+ // origin이 없을 때: 저장소 생성 제안
85
+ const createRepo = await askYesNo('원격 저장소(origin)가 없습니다. GitHub 저장소를 생성하시겠습니까?', true);
86
+ if (createRepo) {
87
+ const defaultName = basename(process.cwd());
88
+ const repoName = await askText('저장소 이름', defaultName);
89
+ const description = await askText('저장소 설명 (선택, Enter로 건너뛰기)');
90
+ const visibility = await askChoice('저장소 가시성:', [
91
+ { label: 'Private (비공개)', value: 'private' },
92
+ { label: 'Public (공개)', value: 'public' },
93
+ ], 0);
94
+ logger.newline();
95
+ logger.plain('GitHub 저장소 생성 중...');
96
+ const createResult = await createGitHubRepo({
97
+ name: repoName,
98
+ description: description || undefined,
99
+ visibility: visibility,
100
+ });
101
+ if (createResult.success) {
102
+ logger.success(createResult.message);
103
+ hasRemote = true;
104
+ repoCreated = true;
105
+ setupRepo = true;
106
+ }
107
+ else {
108
+ logger.error(createResult.message);
109
+ setupRepo = false;
110
+ }
31
111
  }
32
- logger.warning('Existing installation found. Will backup and overwrite.');
112
+ else {
113
+ setupRepo = false;
114
+ }
115
+ }
116
+ else if (ghAvailable && hasRemote && options.skipRepoSetup === undefined && !options.yes) {
117
+ setupRepo = await askYesNo('GitHub 저장소 설정을 적용하시겠습니까? (머지 규칙, 브랜치 자동 삭제)', true);
118
+ }
119
+ else if (!ghAvailable || !hasRemote) {
120
+ setupRepo = false;
33
121
  }
34
- const spinner = ora('Preparing installation...').start();
35
- spinner.succeed(`Installing version: ${version}`);
36
122
  logger.newline();
123
+ // 설치 실행
124
+ const spinner = ora('설치 중...').start();
37
125
  const result = await performInstall(projectRoot, version, {
38
126
  force: options.force,
39
- skipGithub: options.skipGithub,
40
- skipHooks: options.skipHooks,
127
+ skipGithub: !installGithub,
128
+ skipHooks: !installHooks,
41
129
  });
42
130
  if (!result.success) {
43
- logger.error(`Installation failed: ${result.error}`);
131
+ spinner.fail('설치 실패');
132
+ logger.error(result.error || 'Unknown error');
44
133
  if (result.backupPath) {
45
- logger.plain(`Backup available at: ${result.backupPath}`);
134
+ logger.plain(`백업 위치: ${result.backupPath}`);
46
135
  }
47
136
  process.exit(1);
48
137
  }
138
+ spinner.succeed('설치 완료');
49
139
  // 완료 메시지
50
140
  logger.newline();
51
- logger.success('BMad6GitHub installed successfully!');
52
- logger.highlight('Version', result.version);
141
+ logger.success('BMad6GitHub 성공적으로 설치되었습니다!');
53
142
  if (result.backupPath) {
54
- logger.dim(`Previous installation backed up to: ${result.backupPath}`);
143
+ logger.dim(`이전 버전 백업: ${result.backupPath}`);
144
+ }
145
+ // GitHub 저장소 설정 적용
146
+ if (setupRepo) {
147
+ logger.newline();
148
+ logger.plain('GitHub 저장소 설정 적용 중...');
149
+ const setupResult = await setupGitHubRepo();
150
+ if (setupResult.success) {
151
+ logger.success(setupResult.message);
152
+ }
153
+ else if (setupResult.skipped) {
154
+ logger.warning(setupResult.message);
155
+ }
156
+ else {
157
+ logger.error(setupResult.message);
158
+ }
159
+ }
160
+ else if (!ghAvailable) {
161
+ logger.newline();
162
+ logger.dim('GitHub CLI(gh)가 설치되지 않았거나 인증되지 않았습니다.');
163
+ logger.dim('저장소 설정을 위해 SM 에이전트에서 [GS] GitHub Setup을 실행해주세요.');
55
164
  }
165
+ else if (!hasRemote) {
166
+ logger.newline();
167
+ logger.dim('원격 저장소가 설정되지 않았습니다.');
168
+ logger.dim('저장소 설정을 위해 원격 저장소 추가 후 SM 에이전트에서 [GS] GitHub Setup을 실행해주세요.');
169
+ }
170
+ // 설치 요약
171
+ logger.newline();
172
+ logger.plain('설치 요약:');
173
+ logger.plain(` - _bmad 폴더: ${logger.formatCheck(true)}`);
174
+ logger.plain(` - Claude commands: ${logger.formatCheck(true)}`);
175
+ logger.plain(` - Git 초기화: ${logger.formatCheck(gitInitialized)}`);
176
+ logger.plain(` - GitHub 템플릿: ${logger.formatCheck(installGithub)}`);
177
+ logger.plain(` - Git hooks: ${logger.formatCheck(installHooks)}`);
178
+ logger.plain(` - 저장소 생성: ${logger.formatCheck(repoCreated)}`);
179
+ logger.plain(` - 저장소 설정: ${logger.formatCheck(setupRepo && ghAvailable && hasRemote)}`);
56
180
  logger.newline();
57
- logger.plain('Next steps:');
58
- logger.plain(' 1. Review config: _bmad/bmm/config.yaml');
59
- logger.plain(' 2. Start SM agent: /bmad-agent-bmm-sm');
60
- logger.plain(' 3. Run GitHub setup: [GS] in SM menu');
181
+ logger.plain('다음 단계:');
182
+ logger.plain(' 1. 설정 확인: _bmad/bmm/config.yaml');
183
+ logger.plain(' 2. SM 에이전트 시작: /bmad-agent-bmm-sm');
61
184
  }
62
185
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  export interface UpdateOptions {
2
2
  version?: string;
3
3
  dryRun?: boolean;
4
+ skipGithub?: boolean;
5
+ skipHooks?: boolean;
6
+ skipRepoSetup?: boolean;
7
+ yes?: boolean;
4
8
  }
5
9
  export declare function update(options: UpdateOptions): Promise<void>;
6
10
  //# sourceMappingURL=update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DlE"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2PlE"}
@@ -1,9 +1,12 @@
1
1
  import { readFileSync } from 'fs';
2
+ import { execSync } from 'child_process';
2
3
  import { fileURLToPath } from 'url';
3
- import { dirname, join } from 'path';
4
- import { isBmadInstalled, getCurrentVersion } from '../utils/fs-utils.js';
4
+ import { dirname, join, basename } from 'path';
5
+ import ora from 'ora';
6
+ import { isBmadInstalled, getCurrentVersion, isGitRepository } from '../utils/fs-utils.js';
5
7
  import { logger } from '../utils/logger.js';
6
- import { performInstall } from '../services/installer.js';
8
+ import { performInstall, setupGitHubRepo, createGitHubRepo } from '../services/installer.js';
9
+ import { askYesNo, isGhCliAvailable, hasRemoteRepository, askText, askChoice } from '../utils/prompt-utils.js';
7
10
  const __filename = fileURLToPath(import.meta.url);
8
11
  const __dirname = dirname(__filename);
9
12
  // 패키지 버전 읽기
@@ -23,49 +26,219 @@ export async function update(options) {
23
26
  logger.title('BMad6GitHub Update');
24
27
  // 설치 확인
25
28
  if (!(await isBmadInstalled(projectRoot))) {
26
- logger.error('BMad6GitHub is not installed in this project.');
27
- logger.plain('Run "npx @sleighmaster/bmad install" first.');
29
+ logger.error('BMad6GitHub 설치되지 않았습니다.');
30
+ logger.plain('"npx @sleighmaster/bmad install" 명령어로 먼저 설치해주세요.');
28
31
  process.exit(1);
29
32
  }
30
33
  // 현재 버전 확인
31
34
  const currentVersion = await getCurrentVersion(projectRoot);
32
- logger.highlight('Current version', currentVersion || 'unknown');
33
- logger.highlight('Package version', packageVersion);
35
+ logger.highlight('현재 버전', currentVersion || 'unknown');
36
+ logger.highlight('최신 버전', packageVersion);
34
37
  // 버전 비교
35
38
  if (currentVersion === packageVersion) {
36
39
  logger.newline();
37
- logger.success('You are already on the latest version!');
38
- logger.newline();
39
- logger.dim('To check for newer versions, run:');
40
- logger.plain(' npm info @sleighmaster/bmad version');
40
+ logger.success('이미 최신 버전입니다!');
41
+ // 최신 버전이어도 설정 재적용 옵션 제공
42
+ const ghAvailable = await isGhCliAvailable();
43
+ let hasRemote = await hasRemoteRepository();
44
+ let isGitRepo = await isGitRepository(projectRoot);
45
+ if (!isGitRepo && !options.yes) {
46
+ logger.newline();
47
+ const initGit = await askYesNo('Git 저장소가 아닙니다. git init을 실행하시겠습니까?', false);
48
+ if (initGit) {
49
+ try {
50
+ execSync('git init', { cwd: projectRoot, stdio: 'pipe' });
51
+ isGitRepo = true;
52
+ logger.success('Git 저장소가 초기화되었습니다.');
53
+ }
54
+ catch {
55
+ logger.warning('git init 실패.');
56
+ }
57
+ }
58
+ }
59
+ if (ghAvailable && !hasRemote && isGitRepo && !options.yes) {
60
+ logger.newline();
61
+ const createRepo = await askYesNo('원격 저장소(origin)가 없습니다. GitHub 저장소를 생성하시겠습니까?', false);
62
+ if (createRepo) {
63
+ const defaultName = basename(process.cwd());
64
+ const repoName = await askText('저장소 이름', defaultName);
65
+ const description = await askText('저장소 설명 (선택, Enter로 건너뛰기)');
66
+ const visibility = await askChoice('저장소 가시성:', [
67
+ { label: 'Private (비공개)', value: 'private' },
68
+ { label: 'Public (공개)', value: 'public' },
69
+ ], 0);
70
+ logger.newline();
71
+ logger.plain('GitHub 저장소 생성 중...');
72
+ const createResult = await createGitHubRepo({
73
+ name: repoName,
74
+ description: description || undefined,
75
+ visibility: visibility,
76
+ });
77
+ if (createResult.success) {
78
+ logger.success(createResult.message);
79
+ hasRemote = true;
80
+ // 생성 후 바로 설정 적용
81
+ logger.newline();
82
+ logger.plain('GitHub 저장소 설정 적용 중...');
83
+ const setupResult = await setupGitHubRepo();
84
+ if (setupResult.success) {
85
+ logger.success(setupResult.message);
86
+ }
87
+ else {
88
+ logger.warning(setupResult.message);
89
+ }
90
+ }
91
+ else {
92
+ logger.error(createResult.message);
93
+ }
94
+ }
95
+ }
96
+ else if (ghAvailable && hasRemote && !options.yes) {
97
+ logger.newline();
98
+ const reapplySettings = await askYesNo('GitHub 저장소 설정을 다시 적용하시겠습니까?', false);
99
+ if (reapplySettings) {
100
+ const setupResult = await setupGitHubRepo();
101
+ if (setupResult.success) {
102
+ logger.success(setupResult.message);
103
+ }
104
+ else {
105
+ logger.warning(setupResult.message);
106
+ }
107
+ }
108
+ }
41
109
  return;
42
110
  }
43
111
  if (options.dryRun) {
44
112
  logger.newline();
45
- logger.plain('Dry run mode - would update:');
113
+ logger.plain('Dry run 모드 - 실제 업데이트하지 않음:');
46
114
  logger.highlight('From', currentVersion || 'unknown');
47
115
  logger.highlight('To', packageVersion);
48
116
  return;
49
117
  }
50
118
  logger.newline();
51
- // 업데이트 실행 (force 모드로 설치)
119
+ // 인터랙티브 설정 수집
120
+ logger.plain('업데이트 옵션을 선택해주세요:');
121
+ logger.newline();
122
+ // GitHub 템플릿 업데이트 여부
123
+ let updateGithub = !options.skipGithub;
124
+ if (options.skipGithub === undefined && !options.yes) {
125
+ updateGithub = await askYesNo('GitHub 템플릿을 업데이트하시겠습니까?', true);
126
+ }
127
+ // Git 저장소 확인 및 초기화
128
+ let isGitRepo = await isGitRepository(projectRoot);
129
+ let gitInitialized = false;
130
+ if (!isGitRepo && !options.yes) {
131
+ const initGit = await askYesNo('Git 저장소가 아닙니다. git init을 실행하시겠습니까?', true);
132
+ if (initGit) {
133
+ try {
134
+ execSync('git init', { cwd: projectRoot, stdio: 'pipe' });
135
+ isGitRepo = true;
136
+ gitInitialized = true;
137
+ logger.success('Git 저장소가 초기화되었습니다.');
138
+ }
139
+ catch {
140
+ logger.warning('git init 실패. Git hooks와 저장소 설정을 건너뜁니다.');
141
+ }
142
+ }
143
+ }
144
+ // Git hooks 업데이트 여부
145
+ let updateHooks = !options.skipHooks;
146
+ if (isGitRepo && options.skipHooks === undefined && !options.yes) {
147
+ updateHooks = await askYesNo('Git hooks를 업데이트하시겠습니까?', true);
148
+ }
149
+ else if (!isGitRepo) {
150
+ updateHooks = false;
151
+ }
152
+ // GitHub 저장소 설정 여부
153
+ let setupRepo = !options.skipRepoSetup;
154
+ const ghAvailable = await isGhCliAvailable();
155
+ let hasRemote = await hasRemoteRepository();
156
+ let repoCreated = false;
157
+ if (ghAvailable && !hasRemote && isGitRepo && options.skipRepoSetup === undefined && !options.yes) {
158
+ const createRepo = await askYesNo('원격 저장소(origin)가 없습니다. GitHub 저장소를 생성하시겠습니까?', false);
159
+ if (createRepo) {
160
+ const defaultName = basename(process.cwd());
161
+ const repoName = await askText('저장소 이름', defaultName);
162
+ const description = await askText('저장소 설명 (선택, Enter로 건너뛰기)');
163
+ const visibility = await askChoice('저장소 가시성:', [
164
+ { label: 'Private (비공개)', value: 'private' },
165
+ { label: 'Public (공개)', value: 'public' },
166
+ ], 0);
167
+ logger.newline();
168
+ logger.plain('GitHub 저장소 생성 중...');
169
+ const createResult = await createGitHubRepo({
170
+ name: repoName,
171
+ description: description || undefined,
172
+ visibility: visibility,
173
+ });
174
+ if (createResult.success) {
175
+ logger.success(createResult.message);
176
+ hasRemote = true;
177
+ repoCreated = true;
178
+ setupRepo = true;
179
+ }
180
+ else {
181
+ logger.error(createResult.message);
182
+ setupRepo = false;
183
+ }
184
+ }
185
+ else {
186
+ setupRepo = false;
187
+ }
188
+ }
189
+ else if (ghAvailable && hasRemote && options.skipRepoSetup === undefined && !options.yes) {
190
+ setupRepo = await askYesNo('GitHub 저장소 설정을 확인/업데이트하시겠습니까?', false);
191
+ }
192
+ else if (!ghAvailable || !hasRemote) {
193
+ setupRepo = false;
194
+ }
195
+ logger.newline();
196
+ // 업데이트 실행
197
+ const spinner = ora('업데이트 중...').start();
52
198
  const result = await performInstall(projectRoot, packageVersion, {
53
199
  force: true,
54
- skipGithub: false,
55
- skipHooks: false,
200
+ skipGithub: !updateGithub,
201
+ skipHooks: !updateHooks,
56
202
  });
57
203
  if (!result.success) {
58
- logger.error(`Update failed: ${result.error}`);
204
+ spinner.fail('업데이트 실패');
205
+ logger.error(result.error || 'Unknown error');
59
206
  if (result.backupPath) {
60
- logger.plain(`Backup available at: ${result.backupPath}`);
207
+ logger.plain(`백업 위치: ${result.backupPath}`);
61
208
  }
62
209
  process.exit(1);
63
210
  }
211
+ spinner.succeed('업데이트 완료');
64
212
  logger.newline();
65
- logger.success('BMad6GitHub updated successfully!');
66
- logger.highlight('Version', result.version);
213
+ logger.success('BMad6GitHub 성공적으로 업데이트되었습니다!');
214
+ logger.highlight('버전', result.version);
67
215
  if (result.backupPath) {
68
- logger.dim(`Previous version backed up to: ${result.backupPath}`);
216
+ logger.dim(`이전 버전 백업: ${result.backupPath}`);
69
217
  }
218
+ // GitHub 저장소 설정 적용
219
+ if (setupRepo) {
220
+ logger.newline();
221
+ logger.plain('GitHub 저장소 설정 적용 중...');
222
+ const setupResult = await setupGitHubRepo();
223
+ if (setupResult.success) {
224
+ logger.success(setupResult.message);
225
+ }
226
+ else if (setupResult.skipped) {
227
+ logger.warning(setupResult.message);
228
+ }
229
+ else {
230
+ logger.error(setupResult.message);
231
+ }
232
+ }
233
+ // 업데이트 요약
234
+ logger.newline();
235
+ logger.plain('업데이트 요약:');
236
+ logger.plain(` - _bmad 폴더: ${logger.formatCheck(true)}`);
237
+ logger.plain(` - Claude commands: ${logger.formatCheck(true)}`);
238
+ logger.plain(` - Git 초기화: ${logger.formatCheck(gitInitialized)}`);
239
+ logger.plain(` - GitHub 템플릿: ${logger.formatCheck(updateGithub)}`);
240
+ logger.plain(` - Git hooks: ${logger.formatCheck(updateHooks)}`);
241
+ logger.plain(` - 저장소 생성: ${logger.formatCheck(repoCreated)}`);
242
+ logger.plain(` - 저장소 설정: ${logger.formatCheck(setupRepo && ghAvailable && hasRemote)}`);
70
243
  }
71
244
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,27 @@ export declare function performInstall(projectRoot: string, version: string, opt
12
12
  skipGithub?: boolean;
13
13
  skipHooks?: boolean;
14
14
  }): Promise<InstallResult>;
15
+ export interface GitHubSetupResult {
16
+ success: boolean;
17
+ message: string;
18
+ skipped?: boolean;
19
+ }
20
+ export interface CreateRepoOptions {
21
+ name: string;
22
+ description?: string;
23
+ visibility: 'public' | 'private';
24
+ }
25
+ export interface CreateRepoResult {
26
+ success: boolean;
27
+ message: string;
28
+ repoUrl?: string;
29
+ }
30
+ /**
31
+ * GitHub 저장소 생성 (gh repo create 사용)
32
+ */
33
+ export declare function createGitHubRepo(options: CreateRepoOptions): Promise<CreateRepoResult>;
34
+ /**
35
+ * GitHub 저장소 설정 (머지 규칙, 브랜치 자동 삭제 등)
36
+ */
37
+ export declare function setupGitHubRepo(): Promise<GitHubSetupResult>;
15
38
  //# sourceMappingURL=installer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,OAAO,CAAC,aAAa,CAAC,CAqFxB"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,OAAO,CAAC,aAAa,CAAC,CAqFxB;AA8GD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiD5F;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,CA0DlE"}
@@ -96,7 +96,7 @@ export async function performInstall(projectRoot, version, options = {}) {
96
96
  }
97
97
  }
98
98
  /**
99
- * Git hooks 설치
99
+ * Git hooks 설치 (동적으로 _bmad/hooks/ 폴더의 모든 hook 설치)
100
100
  */
101
101
  async function installGitHooks(projectRoot, dataDir) {
102
102
  const gitDir = path.join(projectRoot, '.git');
@@ -106,35 +106,50 @@ async function installGitHooks(projectRoot, dataDir) {
106
106
  }
107
107
  const hooksDir = path.join(gitDir, 'hooks');
108
108
  await fs.ensureDir(hooksDir);
109
- // pre-commit hook
110
- const srcPreCommit = path.join(dataDir, '_bmad', 'bmm', 'data', 'git-hooks', 'pre-commit');
111
- if (await fs.pathExists(srcPreCommit)) {
112
- const destPreCommit = path.join(hooksDir, 'pre-commit');
113
- await fs.copy(srcPreCommit, destPreCommit);
114
- // 실행 권한 부여 (Unix)
115
- if (process.platform !== 'win32') {
116
- try {
117
- execSync(`chmod +x "${destPreCommit}"`);
118
- }
119
- catch {
120
- // 권한 설정 실패 무시
109
+ // _bmad/hooks/ 폴더에서 모든 hook 파일을 동적으로 설치
110
+ const hooksSourceDir = path.join(dataDir, '_bmad', 'hooks');
111
+ if (!(await fs.pathExists(hooksSourceDir))) {
112
+ logger.warning('No hooks source directory found.');
113
+ return;
114
+ }
115
+ const hookFiles = await fs.readdir(hooksSourceDir);
116
+ let installedCount = 0;
117
+ for (const hookFile of hookFiles) {
118
+ // 스크립트 파일(.ps1, .sh) 및 sample 파일 제외
119
+ if (hookFile.endsWith('.ps1') || hookFile.endsWith('.sh') || hookFile.endsWith('.sample')) {
120
+ continue;
121
+ }
122
+ const srcHook = path.join(hooksSourceDir, hookFile);
123
+ // 파일인지 확인 (디렉토리 제외)
124
+ const stat = await fs.stat(srcHook);
125
+ if (!stat.isFile()) {
126
+ continue;
127
+ }
128
+ const destHook = path.join(hooksDir, hookFile);
129
+ // 기존 hook 백업 (BMAD hook이 아닌 경우)
130
+ if (await fs.pathExists(destHook)) {
131
+ const content = await fs.readFile(destHook, 'utf-8');
132
+ if (!content.includes('BMad6GitHub')) {
133
+ const backup = `${destHook}.backup`;
134
+ await fs.copy(destHook, backup);
135
+ logger.dim(` Backed up existing ${hookFile} to ${hookFile}.backup`);
121
136
  }
122
137
  }
123
- }
124
- // commit-msg hook
125
- const srcCommitMsg = path.join(dataDir, '_bmad', 'bmm', 'data', 'git-hooks', 'commit-msg');
126
- if (await fs.pathExists(srcCommitMsg)) {
127
- const destCommitMsg = path.join(hooksDir, 'commit-msg');
128
- await fs.copy(srcCommitMsg, destCommitMsg);
138
+ await fs.copy(srcHook, destHook);
139
+ installedCount++;
140
+ // Unix 실행 권한 부여
129
141
  if (process.platform !== 'win32') {
130
142
  try {
131
- execSync(`chmod +x "${destCommitMsg}"`);
143
+ execSync(`chmod +x "${destHook}"`);
132
144
  }
133
145
  catch {
134
146
  // 권한 설정 실패 무시
135
147
  }
136
148
  }
137
149
  }
150
+ if (installedCount > 0) {
151
+ logger.dim(` Installed ${installedCount} Git hook(s)`);
152
+ }
138
153
  }
139
154
  /**
140
155
  * .gitignore 업데이트
@@ -169,4 +184,109 @@ async function updateGitignore(projectRoot) {
169
184
  content += missingEntries.join('\n') + '\n';
170
185
  await fs.writeFile(gitignorePath, content, 'utf-8');
171
186
  }
187
+ /**
188
+ * GitHub 저장소 생성 (gh repo create 사용)
189
+ */
190
+ export async function createGitHubRepo(options) {
191
+ try {
192
+ // gh CLI 인증 확인
193
+ try {
194
+ execSync('gh auth status', { stdio: 'ignore' });
195
+ }
196
+ catch {
197
+ return {
198
+ success: false,
199
+ message: 'GitHub CLI(gh)가 인증되지 않았습니다. `gh auth login`을 실행해주세요.',
200
+ };
201
+ }
202
+ // gh repo create 명령어 구성
203
+ const args = [
204
+ 'gh', 'repo', 'create', options.name,
205
+ `--${options.visibility}`,
206
+ '--source=.',
207
+ '--remote=origin',
208
+ ];
209
+ if (options.description) {
210
+ args.push('--description', JSON.stringify(options.description));
211
+ }
212
+ const command = args.join(' ');
213
+ const output = execSync(command, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
214
+ const repoUrl = output.trim();
215
+ return {
216
+ success: true,
217
+ message: `GitHub 저장소가 생성되었습니다: ${repoUrl || options.name}`,
218
+ repoUrl: repoUrl || undefined,
219
+ };
220
+ }
221
+ catch (error) {
222
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
223
+ if (errorMessage.includes('already exists')) {
224
+ return {
225
+ success: false,
226
+ message: `저장소 '${options.name}'이(가) 이미 존재합니다. 다른 이름을 사용해주세요.`,
227
+ };
228
+ }
229
+ return {
230
+ success: false,
231
+ message: `저장소 생성 실패: ${errorMessage}`,
232
+ };
233
+ }
234
+ }
235
+ /**
236
+ * GitHub 저장소 설정 (머지 규칙, 브랜치 자동 삭제 등)
237
+ */
238
+ export async function setupGitHubRepo() {
239
+ try {
240
+ // gh CLI 인증 확인
241
+ try {
242
+ execSync('gh auth status', { stdio: 'ignore' });
243
+ }
244
+ catch {
245
+ return {
246
+ success: false,
247
+ message: 'GitHub CLI(gh)가 인증되지 않았습니다. `gh auth login`을 실행해주세요.',
248
+ skipped: true,
249
+ };
250
+ }
251
+ // 원격 저장소 확인
252
+ try {
253
+ const remote = execSync('git remote -v', { encoding: 'utf-8' });
254
+ if (!remote.includes('origin')) {
255
+ return {
256
+ success: false,
257
+ message: '원격 저장소(origin)가 설정되지 않았습니다.',
258
+ skipped: true,
259
+ };
260
+ }
261
+ }
262
+ catch {
263
+ return {
264
+ success: false,
265
+ message: 'Git 저장소가 아니거나 원격 저장소가 없습니다.',
266
+ skipped: true,
267
+ };
268
+ }
269
+ // GitHub 저장소 설정 적용
270
+ execSync('gh repo edit --enable-merge-commit --enable-squash-merge=false --enable-rebase-merge=false --delete-branch-on-merge', { stdio: 'inherit' });
271
+ return {
272
+ success: true,
273
+ message: '저장소 설정 완료: Merge Commit만 허용, 브랜치 자동 삭제 활성화',
274
+ };
275
+ }
276
+ catch (error) {
277
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
278
+ // GitHub Free + Private 저장소 제한 체크
279
+ if (errorMessage.includes('403') || errorMessage.includes('Upgrade')) {
280
+ return {
281
+ success: false,
282
+ message: 'GitHub Free 플랜의 Private 저장소에서는 일부 설정이 제한됩니다. GitHub 웹에서 수동으로 설정해주세요.',
283
+ skipped: true,
284
+ };
285
+ }
286
+ return {
287
+ success: false,
288
+ message: `저장소 설정 실패: ${errorMessage}`,
289
+ };
290
+ }
291
+ }
172
292
  //# sourceMappingURL=installer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,10 @@ export declare function isProjectRoot(dir: string): Promise<boolean>;
6
6
  * _bmad 폴더가 설치되어 있는지 확인
7
7
  */
8
8
  export declare function isBmadInstalled(dir: string): Promise<boolean>;
9
+ /**
10
+ * Git 저장소인지 확인
11
+ */
12
+ export declare function isGitRepository(dir: string): Promise<boolean>;
9
13
  /**
10
14
  * 현재 설치된 버전 읽기
11
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../../src/utils/fs-utils.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIjE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ3E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKhF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAMrE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9E;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMvE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF"}
1
+ {"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../../src/utils/fs-utils.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIjE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ3E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKhF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAMrE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9E;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMvE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF"}
@@ -15,6 +15,12 @@ export async function isProjectRoot(dir) {
15
15
  export async function isBmadInstalled(dir) {
16
16
  return fs.pathExists(path.join(dir, '_bmad'));
17
17
  }
18
+ /**
19
+ * Git 저장소인지 확인
20
+ */
21
+ export async function isGitRepository(dir) {
22
+ return fs.pathExists(path.join(dir, '.git'));
23
+ }
18
24
  /**
19
25
  * 현재 설치된 버전 읽기
20
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../../src/utils/fs-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../../src/utils/fs-utils.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,6 @@ export declare const logger: {
9
9
  plain: (message: string) => void;
10
10
  dim: (message: string) => void;
11
11
  highlight: (label: string, value: string) => void;
12
+ formatCheck: (value: boolean) => string;
12
13
  };
13
14
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;oBACD,MAAM;uBAIH,MAAM;uBAIN,MAAM;qBAIR,MAAM;iBAIV,MAAM,SAAS,MAAM,WAAW,MAAM;qBAIlC,MAAM;;qBAYN,MAAM;mBAIR,MAAM;uBAIF,MAAM,SAAS,MAAM;CAGzC,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;oBACD,MAAM;uBAIH,MAAM;uBAIN,MAAM;qBAIR,MAAM;iBAIV,MAAM,SAAS,MAAM,WAAW,MAAM;qBAIlC,MAAM;;qBAYN,MAAM;mBAIR,MAAM;uBAIF,MAAM,SAAS,MAAM;yBAInB,OAAO,KAAG,MAAM;CAGtC,CAAC"}
@@ -34,5 +34,8 @@ export const logger = {
34
34
  highlight: (label, value) => {
35
35
  console.log(chalk.gray(label + ':'), chalk.cyan(value));
36
36
  },
37
+ formatCheck: (value) => {
38
+ return value ? chalk.green('✔') : chalk.dim('✗');
39
+ },
37
40
  };
38
41
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,GAAG,EAAE,CAAC,OAAe,EAAE,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,GAAG,EAAE,CAAC,OAAe,EAAE,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,WAAW,EAAE,CAAC,KAAc,EAAU,EAAE;QACtC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;CACF,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 사용자에게 y/n 질문을 하고 응답을 받음
3
+ */
4
+ export declare function askYesNo(question: string, defaultValue?: boolean): Promise<boolean>;
5
+ /**
6
+ * gh CLI가 설치되어 있고 인증되어 있는지 확인
7
+ */
8
+ export declare function isGhCliAvailable(): Promise<boolean>;
9
+ /**
10
+ * 원격 저장소가 설정되어 있는지 확인
11
+ */
12
+ export declare function hasRemoteRepository(): Promise<boolean>;
13
+ /**
14
+ * 사용자에게 텍스트 입력을 받음
15
+ */
16
+ export declare function askText(question: string, defaultValue?: string): Promise<string>;
17
+ /**
18
+ * 사용자에게 선택지를 제시하고 번호로 선택을 받음
19
+ */
20
+ export declare function askChoice(question: string, choices: {
21
+ label: string;
22
+ value: string;
23
+ }[], defaultIndex?: number): Promise<string>;
24
+ //# sourceMappingURL=prompt-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-utils.d.ts","sourceRoot":"","sources":["../../src/utils/prompt-utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBhG;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CASzD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS5D;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAe1F;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EAC3C,YAAY,GAAE,MAAU,GACvB,OAAO,CAAC,MAAM,CAAC,CA4BjB"}
@@ -0,0 +1,101 @@
1
+ import readline from 'readline';
2
+ /**
3
+ * 사용자에게 y/n 질문을 하고 응답을 받음
4
+ */
5
+ export async function askYesNo(question, defaultValue = false) {
6
+ const rl = readline.createInterface({
7
+ input: process.stdin,
8
+ output: process.stdout,
9
+ });
10
+ const hint = defaultValue ? '[Y/n]' : '[y/N]';
11
+ return new Promise((resolve) => {
12
+ rl.question(`${question} ${hint} `, (answer) => {
13
+ rl.close();
14
+ const normalizedAnswer = answer.trim().toLowerCase();
15
+ if (normalizedAnswer === '') {
16
+ resolve(defaultValue);
17
+ }
18
+ else if (normalizedAnswer === 'y' || normalizedAnswer === 'yes') {
19
+ resolve(true);
20
+ }
21
+ else {
22
+ resolve(false);
23
+ }
24
+ });
25
+ });
26
+ }
27
+ /**
28
+ * gh CLI가 설치되어 있고 인증되어 있는지 확인
29
+ */
30
+ export async function isGhCliAvailable() {
31
+ const { execSync } = await import('child_process');
32
+ try {
33
+ execSync('gh auth status', { stdio: 'ignore' });
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ /**
41
+ * 원격 저장소가 설정되어 있는지 확인
42
+ */
43
+ export async function hasRemoteRepository() {
44
+ const { execSync } = await import('child_process');
45
+ try {
46
+ const result = execSync('git remote -v', { encoding: 'utf-8' });
47
+ return result.includes('origin');
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ }
53
+ /**
54
+ * 사용자에게 텍스트 입력을 받음
55
+ */
56
+ export async function askText(question, defaultValue = '') {
57
+ const rl = readline.createInterface({
58
+ input: process.stdin,
59
+ output: process.stdout,
60
+ });
61
+ const hint = defaultValue ? ` [${defaultValue}]` : '';
62
+ return new Promise((resolve) => {
63
+ rl.question(`${question}${hint}: `, (answer) => {
64
+ rl.close();
65
+ const trimmed = answer.trim();
66
+ resolve(trimmed || defaultValue);
67
+ });
68
+ });
69
+ }
70
+ /**
71
+ * 사용자에게 선택지를 제시하고 번호로 선택을 받음
72
+ */
73
+ export async function askChoice(question, choices, defaultIndex = 0) {
74
+ const rl = readline.createInterface({
75
+ input: process.stdin,
76
+ output: process.stdout,
77
+ });
78
+ console.log(question);
79
+ choices.forEach((choice, index) => {
80
+ const marker = index === defaultIndex ? '>' : ' ';
81
+ console.log(` ${marker} ${index + 1}. ${choice.label}`);
82
+ });
83
+ return new Promise((resolve) => {
84
+ rl.question(`선택 [${defaultIndex + 1}]: `, (answer) => {
85
+ rl.close();
86
+ const trimmed = answer.trim();
87
+ if (trimmed === '') {
88
+ resolve(choices[defaultIndex].value);
89
+ return;
90
+ }
91
+ const num = parseInt(trimmed, 10);
92
+ if (num >= 1 && num <= choices.length) {
93
+ resolve(choices[num - 1].value);
94
+ }
95
+ else {
96
+ resolve(choices[defaultIndex].value);
97
+ }
98
+ });
99
+ });
100
+ }
101
+ //# sourceMappingURL=prompt-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-utils.js","sourceRoot":"","sources":["../../src/utils/prompt-utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleighmaster/bmad",
3
- "version": "1.4.1",
3
+ "version": "1.5.0",
4
4
  "description": "BMad6GitHub CLI - BMAD + GitHub Integration installer",
5
5
  "type": "module",
6
6
  "bin": {