specweave 0.28.50 → 0.28.51
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/src/cli/helpers/ado-area-selector.d.ts +11 -1
- package/dist/src/cli/helpers/ado-area-selector.d.ts.map +1 -1
- package/dist/src/cli/helpers/ado-area-selector.js +124 -18
- package/dist/src/cli/helpers/ado-area-selector.js.map +1 -1
- package/dist/src/cli/helpers/github-repo-selector.d.ts +11 -3
- package/dist/src/cli/helpers/github-repo-selector.d.ts.map +1 -1
- package/dist/src/cli/helpers/github-repo-selector.js +126 -20
- package/dist/src/cli/helpers/github-repo-selector.js.map +1 -1
- package/dist/src/cli/helpers/import-strategy-prompter.d.ts +13 -2
- package/dist/src/cli/helpers/import-strategy-prompter.d.ts.map +1 -1
- package/dist/src/cli/helpers/import-strategy-prompter.js +84 -11
- package/dist/src/cli/helpers/import-strategy-prompter.js.map +1 -1
- package/dist/src/cli/helpers/init/repository-setup.d.ts +14 -0
- package/dist/src/cli/helpers/init/repository-setup.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/repository-setup.js +259 -10
- package/dist/src/cli/helpers/init/repository-setup.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* Import Strategy Prompter
|
|
3
3
|
*
|
|
4
4
|
* Provides CLI-first UI for selecting import strategy with "Import all" as default.
|
|
5
|
-
* Supports
|
|
5
|
+
* Supports five strategies (unified with GitHub/ADO):
|
|
6
6
|
* - import-all (default, recommended)
|
|
7
|
+
* - pattern-glob (glob pattern matching)
|
|
8
|
+
* - pattern-regex (regex pattern matching)
|
|
7
9
|
* - select-specific (checkbox mode with all pre-checked)
|
|
8
10
|
* - manual-entry (comma-separated project keys)
|
|
9
11
|
*
|
|
@@ -13,13 +15,15 @@ import { Logger } from '../../utils/logger.js';
|
|
|
13
15
|
/**
|
|
14
16
|
* Import strategy options
|
|
15
17
|
*/
|
|
16
|
-
export type ImportStrategy = 'import-all' | 'select-specific' | 'manual-entry';
|
|
18
|
+
export type ImportStrategy = 'import-all' | 'pattern-glob' | 'pattern-regex' | 'select-specific' | 'manual-entry';
|
|
17
19
|
/**
|
|
18
20
|
* Strategy prompt result
|
|
19
21
|
*/
|
|
20
22
|
export interface StrategyPromptResult {
|
|
21
23
|
strategy: ImportStrategy;
|
|
22
24
|
projectKeys?: string[];
|
|
25
|
+
pattern?: string;
|
|
26
|
+
isRegex?: boolean;
|
|
23
27
|
confirmed?: boolean;
|
|
24
28
|
}
|
|
25
29
|
/**
|
|
@@ -36,6 +40,13 @@ export interface StrategyPrompterOptions {
|
|
|
36
40
|
* Default: "Import all" (CLI-first approach)
|
|
37
41
|
* Instructions: "All projects selected by default. Deselect unwanted projects if needed."
|
|
38
42
|
*
|
|
43
|
+
* Unified options (same as GitHub/ADO):
|
|
44
|
+
* - All (import-all)
|
|
45
|
+
* - Pattern (glob)
|
|
46
|
+
* - Pattern (regex)
|
|
47
|
+
* - Select specific
|
|
48
|
+
* - Manual entry
|
|
49
|
+
*
|
|
39
50
|
* @param options - Prompter options
|
|
40
51
|
* @returns Strategy prompt result
|
|
41
52
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-strategy-prompter.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/import-strategy-prompter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"import-strategy-prompter.d.ts","sourceRoot":"","sources":["../../../../src/cli/helpers/import-strategy-prompter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAG9D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAElH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CA6D/B"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* Import Strategy Prompter
|
|
3
3
|
*
|
|
4
4
|
* Provides CLI-first UI for selecting import strategy with "Import all" as default.
|
|
5
|
-
* Supports
|
|
5
|
+
* Supports five strategies (unified with GitHub/ADO):
|
|
6
6
|
* - import-all (default, recommended)
|
|
7
|
+
* - pattern-glob (glob pattern matching)
|
|
8
|
+
* - pattern-regex (regex pattern matching)
|
|
7
9
|
* - select-specific (checkbox mode with all pre-checked)
|
|
8
10
|
* - manual-entry (comma-separated project keys)
|
|
9
11
|
*
|
|
@@ -12,12 +14,20 @@
|
|
|
12
14
|
import { select, input, confirm } from '@inquirer/prompts';
|
|
13
15
|
import chalk from 'chalk';
|
|
14
16
|
import { consoleLogger } from '../../utils/logger.js';
|
|
17
|
+
import { parsePatternShortcut, validateRegex } from './selection-strategy.js';
|
|
15
18
|
/**
|
|
16
19
|
* Prompt user for import strategy selection
|
|
17
20
|
*
|
|
18
21
|
* Default: "Import all" (CLI-first approach)
|
|
19
22
|
* Instructions: "All projects selected by default. Deselect unwanted projects if needed."
|
|
20
23
|
*
|
|
24
|
+
* Unified options (same as GitHub/ADO):
|
|
25
|
+
* - All (import-all)
|
|
26
|
+
* - Pattern (glob)
|
|
27
|
+
* - Pattern (regex)
|
|
28
|
+
* - Select specific
|
|
29
|
+
* - Manual entry
|
|
30
|
+
*
|
|
21
31
|
* @param options - Prompter options
|
|
22
32
|
* @returns Strategy prompt result
|
|
23
33
|
*/
|
|
@@ -25,25 +35,41 @@ export async function promptImportStrategy(options) {
|
|
|
25
35
|
const { totalCount, provider, logger = consoleLogger } = options;
|
|
26
36
|
// Display project count
|
|
27
37
|
logger.log(chalk.cyan(`\nFound ${totalCount} accessible ${provider.toUpperCase()} projects.`));
|
|
28
|
-
// Show strategy prompt
|
|
38
|
+
// Show strategy prompt - unified with GitHub/ADO
|
|
29
39
|
const strategy = await select({
|
|
30
|
-
message: 'How would you like to
|
|
40
|
+
message: 'How would you like to select projects?',
|
|
31
41
|
default: 'import-all', // CLI-first default
|
|
32
42
|
choices: [
|
|
33
43
|
{
|
|
34
|
-
name: chalk.green('✓
|
|
35
|
-
value: 'import-all'
|
|
44
|
+
name: `${chalk.green('✓')} All ${chalk.gray('- Import all projects (Recommended)')}`,
|
|
45
|
+
value: 'import-all',
|
|
36
46
|
},
|
|
37
47
|
{
|
|
38
|
-
name:
|
|
39
|
-
value: '
|
|
48
|
+
name: `Pattern (glob) ${chalk.gray('- Match by pattern (e.g., "PROJ-*", "*-BACKEND")')}`,
|
|
49
|
+
value: 'pattern-glob',
|
|
40
50
|
},
|
|
41
51
|
{
|
|
42
|
-
name:
|
|
43
|
-
value: '
|
|
44
|
-
}
|
|
45
|
-
|
|
52
|
+
name: `Pattern (regex) ${chalk.gray('- Regular expression (e.g., "^PROJ-.*$")')}`,
|
|
53
|
+
value: 'pattern-regex',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: `Select specific ${chalk.gray('- Choose from checkbox list')}`,
|
|
57
|
+
value: 'select-specific',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: `Manual entry ${chalk.gray('- Enter project keys directly')}`,
|
|
61
|
+
value: 'manual-entry',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
46
64
|
});
|
|
65
|
+
// Handle pattern-glob
|
|
66
|
+
if (strategy === 'pattern-glob') {
|
|
67
|
+
return await handlePatternGlob(logger);
|
|
68
|
+
}
|
|
69
|
+
// Handle pattern-regex
|
|
70
|
+
if (strategy === 'pattern-regex') {
|
|
71
|
+
return await handlePatternRegex(logger);
|
|
72
|
+
}
|
|
47
73
|
// Handle manual entry
|
|
48
74
|
if (strategy === 'manual-entry') {
|
|
49
75
|
return await handleManualEntry(logger);
|
|
@@ -60,6 +86,53 @@ export async function promptImportStrategy(options) {
|
|
|
60
86
|
}
|
|
61
87
|
return { strategy };
|
|
62
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Handle pattern (glob) workflow
|
|
91
|
+
*
|
|
92
|
+
* @param logger - Logger instance
|
|
93
|
+
* @returns Strategy result with pattern
|
|
94
|
+
*/
|
|
95
|
+
async function handlePatternGlob(logger) {
|
|
96
|
+
logger.log(chalk.gray('\n💡 Examples: "PROJ-*", "*-BACKEND", "TEAM-*-SERVICE"'));
|
|
97
|
+
logger.log(chalk.gray('💡 Shortcuts: "starts: PROJ-", "ends: -API", "contains: CORE"\n'));
|
|
98
|
+
const patternInput = await input({
|
|
99
|
+
message: 'Enter pattern:',
|
|
100
|
+
validate: (val) => {
|
|
101
|
+
if (!val.trim()) {
|
|
102
|
+
return chalk.red('Pattern is required');
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
// Parse shortcuts and return
|
|
108
|
+
const parsedPattern = parsePatternShortcut(patternInput.trim());
|
|
109
|
+
logger.log(chalk.green(`\n✓ Projects matching pattern "${parsedPattern}" will be imported`));
|
|
110
|
+
return { strategy: 'pattern-glob', pattern: parsedPattern };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Handle pattern (regex) workflow
|
|
114
|
+
*
|
|
115
|
+
* @param logger - Logger instance
|
|
116
|
+
* @returns Strategy result with pattern
|
|
117
|
+
*/
|
|
118
|
+
async function handlePatternRegex(logger) {
|
|
119
|
+
logger.log(chalk.gray('\n💡 Examples: "^PROJ-", ".*-BACKEND$", "^TEAM-\\d+-SERVICE$"\n'));
|
|
120
|
+
const patternInput = await input({
|
|
121
|
+
message: 'Enter regex pattern:',
|
|
122
|
+
validate: (val) => {
|
|
123
|
+
if (!val.trim()) {
|
|
124
|
+
return chalk.red('Pattern is required');
|
|
125
|
+
}
|
|
126
|
+
const validation = validateRegex(val.trim());
|
|
127
|
+
if (validation !== true) {
|
|
128
|
+
return chalk.red(`Invalid regular expression: ${validation}`);
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
logger.log(chalk.green(`\n✓ Projects matching regex "${patternInput.trim()}" will be imported`));
|
|
134
|
+
return { strategy: 'pattern-regex', pattern: patternInput.trim(), isRegex: true };
|
|
135
|
+
}
|
|
63
136
|
/**
|
|
64
137
|
* Handle manual entry workflow
|
|
65
138
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-strategy-prompter.js","sourceRoot":"","sources":["../../../../src/cli/helpers/import-strategy-prompter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"import-strategy-prompter.js","sourceRoot":"","sources":["../../../../src/cli/helpers/import-strategy-prompter.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,18 @@ export interface RepositorySetupOptions {
|
|
|
13
13
|
gitHubRemote: GitHubRemote | null;
|
|
14
14
|
language?: SupportedLanguage;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* ADO clone pattern selection strategy
|
|
18
|
+
*/
|
|
19
|
+
export type AdoCloneStrategy = 'all' | 'pattern-glob' | 'pattern-regex' | 'skip';
|
|
20
|
+
/**
|
|
21
|
+
* ADO clone pattern result
|
|
22
|
+
*/
|
|
23
|
+
export interface AdoClonePatternResult {
|
|
24
|
+
strategy: AdoCloneStrategy;
|
|
25
|
+
pattern?: string;
|
|
26
|
+
isRegex?: boolean;
|
|
27
|
+
}
|
|
16
28
|
/**
|
|
17
29
|
* Result of repository setup
|
|
18
30
|
*/
|
|
@@ -21,6 +33,8 @@ export interface RepositorySetupResult {
|
|
|
21
33
|
isMultiRepo: boolean;
|
|
22
34
|
/** ADO repo clone pattern for multi-repo (e.g., "sw-*") */
|
|
23
35
|
adoClonePattern?: string;
|
|
36
|
+
/** ADO clone pattern details */
|
|
37
|
+
adoClonePatternResult?: AdoClonePatternResult;
|
|
24
38
|
}
|
|
25
39
|
/**
|
|
26
40
|
* Prompt user for repository hosting configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository-setup.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGrE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"repository-setup.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGrE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,cAAc,GAAG,eAAe,GAAG,MAAM,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4XD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqK5G"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
import { select, input } from '@inquirer/prompts';
|
|
7
|
+
import { parsePatternShortcut, validateRegex } from '../selection-strategy.js';
|
|
7
8
|
/**
|
|
8
9
|
* Get translated strings for repository setup
|
|
9
10
|
*/
|
|
@@ -25,6 +26,26 @@ function getRepoStrings(language) {
|
|
|
25
26
|
other: 'Other (GitLab, etc - coming soon)',
|
|
26
27
|
adoCloneQuestion: 'Enter repo name pattern to clone (e.g., sw-* or leave empty to skip):',
|
|
27
28
|
adoCloneSkip: 'Skipping repo cloning - you can configure later',
|
|
29
|
+
// New unified selection strings
|
|
30
|
+
adoSelectStrategy: 'How do you want to select repositories to clone?',
|
|
31
|
+
adoAllRepos: 'All',
|
|
32
|
+
adoAllReposDesc: 'Clone all repositories from the project',
|
|
33
|
+
adoPatternGlob: 'Pattern (glob)',
|
|
34
|
+
adoPatternGlobDesc: 'Match by pattern (e.g., "sw-*", "*-backend")',
|
|
35
|
+
adoPatternRegex: 'Pattern (regex)',
|
|
36
|
+
adoPatternRegexDesc: 'Regular expression (e.g., "^sw-.*$")',
|
|
37
|
+
adoSkipOption: 'Skip',
|
|
38
|
+
adoSkipDesc: 'Configure later',
|
|
39
|
+
adoPatternPrompt: 'Enter pattern',
|
|
40
|
+
adoPatternHint: 'Examples: "sw-*", "*-backend", "api-*-service"',
|
|
41
|
+
adoRegexPrompt: 'Enter regex pattern',
|
|
42
|
+
adoRegexHint: 'Examples: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
43
|
+
adoShortcutsHint: 'Shortcuts: "starts: sw-", "ends: -api", "contains: core"',
|
|
44
|
+
adoPatternRequired: 'Pattern is required',
|
|
45
|
+
adoInvalidRegex: 'Invalid regular expression',
|
|
46
|
+
adoSelectedAll: 'All repositories will be cloned',
|
|
47
|
+
adoSelectedPattern: 'Repositories matching pattern "{pattern}" will be cloned',
|
|
48
|
+
adoSelectedRegex: 'Repositories matching regex "{pattern}" will be cloned',
|
|
28
49
|
},
|
|
29
50
|
ru: {
|
|
30
51
|
header: '📦 Хостинг репозитория',
|
|
@@ -42,6 +63,26 @@ function getRepoStrings(language) {
|
|
|
42
63
|
other: 'Другой (GitLab и т.д. - скоро)',
|
|
43
64
|
adoCloneQuestion: 'Введите шаблон имени репо для клонирования (напр., sw-* или оставьте пустым):',
|
|
44
65
|
adoCloneSkip: 'Пропуск клонирования - можно настроить позже',
|
|
66
|
+
// New unified selection strings
|
|
67
|
+
adoSelectStrategy: 'Как вы хотите выбрать репозитории для клонирования?',
|
|
68
|
+
adoAllRepos: 'Все',
|
|
69
|
+
adoAllReposDesc: 'Клонировать все репозитории из проекта',
|
|
70
|
+
adoPatternGlob: 'Шаблон (glob)',
|
|
71
|
+
adoPatternGlobDesc: 'Сопоставление по шаблону (напр., "sw-*", "*-backend")',
|
|
72
|
+
adoPatternRegex: 'Шаблон (regex)',
|
|
73
|
+
adoPatternRegexDesc: 'Регулярное выражение (напр., "^sw-.*$")',
|
|
74
|
+
adoSkipOption: 'Пропустить',
|
|
75
|
+
adoSkipDesc: 'Настроить позже',
|
|
76
|
+
adoPatternPrompt: 'Введите шаблон',
|
|
77
|
+
adoPatternHint: 'Примеры: "sw-*", "*-backend", "api-*-service"',
|
|
78
|
+
adoRegexPrompt: 'Введите регулярное выражение',
|
|
79
|
+
adoRegexHint: 'Примеры: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
80
|
+
adoShortcutsHint: 'Сокращения: "starts: sw-", "ends: -api", "contains: core"',
|
|
81
|
+
adoPatternRequired: 'Шаблон обязателен',
|
|
82
|
+
adoInvalidRegex: 'Неверное регулярное выражение',
|
|
83
|
+
adoSelectedAll: 'Все репозитории будут клонированы',
|
|
84
|
+
adoSelectedPattern: 'Репозитории, соответствующие шаблону "{pattern}", будут клонированы',
|
|
85
|
+
adoSelectedRegex: 'Репозитории, соответствующие regex "{pattern}", будут клонированы',
|
|
45
86
|
},
|
|
46
87
|
es: {
|
|
47
88
|
header: '📦 Alojamiento del repositorio',
|
|
@@ -59,6 +100,26 @@ function getRepoStrings(language) {
|
|
|
59
100
|
other: 'Otro (GitLab, etc - próximamente)',
|
|
60
101
|
adoCloneQuestion: 'Ingrese patrón de nombre de repo a clonar (ej., sw-* o deje vacío):',
|
|
61
102
|
adoCloneSkip: 'Omitiendo clonación - puede configurar después',
|
|
103
|
+
// New unified selection strings
|
|
104
|
+
adoSelectStrategy: '¿Cómo quiere seleccionar repositorios para clonar?',
|
|
105
|
+
adoAllRepos: 'Todos',
|
|
106
|
+
adoAllReposDesc: 'Clonar todos los repositorios del proyecto',
|
|
107
|
+
adoPatternGlob: 'Patrón (glob)',
|
|
108
|
+
adoPatternGlobDesc: 'Coincidir por patrón (ej., "sw-*", "*-backend")',
|
|
109
|
+
adoPatternRegex: 'Patrón (regex)',
|
|
110
|
+
adoPatternRegexDesc: 'Expresión regular (ej., "^sw-.*$")',
|
|
111
|
+
adoSkipOption: 'Omitir',
|
|
112
|
+
adoSkipDesc: 'Configurar después',
|
|
113
|
+
adoPatternPrompt: 'Ingrese patrón',
|
|
114
|
+
adoPatternHint: 'Ejemplos: "sw-*", "*-backend", "api-*-service"',
|
|
115
|
+
adoRegexPrompt: 'Ingrese expresión regular',
|
|
116
|
+
adoRegexHint: 'Ejemplos: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
117
|
+
adoShortcutsHint: 'Atajos: "starts: sw-", "ends: -api", "contains: core"',
|
|
118
|
+
adoPatternRequired: 'El patrón es requerido',
|
|
119
|
+
adoInvalidRegex: 'Expresión regular inválida',
|
|
120
|
+
adoSelectedAll: 'Todos los repositorios serán clonados',
|
|
121
|
+
adoSelectedPattern: 'Repositorios que coincidan con "{pattern}" serán clonados',
|
|
122
|
+
adoSelectedRegex: 'Repositorios que coincidan con regex "{pattern}" serán clonados',
|
|
62
123
|
},
|
|
63
124
|
zh: {
|
|
64
125
|
header: '📦 仓库托管',
|
|
@@ -76,6 +137,26 @@ function getRepoStrings(language) {
|
|
|
76
137
|
other: '其他(GitLab 等 - 即将推出)',
|
|
77
138
|
adoCloneQuestion: '输入要克隆的仓库名称模式(例如 sw-* 或留空跳过):',
|
|
78
139
|
adoCloneSkip: '跳过克隆 - 稍后可以配置',
|
|
140
|
+
// New unified selection strings
|
|
141
|
+
adoSelectStrategy: '您想如何选择要克隆的仓库?',
|
|
142
|
+
adoAllRepos: '全部',
|
|
143
|
+
adoAllReposDesc: '克隆项目中的所有仓库',
|
|
144
|
+
adoPatternGlob: '模式 (glob)',
|
|
145
|
+
adoPatternGlobDesc: '按模式匹配(例如 "sw-*"、"*-backend")',
|
|
146
|
+
adoPatternRegex: '模式 (正则)',
|
|
147
|
+
adoPatternRegexDesc: '正则表达式(例如 "^sw-.*$")',
|
|
148
|
+
adoSkipOption: '跳过',
|
|
149
|
+
adoSkipDesc: '稍后配置',
|
|
150
|
+
adoPatternPrompt: '输入模式',
|
|
151
|
+
adoPatternHint: '示例:"sw-*"、"*-backend"、"api-*-service"',
|
|
152
|
+
adoRegexPrompt: '输入正则表达式',
|
|
153
|
+
adoRegexHint: '示例:"^sw-"、".*-backend$"、"^api-\\d+-service$"',
|
|
154
|
+
adoShortcutsHint: '快捷方式:"starts: sw-"、"ends: -api"、"contains: core"',
|
|
155
|
+
adoPatternRequired: '模式是必需的',
|
|
156
|
+
adoInvalidRegex: '无效的正则表达式',
|
|
157
|
+
adoSelectedAll: '将克隆所有仓库',
|
|
158
|
+
adoSelectedPattern: '匹配模式 "{pattern}" 的仓库将被克隆',
|
|
159
|
+
adoSelectedRegex: '匹配正则 "{pattern}" 的仓库将被克隆',
|
|
79
160
|
},
|
|
80
161
|
de: {
|
|
81
162
|
header: '📦 Repository-Hosting',
|
|
@@ -93,6 +174,26 @@ function getRepoStrings(language) {
|
|
|
93
174
|
other: 'Andere (GitLab, etc - kommt bald)',
|
|
94
175
|
adoCloneQuestion: 'Repo-Namensmuster zum Klonen eingeben (z.B. sw-* oder leer lassen):',
|
|
95
176
|
adoCloneSkip: 'Klonen übersprungen - später konfigurierbar',
|
|
177
|
+
// New unified selection strings
|
|
178
|
+
adoSelectStrategy: 'Wie möchten Sie Repositories zum Klonen auswählen?',
|
|
179
|
+
adoAllRepos: 'Alle',
|
|
180
|
+
adoAllReposDesc: 'Alle Repositories aus dem Projekt klonen',
|
|
181
|
+
adoPatternGlob: 'Muster (glob)',
|
|
182
|
+
adoPatternGlobDesc: 'Nach Muster filtern (z.B. "sw-*", "*-backend")',
|
|
183
|
+
adoPatternRegex: 'Muster (regex)',
|
|
184
|
+
adoPatternRegexDesc: 'Regulärer Ausdruck (z.B. "^sw-.*$")',
|
|
185
|
+
adoSkipOption: 'Überspringen',
|
|
186
|
+
adoSkipDesc: 'Später konfigurieren',
|
|
187
|
+
adoPatternPrompt: 'Muster eingeben',
|
|
188
|
+
adoPatternHint: 'Beispiele: "sw-*", "*-backend", "api-*-service"',
|
|
189
|
+
adoRegexPrompt: 'Regex eingeben',
|
|
190
|
+
adoRegexHint: 'Beispiele: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
191
|
+
adoShortcutsHint: 'Abkürzungen: "starts: sw-", "ends: -api", "contains: core"',
|
|
192
|
+
adoPatternRequired: 'Muster ist erforderlich',
|
|
193
|
+
adoInvalidRegex: 'Ungültiger regulärer Ausdruck',
|
|
194
|
+
adoSelectedAll: 'Alle Repositories werden geklont',
|
|
195
|
+
adoSelectedPattern: 'Repositories mit Muster "{pattern}" werden geklont',
|
|
196
|
+
adoSelectedRegex: 'Repositories mit Regex "{pattern}" werden geklont',
|
|
96
197
|
},
|
|
97
198
|
fr: {
|
|
98
199
|
header: '📦 Hébergement du dépôt',
|
|
@@ -110,6 +211,26 @@ function getRepoStrings(language) {
|
|
|
110
211
|
other: 'Autre (GitLab, etc - bientôt)',
|
|
111
212
|
adoCloneQuestion: 'Entrez le modèle de nom de repo à cloner (ex. sw-* ou laissez vide):',
|
|
112
213
|
adoCloneSkip: 'Clonage ignoré - configurable plus tard',
|
|
214
|
+
// New unified selection strings
|
|
215
|
+
adoSelectStrategy: 'Comment voulez-vous sélectionner les repos à cloner?',
|
|
216
|
+
adoAllRepos: 'Tous',
|
|
217
|
+
adoAllReposDesc: 'Cloner tous les repos du projet',
|
|
218
|
+
adoPatternGlob: 'Modèle (glob)',
|
|
219
|
+
adoPatternGlobDesc: 'Correspondance par modèle (ex., "sw-*", "*-backend")',
|
|
220
|
+
adoPatternRegex: 'Modèle (regex)',
|
|
221
|
+
adoPatternRegexDesc: 'Expression régulière (ex., "^sw-.*$")',
|
|
222
|
+
adoSkipOption: 'Ignorer',
|
|
223
|
+
adoSkipDesc: 'Configurer plus tard',
|
|
224
|
+
adoPatternPrompt: 'Entrez le modèle',
|
|
225
|
+
adoPatternHint: 'Exemples: "sw-*", "*-backend", "api-*-service"',
|
|
226
|
+
adoRegexPrompt: 'Entrez le regex',
|
|
227
|
+
adoRegexHint: 'Exemples: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
228
|
+
adoShortcutsHint: 'Raccourcis: "starts: sw-", "ends: -api", "contains: core"',
|
|
229
|
+
adoPatternRequired: 'Le modèle est requis',
|
|
230
|
+
adoInvalidRegex: 'Expression régulière invalide',
|
|
231
|
+
adoSelectedAll: 'Tous les repos seront clonés',
|
|
232
|
+
adoSelectedPattern: 'Les repos correspondant à "{pattern}" seront clonés',
|
|
233
|
+
adoSelectedRegex: 'Les repos correspondant au regex "{pattern}" seront clonés',
|
|
113
234
|
},
|
|
114
235
|
ja: {
|
|
115
236
|
header: '📦 リポジトリホスティング',
|
|
@@ -127,6 +248,26 @@ function getRepoStrings(language) {
|
|
|
127
248
|
other: 'その他(GitLabなど - 近日公開)',
|
|
128
249
|
adoCloneQuestion: 'クローンするリポ名パターンを入力(例: sw-* または空白でスキップ):',
|
|
129
250
|
adoCloneSkip: 'クローンをスキップ - 後で設定可能',
|
|
251
|
+
// New unified selection strings
|
|
252
|
+
adoSelectStrategy: 'クローンするリポジトリをどのように選択しますか?',
|
|
253
|
+
adoAllRepos: 'すべて',
|
|
254
|
+
adoAllReposDesc: 'プロジェクトのすべてのリポジトリをクローン',
|
|
255
|
+
adoPatternGlob: 'パターン (glob)',
|
|
256
|
+
adoPatternGlobDesc: 'パターンでマッチ(例: "sw-*", "*-backend")',
|
|
257
|
+
adoPatternRegex: 'パターン (正規表現)',
|
|
258
|
+
adoPatternRegexDesc: '正規表現(例: "^sw-.*$")',
|
|
259
|
+
adoSkipOption: 'スキップ',
|
|
260
|
+
adoSkipDesc: '後で設定',
|
|
261
|
+
adoPatternPrompt: 'パターンを入力',
|
|
262
|
+
adoPatternHint: '例: "sw-*", "*-backend", "api-*-service"',
|
|
263
|
+
adoRegexPrompt: '正規表現を入力',
|
|
264
|
+
adoRegexHint: '例: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
265
|
+
adoShortcutsHint: 'ショートカット: "starts: sw-", "ends: -api", "contains: core"',
|
|
266
|
+
adoPatternRequired: 'パターンは必須です',
|
|
267
|
+
adoInvalidRegex: '無効な正規表現',
|
|
268
|
+
adoSelectedAll: 'すべてのリポジトリがクローンされます',
|
|
269
|
+
adoSelectedPattern: '"{pattern}" に一致するリポジトリがクローンされます',
|
|
270
|
+
adoSelectedRegex: '正規表現 "{pattern}" に一致するリポジトリがクローンされます',
|
|
130
271
|
},
|
|
131
272
|
ko: {
|
|
132
273
|
header: '📦 저장소 호스팅',
|
|
@@ -144,6 +285,26 @@ function getRepoStrings(language) {
|
|
|
144
285
|
other: '기타 (GitLab 등 - 곧 출시)',
|
|
145
286
|
adoCloneQuestion: '복제할 저장소 이름 패턴 입력 (예: sw-* 또는 비워두기):',
|
|
146
287
|
adoCloneSkip: '복제 건너뜀 - 나중에 설정 가능',
|
|
288
|
+
// New unified selection strings
|
|
289
|
+
adoSelectStrategy: '복제할 저장소를 어떻게 선택하시겠습니까?',
|
|
290
|
+
adoAllRepos: '모두',
|
|
291
|
+
adoAllReposDesc: '프로젝트의 모든 저장소 복제',
|
|
292
|
+
adoPatternGlob: '패턴 (glob)',
|
|
293
|
+
adoPatternGlobDesc: '패턴으로 매칭 (예: "sw-*", "*-backend")',
|
|
294
|
+
adoPatternRegex: '패턴 (정규식)',
|
|
295
|
+
adoPatternRegexDesc: '정규 표현식 (예: "^sw-.*$")',
|
|
296
|
+
adoSkipOption: '건너뛰기',
|
|
297
|
+
adoSkipDesc: '나중에 설정',
|
|
298
|
+
adoPatternPrompt: '패턴 입력',
|
|
299
|
+
adoPatternHint: '예: "sw-*", "*-backend", "api-*-service"',
|
|
300
|
+
adoRegexPrompt: '정규식 입력',
|
|
301
|
+
adoRegexHint: '예: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
302
|
+
adoShortcutsHint: '단축키: "starts: sw-", "ends: -api", "contains: core"',
|
|
303
|
+
adoPatternRequired: '패턴이 필요합니다',
|
|
304
|
+
adoInvalidRegex: '잘못된 정규 표현식',
|
|
305
|
+
adoSelectedAll: '모든 저장소가 복제됩니다',
|
|
306
|
+
adoSelectedPattern: '"{pattern}" 패턴과 일치하는 저장소가 복제됩니다',
|
|
307
|
+
adoSelectedRegex: '정규식 "{pattern}"과 일치하는 저장소가 복제됩니다',
|
|
147
308
|
},
|
|
148
309
|
pt: {
|
|
149
310
|
header: '📦 Hospedagem do repositório',
|
|
@@ -161,6 +322,26 @@ function getRepoStrings(language) {
|
|
|
161
322
|
other: 'Outro (GitLab, etc - em breve)',
|
|
162
323
|
adoCloneQuestion: 'Digite padrão de nome de repo para clonar (ex. sw-* ou deixe vazio):',
|
|
163
324
|
adoCloneSkip: 'Clonagem ignorada - configurável depois',
|
|
325
|
+
// New unified selection strings
|
|
326
|
+
adoSelectStrategy: 'Como você quer selecionar repositórios para clonar?',
|
|
327
|
+
adoAllRepos: 'Todos',
|
|
328
|
+
adoAllReposDesc: 'Clonar todos os repositórios do projeto',
|
|
329
|
+
adoPatternGlob: 'Padrão (glob)',
|
|
330
|
+
adoPatternGlobDesc: 'Corresponder por padrão (ex., "sw-*", "*-backend")',
|
|
331
|
+
adoPatternRegex: 'Padrão (regex)',
|
|
332
|
+
adoPatternRegexDesc: 'Expressão regular (ex., "^sw-.*$")',
|
|
333
|
+
adoSkipOption: 'Pular',
|
|
334
|
+
adoSkipDesc: 'Configurar depois',
|
|
335
|
+
adoPatternPrompt: 'Digite o padrão',
|
|
336
|
+
adoPatternHint: 'Exemplos: "sw-*", "*-backend", "api-*-service"',
|
|
337
|
+
adoRegexPrompt: 'Digite a regex',
|
|
338
|
+
adoRegexHint: 'Exemplos: "^sw-", ".*-backend$", "^api-\\d+-service$"',
|
|
339
|
+
adoShortcutsHint: 'Atalhos: "starts: sw-", "ends: -api", "contains: core"',
|
|
340
|
+
adoPatternRequired: 'Padrão é obrigatório',
|
|
341
|
+
adoInvalidRegex: 'Expressão regular inválida',
|
|
342
|
+
adoSelectedAll: 'Todos os repositórios serão clonados',
|
|
343
|
+
adoSelectedPattern: 'Repositórios correspondendo a "{pattern}" serão clonados',
|
|
344
|
+
adoSelectedRegex: 'Repositórios correspondendo a regex "{pattern}" serão clonados',
|
|
164
345
|
},
|
|
165
346
|
};
|
|
166
347
|
return strings[language] || strings.en;
|
|
@@ -235,20 +416,88 @@ export async function setupRepositoryHosting(options) {
|
|
|
235
416
|
else {
|
|
236
417
|
repositoryHosting = `${provider}-${structure}`;
|
|
237
418
|
}
|
|
238
|
-
// Step 3: For ADO multi-repo, prompt for clone pattern
|
|
419
|
+
// Step 3: For ADO multi-repo, prompt for clone pattern with unified selection
|
|
239
420
|
let adoClonePattern;
|
|
421
|
+
let adoClonePatternResult;
|
|
240
422
|
if (provider === 'ado' && isMultiRepo) {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
423
|
+
// Show unified strategy selection
|
|
424
|
+
const strategyChoices = [
|
|
425
|
+
{
|
|
426
|
+
name: `${chalk.green('✓')} ${strings.adoAllRepos} ${chalk.gray(`- ${strings.adoAllReposDesc}`)}`,
|
|
427
|
+
value: 'all',
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
name: `${strings.adoPatternGlob} ${chalk.gray(`- ${strings.adoPatternGlobDesc}`)}`,
|
|
431
|
+
value: 'pattern-glob',
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
name: `${strings.adoPatternRegex} ${chalk.gray(`- ${strings.adoPatternRegexDesc}`)}`,
|
|
435
|
+
value: 'pattern-regex',
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
name: `${strings.adoSkipOption} ${chalk.gray(`- ${strings.adoSkipDesc}`)}`,
|
|
439
|
+
value: 'skip',
|
|
440
|
+
},
|
|
441
|
+
];
|
|
442
|
+
const strategy = await select({
|
|
443
|
+
message: strings.adoSelectStrategy,
|
|
444
|
+
choices: strategyChoices,
|
|
445
|
+
default: 'all',
|
|
244
446
|
});
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
447
|
+
switch (strategy) {
|
|
448
|
+
case 'all': {
|
|
449
|
+
adoClonePattern = '*';
|
|
450
|
+
adoClonePatternResult = { strategy: 'all', pattern: '*' };
|
|
451
|
+
console.log(chalk.green(` ✓ ${strings.adoSelectedAll}`));
|
|
452
|
+
break;
|
|
453
|
+
}
|
|
454
|
+
case 'pattern-glob': {
|
|
455
|
+
console.log(chalk.gray(`\n 💡 ${strings.adoPatternHint}`));
|
|
456
|
+
console.log(chalk.gray(` 💡 ${strings.adoShortcutsHint}\n`));
|
|
457
|
+
const pattern = await input({
|
|
458
|
+
message: strings.adoPatternPrompt,
|
|
459
|
+
validate: (value) => {
|
|
460
|
+
if (!value.trim())
|
|
461
|
+
return strings.adoPatternRequired;
|
|
462
|
+
return true;
|
|
463
|
+
},
|
|
464
|
+
});
|
|
465
|
+
// Parse shortcuts (starts:, ends:, contains:)
|
|
466
|
+
const parsedPattern = parsePatternShortcut(pattern.trim());
|
|
467
|
+
adoClonePattern = parsedPattern;
|
|
468
|
+
adoClonePatternResult = { strategy: 'pattern-glob', pattern: parsedPattern };
|
|
469
|
+
const message = strings.adoSelectedPattern.replace('{pattern}', parsedPattern);
|
|
470
|
+
console.log(chalk.green(` ✓ ${message}`));
|
|
471
|
+
break;
|
|
472
|
+
}
|
|
473
|
+
case 'pattern-regex': {
|
|
474
|
+
console.log(chalk.gray(`\n 💡 ${strings.adoRegexHint}\n`));
|
|
475
|
+
const pattern = await input({
|
|
476
|
+
message: strings.adoRegexPrompt,
|
|
477
|
+
validate: (value) => {
|
|
478
|
+
if (!value.trim())
|
|
479
|
+
return strings.adoPatternRequired;
|
|
480
|
+
const validation = validateRegex(value.trim());
|
|
481
|
+
if (validation !== true) {
|
|
482
|
+
return `${strings.adoInvalidRegex}: ${validation}`;
|
|
483
|
+
}
|
|
484
|
+
return true;
|
|
485
|
+
},
|
|
486
|
+
});
|
|
487
|
+
// Store as regex: prefix for downstream processing
|
|
488
|
+
adoClonePattern = `regex:${pattern.trim()}`;
|
|
489
|
+
adoClonePatternResult = { strategy: 'pattern-regex', pattern: pattern.trim(), isRegex: true };
|
|
490
|
+
const message = strings.adoSelectedRegex.replace('{pattern}', pattern.trim());
|
|
491
|
+
console.log(chalk.green(` ✓ ${message}`));
|
|
492
|
+
break;
|
|
493
|
+
}
|
|
494
|
+
case 'skip': {
|
|
495
|
+
adoClonePatternResult = { strategy: 'skip' };
|
|
496
|
+
console.log(chalk.gray(` → ${strings.adoCloneSkip}`));
|
|
497
|
+
break;
|
|
498
|
+
}
|
|
250
499
|
}
|
|
251
500
|
}
|
|
252
|
-
return { hosting: repositoryHosting, isMultiRepo, adoClonePattern };
|
|
501
|
+
return { hosting: repositoryHosting, isMultiRepo, adoClonePattern, adoClonePatternResult };
|
|
253
502
|
}
|
|
254
503
|
//# sourceMappingURL=repository-setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository-setup.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository-setup.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"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"}
|