specweave 0.15.1 → 0.16.2
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/CLAUDE.md +38 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +162 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/helpers/github/increment-profile-selector.d.ts +47 -0
- package/dist/cli/helpers/github/increment-profile-selector.d.ts.map +1 -0
- package/dist/cli/helpers/github/increment-profile-selector.js +186 -0
- package/dist/cli/helpers/github/increment-profile-selector.js.map +1 -0
- package/dist/cli/helpers/github/profile-manager.d.ts +119 -0
- package/dist/cli/helpers/github/profile-manager.d.ts.map +1 -0
- package/dist/cli/helpers/github/profile-manager.js +311 -0
- package/dist/cli/helpers/github/profile-manager.js.map +1 -0
- package/dist/cli/helpers/issue-tracker/github-multi-repo.d.ts +81 -0
- package/dist/cli/helpers/issue-tracker/github-multi-repo.d.ts.map +1 -0
- package/dist/cli/helpers/issue-tracker/github-multi-repo.js +385 -0
- package/dist/cli/helpers/issue-tracker/github-multi-repo.js.map +1 -0
- package/dist/cli/helpers/issue-tracker/github.d.ts +13 -0
- package/dist/cli/helpers/issue-tracker/github.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/github.js +38 -143
- package/dist/cli/helpers/issue-tracker/github.js.map +1 -1
- package/dist/cli/helpers/issue-tracker/index.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/index.js +126 -43
- package/dist/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/cli/helpers/issue-tracker/utils.d.ts +8 -0
- package/dist/cli/helpers/issue-tracker/utils.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/utils.js +46 -0
- package/dist/cli/helpers/issue-tracker/utils.js.map +1 -1
- package/dist/core/increment/active-increment-manager.d.ts +79 -0
- package/dist/core/increment/active-increment-manager.d.ts.map +1 -0
- package/dist/core/increment/active-increment-manager.js +153 -0
- package/dist/core/increment/active-increment-manager.js.map +1 -0
- package/dist/core/increment/metadata-manager.d.ts +2 -0
- package/dist/core/increment/metadata-manager.d.ts.map +1 -1
- package/dist/core/increment/metadata-manager.js +15 -0
- package/dist/core/increment/metadata-manager.js.map +1 -1
- package/dist/utils/git-detector.d.ts +84 -0
- package/dist/utils/git-detector.d.ts.map +1 -0
- package/dist/utils/git-detector.js +233 -0
- package/dist/utils/git-detector.js.map +1 -0
- package/package.json +2 -2
- package/plugins/specweave/commands/specweave-done.md +109 -1
- package/plugins/specweave/hooks/lib/update-status-line.sh +30 -4
- package/plugins/specweave/hooks/post-increment-planning.sh +50 -5
- package/plugins/specweave/hooks/user-prompt-submit.sh +77 -21
- package/plugins/specweave/skills/increment-planner/SKILL.md +12 -5
- package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +26 -5
- package/plugins/specweave-ado/skills/ado-sync/SKILL.md +2 -2
- package/plugins/specweave-figma/ARCHITECTURE.md +1 -1
- package/plugins/specweave-figma/README.md +1 -1
- package/plugins/specweave-ml/README.md +1 -1
- package/src/templates/CLAUDE.md.template +8 -9
- package/plugins/specweave-github/hooks/post-increment-done.sh +0 -224
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Multi-Repository GitHub Integration
|
|
3
|
+
*
|
|
4
|
+
* Provides improved UX for various GitHub repository configurations:
|
|
5
|
+
* - No repository yet (greenfield)
|
|
6
|
+
* - Single repository
|
|
7
|
+
* - Multiple repositories (microservices/polyrepo)
|
|
8
|
+
* - Monorepo (single repo, multiple projects)
|
|
9
|
+
* - Auto-detection from git remotes
|
|
10
|
+
*
|
|
11
|
+
* @module cli/helpers/issue-tracker/github-multi-repo
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* GitHub setup type options
|
|
15
|
+
*/
|
|
16
|
+
export type GitHubSetupType = 'none' | 'single' | 'multiple' | 'monorepo' | 'auto-detect';
|
|
17
|
+
/**
|
|
18
|
+
* GitHub repository profile
|
|
19
|
+
*/
|
|
20
|
+
export interface GitHubProfile {
|
|
21
|
+
id: string;
|
|
22
|
+
displayName: string;
|
|
23
|
+
owner: string;
|
|
24
|
+
repo: string;
|
|
25
|
+
isDefault?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* GitHub configuration result
|
|
29
|
+
*/
|
|
30
|
+
export interface GitHubConfiguration {
|
|
31
|
+
token: string;
|
|
32
|
+
instanceType: 'cloud' | 'enterprise';
|
|
33
|
+
apiEndpoint?: string;
|
|
34
|
+
setupType: GitHubSetupType;
|
|
35
|
+
profiles: GitHubProfile[];
|
|
36
|
+
monorepoProjects?: string[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Prompt for GitHub setup type
|
|
40
|
+
*
|
|
41
|
+
* @returns Selected setup type
|
|
42
|
+
*/
|
|
43
|
+
export declare function promptGitHubSetupType(): Promise<GitHubSetupType>;
|
|
44
|
+
/**
|
|
45
|
+
* Configure no repository (defer setup)
|
|
46
|
+
*
|
|
47
|
+
* @returns Empty profiles array
|
|
48
|
+
*/
|
|
49
|
+
export declare function configureNoRepository(): Promise<GitHubProfile[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Configure single repository
|
|
52
|
+
*
|
|
53
|
+
* @param projectPath - Path to project directory
|
|
54
|
+
* @returns Single profile array
|
|
55
|
+
*/
|
|
56
|
+
export declare function configureSingleRepository(projectPath: string): Promise<GitHubProfile[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Configure multiple repositories
|
|
59
|
+
*
|
|
60
|
+
* @param projectPath - Path to project directory
|
|
61
|
+
* @returns Multiple profiles array
|
|
62
|
+
*/
|
|
63
|
+
export declare function configureMultipleRepositories(projectPath: string): Promise<GitHubProfile[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Configure monorepo
|
|
66
|
+
*
|
|
67
|
+
* @param projectPath - Path to project directory
|
|
68
|
+
* @returns Single profile with projects
|
|
69
|
+
*/
|
|
70
|
+
export declare function configureMonorepo(projectPath: string): Promise<{
|
|
71
|
+
profiles: GitHubProfile[];
|
|
72
|
+
projects: string[];
|
|
73
|
+
}>;
|
|
74
|
+
/**
|
|
75
|
+
* Auto-detect and configure repositories
|
|
76
|
+
*
|
|
77
|
+
* @param projectPath - Path to project directory
|
|
78
|
+
* @returns Detected profiles
|
|
79
|
+
*/
|
|
80
|
+
export declare function autoDetectRepositories(projectPath: string): Promise<GitHubProfile[]>;
|
|
81
|
+
//# sourceMappingURL=github-multi-repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-multi-repo.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/github-multi-repo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,GAAG,YAAY,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC,CAuCtE;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAMtE;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAyE7F;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAgHjG;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACpE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAC,CA8BD;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA0G1F"}
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Multi-Repository GitHub Integration
|
|
3
|
+
*
|
|
4
|
+
* Provides improved UX for various GitHub repository configurations:
|
|
5
|
+
* - No repository yet (greenfield)
|
|
6
|
+
* - Single repository
|
|
7
|
+
* - Multiple repositories (microservices/polyrepo)
|
|
8
|
+
* - Monorepo (single repo, multiple projects)
|
|
9
|
+
* - Auto-detection from git remotes
|
|
10
|
+
*
|
|
11
|
+
* @module cli/helpers/issue-tracker/github-multi-repo
|
|
12
|
+
*/
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
import inquirer from 'inquirer';
|
|
15
|
+
import ora from 'ora';
|
|
16
|
+
import { detectGitHubRemotes, detectPrimaryGitHubRemote, getUniqueRepositories } from '../../../utils/git-detector.js';
|
|
17
|
+
/**
|
|
18
|
+
* Prompt for GitHub setup type
|
|
19
|
+
*
|
|
20
|
+
* @returns Selected setup type
|
|
21
|
+
*/
|
|
22
|
+
export async function promptGitHubSetupType() {
|
|
23
|
+
console.log(chalk.cyan('\n📂 Repository Configuration\n'));
|
|
24
|
+
console.log(chalk.gray('How should we configure your GitHub repositories?\n'));
|
|
25
|
+
const { setupType } = await inquirer.prompt([{
|
|
26
|
+
type: 'list',
|
|
27
|
+
name: 'setupType',
|
|
28
|
+
message: 'Select your repository setup:',
|
|
29
|
+
choices: [
|
|
30
|
+
{
|
|
31
|
+
name: '⏭️ No repository yet (configure later)',
|
|
32
|
+
value: 'none',
|
|
33
|
+
short: 'No repo'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: '📦 Single repository',
|
|
37
|
+
value: 'single',
|
|
38
|
+
short: 'Single'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: '🎯 Multiple repositories (microservices/polyrepo)',
|
|
42
|
+
value: 'multiple',
|
|
43
|
+
short: 'Multiple'
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: '📚 Monorepo (single repo, multiple projects)',
|
|
47
|
+
value: 'monorepo',
|
|
48
|
+
short: 'Monorepo'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: '🔍 Auto-detect from git remotes',
|
|
52
|
+
value: 'auto-detect',
|
|
53
|
+
short: 'Auto-detect'
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
default: 'single'
|
|
57
|
+
}]);
|
|
58
|
+
return setupType;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Configure no repository (defer setup)
|
|
62
|
+
*
|
|
63
|
+
* @returns Empty profiles array
|
|
64
|
+
*/
|
|
65
|
+
export async function configureNoRepository() {
|
|
66
|
+
console.log(chalk.yellow('\n⏭️ Repository configuration deferred'));
|
|
67
|
+
console.log(chalk.gray('You can configure repositories later using:'));
|
|
68
|
+
console.log(chalk.white(' /specweave-github:setup\n'));
|
|
69
|
+
return [];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Configure single repository
|
|
73
|
+
*
|
|
74
|
+
* @param projectPath - Path to project directory
|
|
75
|
+
* @returns Single profile array
|
|
76
|
+
*/
|
|
77
|
+
export async function configureSingleRepository(projectPath) {
|
|
78
|
+
console.log(chalk.cyan('\n📦 Single Repository Setup\n'));
|
|
79
|
+
// Try to detect from git remote
|
|
80
|
+
const primaryRemote = await detectPrimaryGitHubRemote(projectPath);
|
|
81
|
+
let defaultOwner = '';
|
|
82
|
+
let defaultRepo = '';
|
|
83
|
+
if (primaryRemote && primaryRemote.owner && primaryRemote.repo) {
|
|
84
|
+
console.log(chalk.green(`✓ Detected: ${primaryRemote.owner}/${primaryRemote.repo}`));
|
|
85
|
+
defaultOwner = primaryRemote.owner;
|
|
86
|
+
defaultRepo = primaryRemote.repo;
|
|
87
|
+
const { useDetected } = await inquirer.prompt([{
|
|
88
|
+
type: 'confirm',
|
|
89
|
+
name: 'useDetected',
|
|
90
|
+
message: 'Use detected repository?',
|
|
91
|
+
default: true
|
|
92
|
+
}]);
|
|
93
|
+
if (useDetected) {
|
|
94
|
+
return [{
|
|
95
|
+
id: 'main',
|
|
96
|
+
displayName: 'Main Repository',
|
|
97
|
+
owner: defaultOwner,
|
|
98
|
+
repo: defaultRepo,
|
|
99
|
+
isDefault: true
|
|
100
|
+
}];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Manual entry
|
|
104
|
+
const answers = await inquirer.prompt([
|
|
105
|
+
{
|
|
106
|
+
type: 'input',
|
|
107
|
+
name: 'owner',
|
|
108
|
+
message: 'GitHub owner/organization:',
|
|
109
|
+
default: defaultOwner,
|
|
110
|
+
validate: (input) => {
|
|
111
|
+
if (!input.trim()) {
|
|
112
|
+
return 'Owner is required';
|
|
113
|
+
}
|
|
114
|
+
if (!/^[a-zA-Z0-9]([a-zA-Z0-9-])*$/.test(input)) {
|
|
115
|
+
return 'Invalid GitHub username/organization format';
|
|
116
|
+
}
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'input',
|
|
122
|
+
name: 'repo',
|
|
123
|
+
message: 'Repository name:',
|
|
124
|
+
default: defaultRepo,
|
|
125
|
+
validate: (input) => {
|
|
126
|
+
if (!input.trim()) {
|
|
127
|
+
return 'Repository name is required';
|
|
128
|
+
}
|
|
129
|
+
if (!/^[a-zA-Z0-9._-]+$/.test(input)) {
|
|
130
|
+
return 'Invalid repository name format';
|
|
131
|
+
}
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
]);
|
|
136
|
+
return [{
|
|
137
|
+
id: 'main',
|
|
138
|
+
displayName: 'Main Repository',
|
|
139
|
+
owner: answers.owner,
|
|
140
|
+
repo: answers.repo,
|
|
141
|
+
isDefault: true
|
|
142
|
+
}];
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Configure multiple repositories
|
|
146
|
+
*
|
|
147
|
+
* @param projectPath - Path to project directory
|
|
148
|
+
* @returns Multiple profiles array
|
|
149
|
+
*/
|
|
150
|
+
export async function configureMultipleRepositories(projectPath) {
|
|
151
|
+
console.log(chalk.cyan('\n🎯 Multiple Repositories Setup\n'));
|
|
152
|
+
console.log(chalk.gray('Configure each repository for your microservices/polyrepo architecture.\n'));
|
|
153
|
+
const { repoCount } = await inquirer.prompt([{
|
|
154
|
+
type: 'number',
|
|
155
|
+
name: 'repoCount',
|
|
156
|
+
message: 'How many repositories?',
|
|
157
|
+
default: 2,
|
|
158
|
+
validate: (input) => {
|
|
159
|
+
if (input < 2) {
|
|
160
|
+
return 'Please enter at least 2 repositories';
|
|
161
|
+
}
|
|
162
|
+
if (input > 10) {
|
|
163
|
+
return 'Maximum 10 repositories supported';
|
|
164
|
+
}
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
}]);
|
|
168
|
+
const profiles = [];
|
|
169
|
+
// Check for existing remotes
|
|
170
|
+
const githubRemotes = await detectGitHubRemotes(projectPath);
|
|
171
|
+
const uniqueRepos = getUniqueRepositories(githubRemotes);
|
|
172
|
+
// If we have detected repos, offer them as suggestions
|
|
173
|
+
if (uniqueRepos.length > 0) {
|
|
174
|
+
console.log(chalk.green('\n✓ Detected GitHub repositories:'));
|
|
175
|
+
uniqueRepos.forEach((repo, index) => {
|
|
176
|
+
console.log(chalk.gray(` ${index + 1}. ${repo.owner}/${repo.repo}`));
|
|
177
|
+
});
|
|
178
|
+
console.log('');
|
|
179
|
+
}
|
|
180
|
+
for (let i = 0; i < repoCount; i++) {
|
|
181
|
+
console.log(chalk.white(`\n📦 Repository ${i + 1} of ${repoCount}:`));
|
|
182
|
+
// Check if we have a suggestion for this index
|
|
183
|
+
let defaultOwner = '';
|
|
184
|
+
let defaultRepo = '';
|
|
185
|
+
if (uniqueRepos[i]) {
|
|
186
|
+
defaultOwner = uniqueRepos[i].owner;
|
|
187
|
+
defaultRepo = uniqueRepos[i].repo;
|
|
188
|
+
}
|
|
189
|
+
const answers = await inquirer.prompt([
|
|
190
|
+
{
|
|
191
|
+
type: 'input',
|
|
192
|
+
name: 'id',
|
|
193
|
+
message: 'Repository ID (e.g., frontend, backend, api):',
|
|
194
|
+
validate: (input) => {
|
|
195
|
+
if (!input.trim()) {
|
|
196
|
+
return 'ID is required';
|
|
197
|
+
}
|
|
198
|
+
if (!/^[a-z][a-z0-9-]*$/.test(input)) {
|
|
199
|
+
return 'ID must be lowercase letters, numbers, and hyphens';
|
|
200
|
+
}
|
|
201
|
+
if (profiles.some(p => p.id === input)) {
|
|
202
|
+
return 'ID must be unique';
|
|
203
|
+
}
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
type: 'input',
|
|
209
|
+
name: 'displayName',
|
|
210
|
+
message: 'Display name (e.g., Frontend Application):',
|
|
211
|
+
validate: (input) => !!input.trim() || 'Display name is required'
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
type: 'input',
|
|
215
|
+
name: 'owner',
|
|
216
|
+
message: 'GitHub owner/organization:',
|
|
217
|
+
default: defaultOwner || (profiles[0]?.owner || ''), // Reuse previous owner
|
|
218
|
+
validate: (input) => {
|
|
219
|
+
if (!input.trim()) {
|
|
220
|
+
return 'Owner is required';
|
|
221
|
+
}
|
|
222
|
+
if (!/^[a-zA-Z0-9]([a-zA-Z0-9-])*$/.test(input)) {
|
|
223
|
+
return 'Invalid GitHub username/organization format';
|
|
224
|
+
}
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
type: 'input',
|
|
230
|
+
name: 'repo',
|
|
231
|
+
message: 'Repository name:',
|
|
232
|
+
default: defaultRepo,
|
|
233
|
+
validate: (input) => {
|
|
234
|
+
if (!input.trim()) {
|
|
235
|
+
return 'Repository name is required';
|
|
236
|
+
}
|
|
237
|
+
if (!/^[a-zA-Z0-9._-]+$/.test(input)) {
|
|
238
|
+
return 'Invalid repository name format';
|
|
239
|
+
}
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
]);
|
|
244
|
+
profiles.push({
|
|
245
|
+
id: answers.id,
|
|
246
|
+
displayName: answers.displayName,
|
|
247
|
+
owner: answers.owner,
|
|
248
|
+
repo: answers.repo,
|
|
249
|
+
isDefault: i === 0 // First repo is default
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
return profiles;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Configure monorepo
|
|
256
|
+
*
|
|
257
|
+
* @param projectPath - Path to project directory
|
|
258
|
+
* @returns Single profile with projects
|
|
259
|
+
*/
|
|
260
|
+
export async function configureMonorepo(projectPath) {
|
|
261
|
+
console.log(chalk.cyan('\n📚 Monorepo Setup\n'));
|
|
262
|
+
console.log(chalk.gray('Configure a single repository with multiple projects.\n'));
|
|
263
|
+
// First configure the repository (similar to single repo)
|
|
264
|
+
const profiles = await configureSingleRepository(projectPath);
|
|
265
|
+
// Then ask for projects within the monorepo
|
|
266
|
+
console.log(chalk.cyan('\n📂 Projects in Monorepo\n'));
|
|
267
|
+
console.log(chalk.gray('List the projects/packages in your monorepo.\n'));
|
|
268
|
+
const { projectsInput } = await inquirer.prompt([{
|
|
269
|
+
type: 'input',
|
|
270
|
+
name: 'projectsInput',
|
|
271
|
+
message: 'Project names (comma-separated, e.g., frontend,backend,shared):',
|
|
272
|
+
validate: (input) => {
|
|
273
|
+
if (!input.trim()) {
|
|
274
|
+
return 'At least one project is required';
|
|
275
|
+
}
|
|
276
|
+
const projects = input.split(',').map(p => p.trim());
|
|
277
|
+
if (projects.length < 2) {
|
|
278
|
+
return 'Monorepo should have at least 2 projects';
|
|
279
|
+
}
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
}]);
|
|
283
|
+
const projects = projectsInput.split(',').map((p) => p.trim());
|
|
284
|
+
return { profiles, projects };
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Auto-detect and configure repositories
|
|
288
|
+
*
|
|
289
|
+
* @param projectPath - Path to project directory
|
|
290
|
+
* @returns Detected profiles
|
|
291
|
+
*/
|
|
292
|
+
export async function autoDetectRepositories(projectPath) {
|
|
293
|
+
const spinner = ora('Detecting GitHub repositories...').start();
|
|
294
|
+
const githubRemotes = await detectGitHubRemotes(projectPath);
|
|
295
|
+
const uniqueRepos = getUniqueRepositories(githubRemotes);
|
|
296
|
+
if (uniqueRepos.length === 0) {
|
|
297
|
+
spinner.fail('No GitHub repositories detected');
|
|
298
|
+
console.log(chalk.yellow('\n⚠️ No GitHub remotes found'));
|
|
299
|
+
console.log(chalk.gray(' Falling back to manual configuration\n'));
|
|
300
|
+
// Fall back to single repo configuration
|
|
301
|
+
return configureSingleRepository(projectPath);
|
|
302
|
+
}
|
|
303
|
+
spinner.succeed(`Found ${uniqueRepos.length} GitHub repositor${uniqueRepos.length === 1 ? 'y' : 'ies'}`);
|
|
304
|
+
console.log(chalk.green('\n✓ Detected repositories:'));
|
|
305
|
+
uniqueRepos.forEach((repo, index) => {
|
|
306
|
+
console.log(chalk.white(` ${index + 1}. ${repo.owner}/${repo.repo}`));
|
|
307
|
+
});
|
|
308
|
+
const { confirmDetected } = await inquirer.prompt([{
|
|
309
|
+
type: 'confirm',
|
|
310
|
+
name: 'confirmDetected',
|
|
311
|
+
message: 'Use all detected repositories?',
|
|
312
|
+
default: true
|
|
313
|
+
}]);
|
|
314
|
+
if (!confirmDetected) {
|
|
315
|
+
// Ask which setup type they want instead
|
|
316
|
+
const setupType = await promptGitHubSetupType();
|
|
317
|
+
switch (setupType) {
|
|
318
|
+
case 'none':
|
|
319
|
+
return configureNoRepository();
|
|
320
|
+
case 'single':
|
|
321
|
+
return configureSingleRepository(projectPath);
|
|
322
|
+
case 'multiple':
|
|
323
|
+
return configureMultipleRepositories(projectPath);
|
|
324
|
+
case 'monorepo':
|
|
325
|
+
const result = await configureMonorepo(projectPath);
|
|
326
|
+
return result.profiles;
|
|
327
|
+
default:
|
|
328
|
+
return [];
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
// Create profiles from detected repos
|
|
332
|
+
const profiles = [];
|
|
333
|
+
for (let i = 0; i < uniqueRepos.length; i++) {
|
|
334
|
+
const repo = uniqueRepos[i];
|
|
335
|
+
if (uniqueRepos.length === 1) {
|
|
336
|
+
// Single repo - use simple ID
|
|
337
|
+
profiles.push({
|
|
338
|
+
id: 'main',
|
|
339
|
+
displayName: 'Main Repository',
|
|
340
|
+
owner: repo.owner,
|
|
341
|
+
repo: repo.repo,
|
|
342
|
+
isDefault: true
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
// Multiple repos - need IDs
|
|
347
|
+
console.log(chalk.white(`\n📦 Repository: ${repo.owner}/${repo.repo}`));
|
|
348
|
+
const { id, displayName } = await inquirer.prompt([
|
|
349
|
+
{
|
|
350
|
+
type: 'input',
|
|
351
|
+
name: 'id',
|
|
352
|
+
message: 'Repository ID:',
|
|
353
|
+
default: repo.repo.replace(/-app$|-service$|-api$/, ''), // Smart default
|
|
354
|
+
validate: (input) => {
|
|
355
|
+
if (!input.trim()) {
|
|
356
|
+
return 'ID is required';
|
|
357
|
+
}
|
|
358
|
+
if (!/^[a-z][a-z0-9-]*$/.test(input)) {
|
|
359
|
+
return 'ID must be lowercase letters, numbers, and hyphens';
|
|
360
|
+
}
|
|
361
|
+
if (profiles.some(p => p.id === input)) {
|
|
362
|
+
return 'ID must be unique';
|
|
363
|
+
}
|
|
364
|
+
return true;
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
type: 'input',
|
|
369
|
+
name: 'displayName',
|
|
370
|
+
message: 'Display name:',
|
|
371
|
+
default: repo.repo.split('-').map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(' ') // Smart default: "frontend-app" -> "Frontend App"
|
|
372
|
+
}
|
|
373
|
+
]);
|
|
374
|
+
profiles.push({
|
|
375
|
+
id,
|
|
376
|
+
displayName,
|
|
377
|
+
owner: repo.owner,
|
|
378
|
+
repo: repo.repo,
|
|
379
|
+
isDefault: i === 0
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return profiles;
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=github-multi-repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-multi-repo.js","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/github-multi-repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,4 +62,17 @@ export declare function showGitHubSetupComplete(language: SupportedLanguage): vo
|
|
|
62
62
|
* @param language - User's language
|
|
63
63
|
*/
|
|
64
64
|
export declare function showGitHubSetupSkipped(language: SupportedLanguage): void;
|
|
65
|
+
/**
|
|
66
|
+
* Configure GitHub repositories
|
|
67
|
+
*
|
|
68
|
+
* This is called after credentials are validated to set up repository profiles
|
|
69
|
+
*
|
|
70
|
+
* @param projectPath - Path to project directory
|
|
71
|
+
* @param language - User's language
|
|
72
|
+
* @returns Repository profiles
|
|
73
|
+
*/
|
|
74
|
+
export declare function configureGitHubRepositories(projectPath: string, language: SupportedLanguage): Promise<{
|
|
75
|
+
profiles: any[];
|
|
76
|
+
monorepoProjects?: string[];
|
|
77
|
+
}>;
|
|
65
78
|
//# sourceMappingURL=github.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/github.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAOpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAIrE;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA6BrC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/issue-tracker/github.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAOpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAIrE;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA6BrC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAwInC;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,iBAAiB,EAC9B,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,gBAAgB,CAAC,CA2D3B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CActG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAWzE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAOxE;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoC3D"}
|