specweave 0.28.11 → 0.28.14
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/commands/archive.d.ts +0 -1
- package/dist/src/cli/commands/archive.d.ts.map +1 -1
- package/dist/src/cli/commands/archive.js +1 -4
- package/dist/src/cli/commands/archive.js.map +1 -1
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +29 -18
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/helpers/init/external-import.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/external-import.js +83 -10
- package/dist/src/cli/helpers/init/external-import.js.map +1 -1
- package/dist/src/cli/helpers/init/index.d.ts +1 -0
- package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/index.js +2 -0
- package/dist/src/cli/helpers/init/index.js.map +1 -1
- package/dist/src/cli/helpers/init/language-selection.d.ts +40 -0
- package/dist/src/cli/helpers/init/language-selection.d.ts.map +1 -0
- package/dist/src/cli/helpers/init/language-selection.js +281 -0
- package/dist/src/cli/helpers/init/language-selection.js.map +1 -0
- package/dist/src/cli/helpers/init/repository-setup.d.ts +2 -0
- package/dist/src/cli/helpers/init/repository-setup.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/repository-setup.js +156 -12
- package/dist/src/cli/helpers/init/repository-setup.js.map +1 -1
- package/dist/src/cli/helpers/init/translation-config.d.ts +10 -2
- package/dist/src/cli/helpers/init/translation-config.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/translation-config.js +302 -81
- package/dist/src/cli/helpers/init/translation-config.js.map +1 -1
- package/dist/src/core/config/types.d.ts +30 -2
- package/dist/src/core/config/types.d.ts.map +1 -1
- package/dist/src/core/config/types.js.map +1 -1
- package/dist/src/core/feature-deleter/validator.d.ts +1 -0
- package/dist/src/core/feature-deleter/validator.d.ts.map +1 -1
- package/dist/src/core/feature-deleter/validator.js +8 -10
- package/dist/src/core/feature-deleter/validator.js.map +1 -1
- package/dist/src/core/increment/increment-archiver.d.ts.map +1 -1
- package/dist/src/core/increment/increment-archiver.js +12 -5
- package/dist/src/core/increment/increment-archiver.js.map +1 -1
- package/dist/src/core/living-docs/feature-archiver.d.ts +25 -3
- package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -1
- package/dist/src/core/living-docs/feature-archiver.js +131 -129
- package/dist/src/core/living-docs/feature-archiver.js.map +1 -1
- package/dist/src/core/living-docs/feature-consistency-validator.d.ts +23 -22
- package/dist/src/core/living-docs/feature-consistency-validator.d.ts.map +1 -1
- package/dist/src/core/living-docs/feature-consistency-validator.js +68 -150
- package/dist/src/core/living-docs/feature-consistency-validator.js.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.d.ts +5 -1
- package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.js +43 -23
- package/dist/src/core/living-docs/feature-id-manager.js.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts +21 -12
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js +89 -70
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +10 -11
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +24 -56
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/repo-structure/repo-bulk-discovery.d.ts +1 -1
- package/dist/src/core/repo-structure/repo-bulk-discovery.d.ts.map +1 -1
- package/dist/src/core/repo-structure/repo-bulk-discovery.js +168 -126
- package/dist/src/core/repo-structure/repo-bulk-discovery.js.map +1 -1
- package/dist/src/core/spec-detector.js +2 -2
- package/dist/src/core/spec-detector.js.map +1 -1
- package/dist/src/importers/duplicate-detector.d.ts +6 -0
- package/dist/src/importers/duplicate-detector.d.ts.map +1 -1
- package/dist/src/importers/duplicate-detector.js +8 -2
- package/dist/src/importers/duplicate-detector.js.map +1 -1
- package/dist/src/importers/external-importer.d.ts +6 -0
- package/dist/src/importers/external-importer.d.ts.map +1 -1
- package/dist/src/importers/import-coordinator.d.ts +38 -2
- package/dist/src/importers/import-coordinator.d.ts.map +1 -1
- package/dist/src/importers/import-coordinator.js +142 -5
- package/dist/src/importers/import-coordinator.js.map +1 -1
- package/dist/src/importers/item-converter.d.ts +39 -1
- package/dist/src/importers/item-converter.d.ts.map +1 -1
- package/dist/src/importers/item-converter.js +193 -24
- package/dist/src/importers/item-converter.js.map +1 -1
- package/dist/src/living-docs/fs-id-allocator.d.ts +8 -2
- package/dist/src/living-docs/fs-id-allocator.d.ts.map +1 -1
- package/dist/src/living-docs/fs-id-allocator.js +18 -10
- package/dist/src/living-docs/fs-id-allocator.js.map +1 -1
- package/dist/src/sync/sync-coordinator.d.ts +5 -0
- package/dist/src/sync/sync-coordinator.d.ts.map +1 -1
- package/dist/src/sync/sync-coordinator.js +104 -6
- package/dist/src/sync/sync-coordinator.js.map +1 -1
- package/dist/src/utils/project-detection.d.ts +13 -10
- package/dist/src/utils/project-detection.d.ts.map +1 -1
- package/dist/src/utils/project-detection.js +26 -11
- package/dist/src/utils/project-detection.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/agents/pm/AGENT.md +41 -4
- package/plugins/specweave/agents/test-aware-planner/AGENT.md +54 -0
- package/plugins/specweave/commands/specweave-increment.md +30 -0
- package/plugins/specweave/commands/specweave-save.md +838 -0
- package/plugins/specweave/hooks/lib/update-status-line.sh +9 -1
- package/plugins/specweave/hooks/post-increment-completion.sh +4 -3
- package/plugins/specweave/hooks/post-metadata-change.sh +18 -4
- package/plugins/specweave/skills/increment-planner/SKILL.md +252 -2
- package/plugins/specweave/skills/spec-generator/SKILL.md +163 -0
- package/plugins/specweave/skills/umbrella-repo-detector/SKILL.md +79 -12
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +6 -0
- package/plugins/specweave-release/commands/specweave-release-npm.md +14 -22
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +9 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language Selection - FIRST question in init process
|
|
3
|
+
*
|
|
4
|
+
* CRITICAL: This must be asked BEFORE any other prompts.
|
|
5
|
+
* All subsequent interface elements will be translated to the selected language.
|
|
6
|
+
*
|
|
7
|
+
* @module cli/helpers/init/language-selection
|
|
8
|
+
*/
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { select, confirm } from '@inquirer/prompts';
|
|
11
|
+
import { getLocaleManager, resetLocaleManager } from '../../../core/i18n/locale-manager.js';
|
|
12
|
+
/**
|
|
13
|
+
* Get language display info with native names
|
|
14
|
+
*/
|
|
15
|
+
function getLanguageChoices() {
|
|
16
|
+
return [
|
|
17
|
+
{ name: '🇬🇧 English', value: 'en' },
|
|
18
|
+
{ name: '🇷🇺 Русский (Russian)', value: 'ru' },
|
|
19
|
+
{ name: '🇪🇸 Español (Spanish)', value: 'es' },
|
|
20
|
+
{ name: '🇨🇳 中文 (Chinese)', value: 'zh' },
|
|
21
|
+
{ name: '🇩🇪 Deutsch (German)', value: 'de' },
|
|
22
|
+
{ name: '🇫🇷 Français (French)', value: 'fr' },
|
|
23
|
+
{ name: '🇯🇵 日本語 (Japanese)', value: 'ja' },
|
|
24
|
+
{ name: '🇰🇷 한국어 (Korean)', value: 'ko' },
|
|
25
|
+
{ name: '🇧🇷 Português (Portuguese)', value: 'pt' },
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get translated bilingual cost warnings
|
|
30
|
+
*/
|
|
31
|
+
function getBilingualWarnings(language) {
|
|
32
|
+
const warnings = {
|
|
33
|
+
en: {
|
|
34
|
+
header: 'BILINGUAL MODE - COST WARNING',
|
|
35
|
+
line1: 'Keeping English originals alongside translations will:',
|
|
36
|
+
line2: '• Approximately DOUBLE token usage for all documentation',
|
|
37
|
+
line3: '• Estimated additional monthly cost: $1-5 (depends on activity)',
|
|
38
|
+
line4: '• Create .en.md backup files for every translated document',
|
|
39
|
+
question: 'Enable bilingual mode? (keep English + translated versions)',
|
|
40
|
+
},
|
|
41
|
+
ru: {
|
|
42
|
+
header: 'ДВУЯЗЫЧНЫЙ РЕЖИМ - ПРЕДУПРЕЖДЕНИЕ О РАСХОДАХ',
|
|
43
|
+
line1: 'Сохранение английских оригиналов вместе с переводами приведет к:',
|
|
44
|
+
line2: '• Примерно УДВОЕНИЕ расхода токенов для всей документации',
|
|
45
|
+
line3: '• Ориентировочные дополнительные ежемесячные затраты: $1-5 (зависит от активности)',
|
|
46
|
+
line4: '• Создание .en.md резервных копий для каждого переведенного документа',
|
|
47
|
+
question: 'Включить двуязычный режим? (сохранять English + переведённую версию)',
|
|
48
|
+
},
|
|
49
|
+
es: {
|
|
50
|
+
header: 'MODO BILINGÜE - ADVERTENCIA DE COSTOS',
|
|
51
|
+
line1: 'Mantener los originales en inglés junto con las traducciones:',
|
|
52
|
+
line2: '• Aproximadamente DUPLICARÁ el uso de tokens para toda la documentación',
|
|
53
|
+
line3: '• Costo mensual adicional estimado: $1-5 (depende de la actividad)',
|
|
54
|
+
line4: '• Crear archivos de respaldo .en.md para cada documento traducido',
|
|
55
|
+
question: '¿Habilitar modo bilingüe? (mantener inglés + versiones traducidas)',
|
|
56
|
+
},
|
|
57
|
+
zh: {
|
|
58
|
+
header: '双语模式 - 费用警告',
|
|
59
|
+
line1: '同时保留英文原文和翻译将会:',
|
|
60
|
+
line2: '• 所有文档的令牌使用量大约翻倍',
|
|
61
|
+
line3: '• 预计每月额外费用:$1-5(取决于活动量)',
|
|
62
|
+
line4: '• 为每个翻译文档创建 .en.md 备份文件',
|
|
63
|
+
question: '启用双语模式?(保留英文 + 翻译版本)',
|
|
64
|
+
},
|
|
65
|
+
de: {
|
|
66
|
+
header: 'ZWEISPRACHIGER MODUS - KOSTENWARNUNG',
|
|
67
|
+
line1: 'Das Behalten englischer Originale neben Übersetzungen wird:',
|
|
68
|
+
line2: '• Den Token-Verbrauch für alle Dokumentation ungefähr VERDOPPELN',
|
|
69
|
+
line3: '• Geschätzte zusätzliche monatliche Kosten: $1-5 (abhängig von Aktivität)',
|
|
70
|
+
line4: '• .en.md Sicherungsdateien für jedes übersetzte Dokument erstellen',
|
|
71
|
+
question: 'Zweisprachigen Modus aktivieren? (Englisch + übersetzte Versionen behalten)',
|
|
72
|
+
},
|
|
73
|
+
fr: {
|
|
74
|
+
header: 'MODE BILINGUE - AVERTISSEMENT DE COÛT',
|
|
75
|
+
line1: 'Conserver les originaux anglais avec les traductions va:',
|
|
76
|
+
line2: '• Approximativement DOUBLER l\'utilisation des tokens pour toute la documentation',
|
|
77
|
+
line3: '• Coût mensuel supplémentaire estimé: $1-5 (dépend de l\'activité)',
|
|
78
|
+
line4: '• Créer des fichiers de sauvegarde .en.md pour chaque document traduit',
|
|
79
|
+
question: 'Activer le mode bilingue? (conserver anglais + versions traduites)',
|
|
80
|
+
},
|
|
81
|
+
ja: {
|
|
82
|
+
header: 'バイリンガルモード - コスト警告',
|
|
83
|
+
line1: '英語のオリジナルを翻訳と一緒に保持すると:',
|
|
84
|
+
line2: '• すべてのドキュメントのトークン使用量がほぼ2倍になります',
|
|
85
|
+
line3: '• 推定追加月額費用:$1-5(活動量による)',
|
|
86
|
+
line4: '• 翻訳されたすべてのドキュメントに .en.md バックアップファイルを作成',
|
|
87
|
+
question: 'バイリンガルモードを有効にしますか?(英語 + 翻訳版を保持)',
|
|
88
|
+
},
|
|
89
|
+
ko: {
|
|
90
|
+
header: '이중 언어 모드 - 비용 경고',
|
|
91
|
+
line1: '영어 원본을 번역과 함께 유지하면:',
|
|
92
|
+
line2: '• 모든 문서의 토큰 사용량이 약 2배로 증가합니다',
|
|
93
|
+
line3: '• 예상 추가 월 비용: $1-5 (활동량에 따라 다름)',
|
|
94
|
+
line4: '• 모든 번역된 문서에 대해 .en.md 백업 파일 생성',
|
|
95
|
+
question: '이중 언어 모드를 활성화하시겠습니까? (영어 + 번역 버전 유지)',
|
|
96
|
+
},
|
|
97
|
+
pt: {
|
|
98
|
+
header: 'MODO BILÍNGUE - AVISO DE CUSTO',
|
|
99
|
+
line1: 'Manter os originais em inglês junto com as traduções irá:',
|
|
100
|
+
line2: '• Aproximadamente DOBRAR o uso de tokens para toda a documentação',
|
|
101
|
+
line3: '• Custo mensal adicional estimado: $1-5 (depende da atividade)',
|
|
102
|
+
line4: '• Criar arquivos de backup .en.md para cada documento traduzido',
|
|
103
|
+
question: 'Habilitar modo bilíngue? (manter inglês + versões traduzidas)',
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
return warnings[language] || warnings.en;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get translated strings for language selection prompt
|
|
110
|
+
*/
|
|
111
|
+
function getPromptStrings(language) {
|
|
112
|
+
const strings = {
|
|
113
|
+
en: {
|
|
114
|
+
header: '🌐 Language Selection',
|
|
115
|
+
subheader: 'All prompts and interface will be displayed in your selected language',
|
|
116
|
+
question: 'Select your preferred language:',
|
|
117
|
+
selected: 'Language selected',
|
|
118
|
+
},
|
|
119
|
+
ru: {
|
|
120
|
+
header: '🌐 Выбор языка',
|
|
121
|
+
subheader: 'Все подсказки и интерфейс будут отображаться на выбранном языке',
|
|
122
|
+
question: 'Выберите предпочитаемый язык:',
|
|
123
|
+
selected: 'Язык выбран',
|
|
124
|
+
},
|
|
125
|
+
es: {
|
|
126
|
+
header: '🌐 Selección de idioma',
|
|
127
|
+
subheader: 'Todos los mensajes e interfaz se mostrarán en el idioma seleccionado',
|
|
128
|
+
question: 'Seleccione su idioma preferido:',
|
|
129
|
+
selected: 'Idioma seleccionado',
|
|
130
|
+
},
|
|
131
|
+
zh: {
|
|
132
|
+
header: '🌐 语言选择',
|
|
133
|
+
subheader: '所有提示和界面将以您选择的语言显示',
|
|
134
|
+
question: '选择您的首选语言:',
|
|
135
|
+
selected: '语言已选择',
|
|
136
|
+
},
|
|
137
|
+
de: {
|
|
138
|
+
header: '🌐 Sprachauswahl',
|
|
139
|
+
subheader: 'Alle Eingabeaufforderungen und Oberfläche werden in der gewählten Sprache angezeigt',
|
|
140
|
+
question: 'Wählen Sie Ihre bevorzugte Sprache:',
|
|
141
|
+
selected: 'Sprache ausgewählt',
|
|
142
|
+
},
|
|
143
|
+
fr: {
|
|
144
|
+
header: '🌐 Sélection de la langue',
|
|
145
|
+
subheader: 'Toutes les invites et l\'interface seront affichées dans la langue sélectionnée',
|
|
146
|
+
question: 'Sélectionnez votre langue préférée:',
|
|
147
|
+
selected: 'Langue sélectionnée',
|
|
148
|
+
},
|
|
149
|
+
ja: {
|
|
150
|
+
header: '🌐 言語選択',
|
|
151
|
+
subheader: 'すべてのプロンプトとインターフェースは選択した言語で表示されます',
|
|
152
|
+
question: '希望の言語を選択してください:',
|
|
153
|
+
selected: '言語が選択されました',
|
|
154
|
+
},
|
|
155
|
+
ko: {
|
|
156
|
+
header: '🌐 언어 선택',
|
|
157
|
+
subheader: '모든 프롬프트와 인터페이스가 선택한 언어로 표시됩니다',
|
|
158
|
+
question: '선호하는 언어를 선택하세요:',
|
|
159
|
+
selected: '언어가 선택되었습니다',
|
|
160
|
+
},
|
|
161
|
+
pt: {
|
|
162
|
+
header: '🌐 Seleção de idioma',
|
|
163
|
+
subheader: 'Todos os prompts e interface serão exibidos no idioma selecionado',
|
|
164
|
+
question: 'Selecione seu idioma preferido:',
|
|
165
|
+
selected: 'Idioma selecionado',
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
return strings[language] || strings.en;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get native language name
|
|
172
|
+
*/
|
|
173
|
+
export function getLanguageNativeName(code) {
|
|
174
|
+
const names = {
|
|
175
|
+
en: 'English',
|
|
176
|
+
ru: 'Русский',
|
|
177
|
+
es: 'Español',
|
|
178
|
+
zh: '中文',
|
|
179
|
+
de: 'Deutsch',
|
|
180
|
+
fr: 'Français',
|
|
181
|
+
ja: '日本語',
|
|
182
|
+
ko: '한국어',
|
|
183
|
+
pt: 'Português',
|
|
184
|
+
};
|
|
185
|
+
return names[code] || code;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Prompt for language selection - MUST be called FIRST in init
|
|
189
|
+
*
|
|
190
|
+
* This is the entry point for all init language handling.
|
|
191
|
+
* After selection, the LocaleManager is configured for the selected language.
|
|
192
|
+
*
|
|
193
|
+
* @param isCI - Whether running in CI environment
|
|
194
|
+
* @param cliLanguage - Language passed via CLI option (skips prompt if provided)
|
|
195
|
+
* @returns Language selection result
|
|
196
|
+
*/
|
|
197
|
+
export async function promptLanguageSelection(isCI = false, cliLanguage) {
|
|
198
|
+
// If language provided via CLI, use it directly
|
|
199
|
+
if (cliLanguage) {
|
|
200
|
+
// Reset and configure locale manager
|
|
201
|
+
resetLocaleManager();
|
|
202
|
+
getLocaleManager(cliLanguage);
|
|
203
|
+
return {
|
|
204
|
+
language: cliLanguage,
|
|
205
|
+
keepEnglishOriginals: false,
|
|
206
|
+
bilingualModeEnabled: false,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
// CI mode: default to English
|
|
210
|
+
if (isCI) {
|
|
211
|
+
return {
|
|
212
|
+
language: 'en',
|
|
213
|
+
keepEnglishOriginals: false,
|
|
214
|
+
bilingualModeEnabled: false,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
// Show header in English first (user hasn't selected language yet)
|
|
218
|
+
const enStrings = getPromptStrings('en');
|
|
219
|
+
console.log('');
|
|
220
|
+
console.log(chalk.cyan.bold(enStrings.header));
|
|
221
|
+
console.log(chalk.gray(` ${enStrings.subheader}`));
|
|
222
|
+
console.log('');
|
|
223
|
+
// Ask for language selection
|
|
224
|
+
const language = await select({
|
|
225
|
+
message: enStrings.question,
|
|
226
|
+
choices: getLanguageChoices(),
|
|
227
|
+
default: 'en',
|
|
228
|
+
});
|
|
229
|
+
// Reset and configure locale manager with selected language
|
|
230
|
+
resetLocaleManager();
|
|
231
|
+
getLocaleManager(language);
|
|
232
|
+
// If English selected, no bilingual question needed
|
|
233
|
+
if (language === 'en') {
|
|
234
|
+
const selectedStrings = getPromptStrings(language);
|
|
235
|
+
console.log('');
|
|
236
|
+
console.log(chalk.green(` ✔ ${selectedStrings.selected}: ${getLanguageNativeName(language)}`));
|
|
237
|
+
console.log('');
|
|
238
|
+
return {
|
|
239
|
+
language: 'en',
|
|
240
|
+
keepEnglishOriginals: false,
|
|
241
|
+
bilingualModeEnabled: false,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
// Show confirmation in SELECTED language
|
|
245
|
+
const selectedStrings = getPromptStrings(language);
|
|
246
|
+
console.log('');
|
|
247
|
+
console.log(chalk.green(` ✔ ${selectedStrings.selected}: ${getLanguageNativeName(language)}`));
|
|
248
|
+
// Ask about bilingual mode (with cost warning) in SELECTED language
|
|
249
|
+
const warnings = getBilingualWarnings(language);
|
|
250
|
+
console.log('');
|
|
251
|
+
console.log(chalk.yellow.bold(`⚠️ ${warnings.header}`));
|
|
252
|
+
console.log(chalk.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
253
|
+
console.log(chalk.white(` ${warnings.line1}`));
|
|
254
|
+
console.log('');
|
|
255
|
+
console.log(chalk.gray(` ${warnings.line2}`));
|
|
256
|
+
console.log(chalk.gray(` ${warnings.line3}`));
|
|
257
|
+
console.log(chalk.gray(` ${warnings.line4}`));
|
|
258
|
+
console.log(chalk.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
259
|
+
console.log('');
|
|
260
|
+
const keepOriginals = await confirm({
|
|
261
|
+
message: warnings.question,
|
|
262
|
+
default: false, // Default NO - user must explicitly opt-in
|
|
263
|
+
});
|
|
264
|
+
console.log('');
|
|
265
|
+
return {
|
|
266
|
+
language,
|
|
267
|
+
keepEnglishOriginals: keepOriginals,
|
|
268
|
+
bilingualModeEnabled: keepOriginals,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get default language selection for CI/test mode
|
|
273
|
+
*/
|
|
274
|
+
export function getDefaultLanguageSelection(language = 'en') {
|
|
275
|
+
return {
|
|
276
|
+
language,
|
|
277
|
+
keepEnglishOriginals: false,
|
|
278
|
+
bilingualModeEnabled: false,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=language-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-selection.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/language-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAc5F;;GAEG;AACH,SAAS,kBAAkB;IACzB,OAAO;QACL,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;QACrC,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE;QAC/C,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE;QAC/C,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1C,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE;QAC9C,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE;QAC/C,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE;QAC5C,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1C,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,IAAI,EAAE;KACrD,CAAC;AACJ,CAAC;AAcD;;GAEG;AACH,SAAS,oBAAoB,CAAC,QAA2B;IACvD,MAAM,QAAQ,GAAuD;QACnE,EAAE,EAAE;YACF,MAAM,EAAE,+BAA+B;YACvC,KAAK,EAAE,wDAAwD;YAC/D,KAAK,EAAE,0DAA0D;YACjE,KAAK,EAAE,iEAAiE;YACxE,KAAK,EAAE,4DAA4D;YACnE,QAAQ,EAAE,6DAA6D;SACxE;QACD,EAAE,EAAE;YACF,MAAM,EAAE,8CAA8C;YACtD,KAAK,EAAE,kEAAkE;YACzE,KAAK,EAAE,2DAA2D;YAClE,KAAK,EAAE,oFAAoF;YAC3F,KAAK,EAAE,uEAAuE;YAC9E,QAAQ,EAAE,sEAAsE;SACjF;QACD,EAAE,EAAE;YACF,MAAM,EAAE,uCAAuC;YAC/C,KAAK,EAAE,+DAA+D;YACtE,KAAK,EAAE,yEAAyE;YAChF,KAAK,EAAE,oEAAoE;YAC3E,KAAK,EAAE,mEAAmE;YAC1E,QAAQ,EAAE,oEAAoE;SAC/E;QACD,EAAE,EAAE;YACF,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,gBAAgB;YACvB,KAAK,EAAE,kBAAkB;YACzB,KAAK,EAAE,yBAAyB;YAChC,KAAK,EAAE,yBAAyB;YAChC,QAAQ,EAAE,sBAAsB;SACjC;QACD,EAAE,EAAE;YACF,MAAM,EAAE,sCAAsC;YAC9C,KAAK,EAAE,6DAA6D;YACpE,KAAK,EAAE,kEAAkE;YACzE,KAAK,EAAE,2EAA2E;YAClF,KAAK,EAAE,oEAAoE;YAC3E,QAAQ,EAAE,6EAA6E;SACxF;QACD,EAAE,EAAE;YACF,MAAM,EAAE,uCAAuC;YAC/C,KAAK,EAAE,0DAA0D;YACjE,KAAK,EAAE,mFAAmF;YAC1F,KAAK,EAAE,oEAAoE;YAC3E,KAAK,EAAE,wEAAwE;YAC/E,QAAQ,EAAE,oEAAoE;SAC/E;QACD,EAAE,EAAE;YACF,MAAM,EAAE,mBAAmB;YAC3B,KAAK,EAAE,uBAAuB;YAC9B,KAAK,EAAE,gCAAgC;YACvC,KAAK,EAAE,yBAAyB;YAChC,KAAK,EAAE,yCAAyC;YAChD,QAAQ,EAAE,iCAAiC;SAC5C;QACD,EAAE,EAAE;YACF,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE,8BAA8B;YACrC,KAAK,EAAE,iCAAiC;YACxC,KAAK,EAAE,iCAAiC;YACxC,QAAQ,EAAE,sCAAsC;SACjD;QACD,EAAE,EAAE;YACF,MAAM,EAAE,gCAAgC;YACxC,KAAK,EAAE,2DAA2D;YAClE,KAAK,EAAE,mEAAmE;YAC1E,KAAK,EAAE,gEAAgE;YACvE,KAAK,EAAE,iEAAiE;YACxE,QAAQ,EAAE,+DAA+D;SAC1E;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC;AAC3C,CAAC;AAYD;;GAEG;AACH,SAAS,gBAAgB,CAAC,QAA2B;IACnD,MAAM,OAAO,GAAqD;QAChE,EAAE,EAAE;YACF,MAAM,EAAE,uBAAuB;YAC/B,SAAS,EAAE,uEAAuE;YAClF,QAAQ,EAAE,iCAAiC;YAC3C,QAAQ,EAAE,mBAAmB;SAC9B;QACD,EAAE,EAAE;YACF,MAAM,EAAE,gBAAgB;YACxB,SAAS,EAAE,iEAAiE;YAC5E,QAAQ,EAAE,+BAA+B;YACzC,QAAQ,EAAE,aAAa;SACxB;QACD,EAAE,EAAE;YACF,MAAM,EAAE,wBAAwB;YAChC,SAAS,EAAE,sEAAsE;YACjF,QAAQ,EAAE,iCAAiC;YAC3C,QAAQ,EAAE,qBAAqB;SAChC;QACD,EAAE,EAAE;YACF,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,mBAAmB;YAC9B,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,OAAO;SAClB;QACD,EAAE,EAAE;YACF,MAAM,EAAE,kBAAkB;YAC1B,SAAS,EAAE,qFAAqF;YAChG,QAAQ,EAAE,qCAAqC;YAC/C,QAAQ,EAAE,oBAAoB;SAC/B;QACD,EAAE,EAAE;YACF,MAAM,EAAE,2BAA2B;YACnC,SAAS,EAAE,iFAAiF;YAC5F,QAAQ,EAAE,qCAAqC;YAC/C,QAAQ,EAAE,qBAAqB;SAChC;QACD,EAAE,EAAE;YACF,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,kCAAkC;YAC7C,QAAQ,EAAE,iBAAiB;YAC3B,QAAQ,EAAE,YAAY;SACvB;QACD,EAAE,EAAE;YACF,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,+BAA+B;YAC1C,QAAQ,EAAE,iBAAiB;YAC3B,QAAQ,EAAE,aAAa;SACxB;QACD,EAAE,EAAE;YACF,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,mEAAmE;YAC9E,QAAQ,EAAE,iCAAiC;YAC3C,QAAQ,EAAE,oBAAoB;SAC/B;KACF,CAAC;IAEF,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAuB;IAC3D,MAAM,KAAK,GAAsC;QAC/C,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,UAAU;QACd,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,WAAW;KAChB,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAgB,KAAK,EACrB,WAA+B;IAE/B,gDAAgD;IAChD,IAAI,WAAW,EAAE,CAAC;QAChB,qCAAqC;QACrC,kBAAkB,EAAE,CAAC;QACrB,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAE9B,OAAO;YACL,QAAQ,EAAE,WAAW;YACrB,oBAAoB,EAAE,KAAK;YAC3B,oBAAoB,EAAE,KAAK;SAC5B,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,IAAI,IAAI,EAAE,CAAC;QACT,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,KAAK;YAC3B,oBAAoB,EAAE,KAAK;SAC5B,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAoB;QAC/C,OAAO,EAAE,SAAS,CAAC,QAAQ;QAC3B,OAAO,EAAE,kBAAkB,EAAE;QAC7B,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,4DAA4D;IAC5D,kBAAkB,EAAE,CAAC;IACrB,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE3B,oDAAoD;IACpD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,eAAe,CAAC,QAAQ,KAAK,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,KAAK;YAC3B,oBAAoB,EAAE,KAAK;SAC5B,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,eAAe,CAAC,QAAQ,KAAK,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjG,oEAAoE;IACpE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;QAClC,OAAO,EAAE,QAAQ,CAAC,QAAQ;QAC1B,OAAO,EAAE,KAAK,EAAE,2CAA2C;KAC5D,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO;QACL,QAAQ;QACR,oBAAoB,EAAE,aAAa;QACnC,oBAAoB,EAAE,aAAa;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAA8B,IAAI;IAC5E,OAAO;QACL,QAAQ;QACR,oBAAoB,EAAE,KAAK;QAC3B,oBAAoB,EAAE,KAAK;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Handles git provider detection and configuration
|
|
4
4
|
*/
|
|
5
5
|
import type { RepositoryHosting, GitHubRemote } from './types.js';
|
|
6
|
+
import type { SupportedLanguage } from '../../../core/i18n/types.js';
|
|
6
7
|
/**
|
|
7
8
|
* Options for repository setup
|
|
8
9
|
*/
|
|
@@ -10,6 +11,7 @@ export interface RepositorySetupOptions {
|
|
|
10
11
|
targetDir: string;
|
|
11
12
|
isCI: boolean;
|
|
12
13
|
gitHubRemote: GitHubRemote | null;
|
|
14
|
+
language?: SupportedLanguage;
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* Result of repository setup
|
|
@@ -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;
|
|
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;AAErE;;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;AAgKD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwE5G"}
|
|
@@ -4,6 +4,149 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
import { select } from '@inquirer/prompts';
|
|
7
|
+
/**
|
|
8
|
+
* Get translated strings for repository setup
|
|
9
|
+
*/
|
|
10
|
+
function getRepoStrings(language) {
|
|
11
|
+
const strings = {
|
|
12
|
+
en: {
|
|
13
|
+
header: '📦 Repository Hosting',
|
|
14
|
+
ciAutoDetected: 'CI mode: Auto-detected',
|
|
15
|
+
structureQuestion: 'What is your repository structure?',
|
|
16
|
+
structureSingle: 'single - One repository (monorepo or standard project)',
|
|
17
|
+
structureMultiple: 'multiple - Multiple repos (microservices, EDA, parent/child)',
|
|
18
|
+
providerQuestion: 'Which Git provider do you use?',
|
|
19
|
+
github: 'GitHub',
|
|
20
|
+
githubDetected: '(detected)',
|
|
21
|
+
githubRecommended: '(recommended)',
|
|
22
|
+
bitbucket: 'Bitbucket',
|
|
23
|
+
ado: 'Azure DevOps',
|
|
24
|
+
local: 'Local (no remote)',
|
|
25
|
+
other: 'Other (GitLab, etc - coming soon)',
|
|
26
|
+
},
|
|
27
|
+
ru: {
|
|
28
|
+
header: '📦 Хостинг репозитория',
|
|
29
|
+
ciAutoDetected: 'CI режим: Автоопределено',
|
|
30
|
+
structureQuestion: 'Какова структура вашего репозитория?',
|
|
31
|
+
structureSingle: 'single - Один репозиторий (монорепо или стандартный проект)',
|
|
32
|
+
structureMultiple: 'multiple - Несколько репо (микросервисы, EDA, родитель/потомок)',
|
|
33
|
+
providerQuestion: 'Какой Git-провайдер вы используете?',
|
|
34
|
+
github: 'GitHub',
|
|
35
|
+
githubDetected: '(обнаружен)',
|
|
36
|
+
githubRecommended: '(рекомендуется)',
|
|
37
|
+
bitbucket: 'Bitbucket',
|
|
38
|
+
ado: 'Azure DevOps',
|
|
39
|
+
local: 'Локально (без remote)',
|
|
40
|
+
other: 'Другой (GitLab и т.д. - скоро)',
|
|
41
|
+
},
|
|
42
|
+
es: {
|
|
43
|
+
header: '📦 Alojamiento del repositorio',
|
|
44
|
+
ciAutoDetected: 'Modo CI: Detectado automáticamente',
|
|
45
|
+
structureQuestion: '¿Cuál es la estructura de su repositorio?',
|
|
46
|
+
structureSingle: 'single - Un repositorio (monorepo o proyecto estándar)',
|
|
47
|
+
structureMultiple: 'multiple - Múltiples repos (microservicios, EDA, padre/hijo)',
|
|
48
|
+
providerQuestion: '¿Qué proveedor de Git usa?',
|
|
49
|
+
github: 'GitHub',
|
|
50
|
+
githubDetected: '(detectado)',
|
|
51
|
+
githubRecommended: '(recomendado)',
|
|
52
|
+
bitbucket: 'Bitbucket',
|
|
53
|
+
ado: 'Azure DevOps',
|
|
54
|
+
local: 'Local (sin remoto)',
|
|
55
|
+
other: 'Otro (GitLab, etc - próximamente)',
|
|
56
|
+
},
|
|
57
|
+
zh: {
|
|
58
|
+
header: '📦 仓库托管',
|
|
59
|
+
ciAutoDetected: 'CI 模式:自动检测',
|
|
60
|
+
structureQuestion: '您的仓库结构是什么?',
|
|
61
|
+
structureSingle: 'single - 单个仓库(单体仓库或标准项目)',
|
|
62
|
+
structureMultiple: 'multiple - 多个仓库(微服务、EDA、父/子)',
|
|
63
|
+
providerQuestion: '您使用哪个 Git 提供商?',
|
|
64
|
+
github: 'GitHub',
|
|
65
|
+
githubDetected: '(已检测)',
|
|
66
|
+
githubRecommended: '(推荐)',
|
|
67
|
+
bitbucket: 'Bitbucket',
|
|
68
|
+
ado: 'Azure DevOps',
|
|
69
|
+
local: '本地(无远程)',
|
|
70
|
+
other: '其他(GitLab 等 - 即将推出)',
|
|
71
|
+
},
|
|
72
|
+
de: {
|
|
73
|
+
header: '📦 Repository-Hosting',
|
|
74
|
+
ciAutoDetected: 'CI-Modus: Automatisch erkannt',
|
|
75
|
+
structureQuestion: 'Wie ist Ihre Repository-Struktur?',
|
|
76
|
+
structureSingle: 'single - Ein Repository (Monorepo oder Standardprojekt)',
|
|
77
|
+
structureMultiple: 'multiple - Mehrere Repos (Microservices, EDA, Parent/Child)',
|
|
78
|
+
providerQuestion: 'Welchen Git-Anbieter verwenden Sie?',
|
|
79
|
+
github: 'GitHub',
|
|
80
|
+
githubDetected: '(erkannt)',
|
|
81
|
+
githubRecommended: '(empfohlen)',
|
|
82
|
+
bitbucket: 'Bitbucket',
|
|
83
|
+
ado: 'Azure DevOps',
|
|
84
|
+
local: 'Lokal (kein Remote)',
|
|
85
|
+
other: 'Andere (GitLab, etc - kommt bald)',
|
|
86
|
+
},
|
|
87
|
+
fr: {
|
|
88
|
+
header: '📦 Hébergement du dépôt',
|
|
89
|
+
ciAutoDetected: 'Mode CI: Détecté automatiquement',
|
|
90
|
+
structureQuestion: 'Quelle est la structure de votre dépôt?',
|
|
91
|
+
structureSingle: 'single - Un dépôt (monorepo ou projet standard)',
|
|
92
|
+
structureMultiple: 'multiple - Plusieurs dépôts (microservices, EDA, parent/enfant)',
|
|
93
|
+
providerQuestion: 'Quel fournisseur Git utilisez-vous?',
|
|
94
|
+
github: 'GitHub',
|
|
95
|
+
githubDetected: '(détecté)',
|
|
96
|
+
githubRecommended: '(recommandé)',
|
|
97
|
+
bitbucket: 'Bitbucket',
|
|
98
|
+
ado: 'Azure DevOps',
|
|
99
|
+
local: 'Local (pas de remote)',
|
|
100
|
+
other: 'Autre (GitLab, etc - bientôt)',
|
|
101
|
+
},
|
|
102
|
+
ja: {
|
|
103
|
+
header: '📦 リポジトリホスティング',
|
|
104
|
+
ciAutoDetected: 'CIモード:自動検出',
|
|
105
|
+
structureQuestion: 'リポジトリの構造は?',
|
|
106
|
+
structureSingle: 'single - 1つのリポジトリ(モノレポまたは標準プロジェクト)',
|
|
107
|
+
structureMultiple: 'multiple - 複数のリポジトリ(マイクロサービス、EDA、親/子)',
|
|
108
|
+
providerQuestion: 'どのGitプロバイダーを使用していますか?',
|
|
109
|
+
github: 'GitHub',
|
|
110
|
+
githubDetected: '(検出済み)',
|
|
111
|
+
githubRecommended: '(推奨)',
|
|
112
|
+
bitbucket: 'Bitbucket',
|
|
113
|
+
ado: 'Azure DevOps',
|
|
114
|
+
local: 'ローカル(リモートなし)',
|
|
115
|
+
other: 'その他(GitLabなど - 近日公開)',
|
|
116
|
+
},
|
|
117
|
+
ko: {
|
|
118
|
+
header: '📦 저장소 호스팅',
|
|
119
|
+
ciAutoDetected: 'CI 모드: 자동 감지됨',
|
|
120
|
+
structureQuestion: '저장소 구조는 무엇입니까?',
|
|
121
|
+
structureSingle: 'single - 하나의 저장소 (모노레포 또는 표준 프로젝트)',
|
|
122
|
+
structureMultiple: 'multiple - 여러 저장소 (마이크로서비스, EDA, 부모/자식)',
|
|
123
|
+
providerQuestion: '어떤 Git 제공자를 사용하시나요?',
|
|
124
|
+
github: 'GitHub',
|
|
125
|
+
githubDetected: '(감지됨)',
|
|
126
|
+
githubRecommended: '(권장)',
|
|
127
|
+
bitbucket: 'Bitbucket',
|
|
128
|
+
ado: 'Azure DevOps',
|
|
129
|
+
local: '로컬 (원격 없음)',
|
|
130
|
+
other: '기타 (GitLab 등 - 곧 출시)',
|
|
131
|
+
},
|
|
132
|
+
pt: {
|
|
133
|
+
header: '📦 Hospedagem do repositório',
|
|
134
|
+
ciAutoDetected: 'Modo CI: Detectado automaticamente',
|
|
135
|
+
structureQuestion: 'Qual é a estrutura do seu repositório?',
|
|
136
|
+
structureSingle: 'single - Um repositório (monorepo ou projeto padrão)',
|
|
137
|
+
structureMultiple: 'multiple - Múltiplos repos (microsserviços, EDA, pai/filho)',
|
|
138
|
+
providerQuestion: 'Qual provedor Git você usa?',
|
|
139
|
+
github: 'GitHub',
|
|
140
|
+
githubDetected: '(detectado)',
|
|
141
|
+
githubRecommended: '(recomendado)',
|
|
142
|
+
bitbucket: 'Bitbucket',
|
|
143
|
+
ado: 'Azure DevOps',
|
|
144
|
+
local: 'Local (sem remoto)',
|
|
145
|
+
other: 'Outro (GitLab, etc - em breve)',
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
return strings[language] || strings.en;
|
|
149
|
+
}
|
|
7
150
|
/**
|
|
8
151
|
* Prompt user for repository hosting configuration
|
|
9
152
|
*
|
|
@@ -11,28 +154,29 @@ import { select } from '@inquirer/prompts';
|
|
|
11
154
|
* @returns Repository configuration
|
|
12
155
|
*/
|
|
13
156
|
export async function setupRepositoryHosting(options) {
|
|
14
|
-
const { isCI, gitHubRemote } = options;
|
|
157
|
+
const { isCI, gitHubRemote, language = 'en' } = options;
|
|
158
|
+
const strings = getRepoStrings(language);
|
|
15
159
|
console.log('');
|
|
16
|
-
console.log(chalk.cyan.bold(
|
|
160
|
+
console.log(chalk.cyan.bold(strings.header));
|
|
17
161
|
console.log('');
|
|
18
162
|
let repositoryHosting = 'github-single';
|
|
19
163
|
let isMultiRepo = false;
|
|
20
164
|
if (isCI) {
|
|
21
165
|
// CI mode: auto-detect
|
|
22
166
|
repositoryHosting = gitHubRemote ? 'github-single' : 'local';
|
|
23
|
-
console.log(chalk.gray(` →
|
|
167
|
+
console.log(chalk.gray(` → ${strings.ciAutoDetected} ${repositoryHosting} hosting\n`));
|
|
24
168
|
return { hosting: repositoryHosting, isMultiRepo: false };
|
|
25
169
|
}
|
|
26
170
|
// Step 1: Ask about repository structure
|
|
27
171
|
const structure = await select({
|
|
28
|
-
message:
|
|
172
|
+
message: strings.structureQuestion,
|
|
29
173
|
choices: [
|
|
30
174
|
{
|
|
31
|
-
name:
|
|
175
|
+
name: strings.structureSingle,
|
|
32
176
|
value: 'single'
|
|
33
177
|
},
|
|
34
178
|
{
|
|
35
|
-
name:
|
|
179
|
+
name: strings.structureMultiple,
|
|
36
180
|
value: 'multirepo'
|
|
37
181
|
}
|
|
38
182
|
],
|
|
@@ -41,26 +185,26 @@ export async function setupRepositoryHosting(options) {
|
|
|
41
185
|
isMultiRepo = structure === 'multirepo';
|
|
42
186
|
// Step 2: Ask about git provider
|
|
43
187
|
const provider = await select({
|
|
44
|
-
message:
|
|
188
|
+
message: strings.providerQuestion,
|
|
45
189
|
choices: [
|
|
46
190
|
{
|
|
47
|
-
name: `🐙
|
|
191
|
+
name: `🐙 ${strings.github} ${gitHubRemote ? strings.githubDetected : strings.githubRecommended}`,
|
|
48
192
|
value: 'github'
|
|
49
193
|
},
|
|
50
194
|
{
|
|
51
|
-
name:
|
|
195
|
+
name: `🪣 ${strings.bitbucket}`,
|
|
52
196
|
value: 'bitbucket'
|
|
53
197
|
},
|
|
54
198
|
{
|
|
55
|
-
name:
|
|
199
|
+
name: `🔷 ${strings.ado}`,
|
|
56
200
|
value: 'ado'
|
|
57
201
|
},
|
|
58
202
|
{
|
|
59
|
-
name:
|
|
203
|
+
name: `💻 ${strings.local}`,
|
|
60
204
|
value: 'local'
|
|
61
205
|
},
|
|
62
206
|
{
|
|
63
|
-
name:
|
|
207
|
+
name: `🔧 ${strings.other}`,
|
|
64
208
|
value: 'other'
|
|
65
209
|
}
|
|
66
210
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository-setup.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"repository-setup.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/repository-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Translation configuration prompts
|
|
3
3
|
*
|
|
4
|
+
* NOTE: Language selection is now in language-selection.ts (asked first)
|
|
5
|
+
* This module only handles auto-translation scope configuration.
|
|
6
|
+
*
|
|
4
7
|
* CRITICAL: User MUST be asked before enabling translation
|
|
5
8
|
* Translation can ~2x token usage (significant cost impact)
|
|
6
9
|
*
|
|
7
10
|
* @module cli/helpers/init/translation-config
|
|
8
11
|
*/
|
|
9
12
|
import type { SupportedLanguage } from '../../../core/i18n/types.js';
|
|
13
|
+
import type { LanguageSelectionResult } from './language-selection.js';
|
|
10
14
|
/**
|
|
11
15
|
* Translation scope - what gets auto-translated
|
|
12
16
|
*/
|
|
@@ -28,14 +32,18 @@ export interface TranslationConfigResult {
|
|
|
28
32
|
keepEnglishOriginals: boolean;
|
|
29
33
|
}
|
|
30
34
|
/**
|
|
31
|
-
* Prompt user for
|
|
35
|
+
* Prompt user for translation configuration
|
|
36
|
+
*
|
|
37
|
+
* NOTE: Language is already selected in language-selection.ts
|
|
38
|
+
* This only handles auto-translation scope configuration.
|
|
32
39
|
*
|
|
33
40
|
* CRITICAL: Shows cost warning before enabling translation
|
|
34
41
|
* User must explicitly opt-in to translation (default: disabled)
|
|
35
42
|
*
|
|
43
|
+
* @param languageResult - Result from language selection (language + bilingual preference)
|
|
36
44
|
* @returns Translation configuration result
|
|
37
45
|
*/
|
|
38
|
-
export declare function promptTranslationConfig(): Promise<TranslationConfigResult>;
|
|
46
|
+
export declare function promptTranslationConfig(languageResult?: LanguageSelectionResult): Promise<TranslationConfigResult>;
|
|
39
47
|
/**
|
|
40
48
|
* Update config.json with translation configuration
|
|
41
49
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation-config.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/translation-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"translation-config.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/translation-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,cAAc,EAAE,OAAO,CAAC;IACxB,2CAA2C;IAC3C,UAAU,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AA2SD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,cAAc,CAAC,EAAE,uBAAuB,GACvC,OAAO,CAAC,uBAAuB,CAAC,CAuGlC;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,uBAAuB,GAC9B,IAAI,CAyBN;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,GAAE,iBAAwB,GAAG,uBAAuB,CAOvG"}
|