@padua/cli 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.initializeConfig = initializeConfig;
40
+ exports.formatConfigJson = formatConfigJson;
41
+ exports.displayNextSteps = displayNextSteps;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const chalk_1 = __importDefault(require("chalk"));
45
+ /**
46
+ * Initialize config by writing to padua.config.json
47
+ *
48
+ * @param config - Configuration object to write
49
+ * @param _overwrite - If true, replaces file; if false, may merge
50
+ * @throws Error if file write fails
51
+ */
52
+ async function initializeConfig(config, _overwrite) {
53
+ const configPath = path.join(process.cwd(), 'padua.config.json');
54
+ try {
55
+ // Format JSON with 2-space indentation
56
+ const formatted = formatConfigJson(config);
57
+ // Write to disk
58
+ fs.writeFileSync(configPath, formatted, 'utf-8');
59
+ // Set readable permissions (0644)
60
+ fs.chmodSync(configPath, 0o644);
61
+ }
62
+ catch (error) {
63
+ // Provide specific error messages for common failure scenarios
64
+ const err = error;
65
+ if (err.code === 'EACCES') {
66
+ throw new Error('Permission denied. Check directory write permissions.');
67
+ }
68
+ else if (err.code === 'ENOSPC') {
69
+ throw new Error('No disk space available.');
70
+ }
71
+ else if (err.code === 'EROFS') {
72
+ throw new Error('File system is read-only.');
73
+ }
74
+ else {
75
+ throw new Error(`Failed to write config file: ${err.message}`);
76
+ }
77
+ }
78
+ }
79
+ /**
80
+ * Format PaduaConfig as pretty-printed JSON
81
+ *
82
+ * @param config - Configuration to format
83
+ * @returns Formatted JSON string with 2-space indentation
84
+ */
85
+ function formatConfigJson(config) {
86
+ // Build clean config object (omit undefined/empty sections)
87
+ const cleaned = {
88
+ defaultProfile: config.defaultProfile,
89
+ region: config.region,
90
+ };
91
+ // Only include codeartifact if fully configured
92
+ if (config.codeartifact?.domain && config.codeartifact?.domainOwner && config.codeartifact?.repository) {
93
+ cleaned.codeartifact = config.codeartifact;
94
+ }
95
+ // Only include ecr if fully configured
96
+ if (config.ecr?.accountId && config.ecr?.region) {
97
+ cleaned.ecr = config.ecr;
98
+ }
99
+ return JSON.stringify(cleaned, null, 2) + '\n';
100
+ }
101
+ /**
102
+ * Display success message and next steps
103
+ *
104
+ * @param config - The configuration that was saved
105
+ * @param noColor - Whether to disable colored output
106
+ */
107
+ function displayNextSteps(config, noColor = false) {
108
+ console.log('');
109
+ if (!noColor) {
110
+ console.log(chalk_1.default.cyan.bold('Next steps:'));
111
+ console.log(chalk_1.default.gray(' 1. Review configuration: cat padua.config.json'));
112
+ console.log(chalk_1.default.gray(' 2. Authenticate: padua login'));
113
+ console.log(chalk_1.default.gray(' 3. View help: padua --help'));
114
+ }
115
+ else {
116
+ console.log('Next steps:');
117
+ console.log(' 1. Review configuration: cat padua.config.json');
118
+ console.log(' 2. Authenticate: padua login');
119
+ console.log(' 3. View help: padua --help');
120
+ }
121
+ console.log('');
122
+ }
123
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { Question, ListQuestion } from 'inquirer';
2
+ import { PaduaConfig } from '../login/types';
3
+ /**
4
+ * Padua AWS account configurations
5
+ */
6
+ declare const PADUA_ACCOUNTS: readonly [{
7
+ readonly name: "development";
8
+ readonly accountId: "361485743373";
9
+ }, {
10
+ readonly name: "preproduction";
11
+ readonly accountId: "632525745250";
12
+ }, {
13
+ readonly name: "production";
14
+ readonly accountId: "196829529726";
15
+ }, {
16
+ readonly name: "sharedservices";
17
+ readonly accountId: "462199339380";
18
+ }];
19
+ /**
20
+ * Padua SSO role options
21
+ */
22
+ declare const PADUA_SSO_ROLES: readonly [{
23
+ readonly name: "Developers";
24
+ readonly description: "Standard developer access (recommended)";
25
+ }, {
26
+ readonly name: "Administrators";
27
+ readonly description: "Full administrative access";
28
+ }];
29
+ /**
30
+ * Padua-specific default configuration values
31
+ * These are pre-filled to match the standard Padua infrastructure setup
32
+ */
33
+ declare const PADUA_DEFAULTS: {
34
+ profile: string;
35
+ region: string;
36
+ sso: {
37
+ startUrl: string;
38
+ region: string;
39
+ roleName: string;
40
+ accountId: string;
41
+ };
42
+ codeartifact: {
43
+ domain: string;
44
+ domainOwner: string;
45
+ repository: string;
46
+ };
47
+ ecr: {
48
+ accountId: string;
49
+ region: string;
50
+ };
51
+ };
52
+ /**
53
+ * Internal interface for prompt answers
54
+ */
55
+ interface PromptAnswers {
56
+ profileName: string;
57
+ ssoAccount: string;
58
+ ssoRoleName: string;
59
+ region: string;
60
+ includeCodeArtifact: boolean;
61
+ codeartifactDomain?: string;
62
+ codeartifactOwner?: string;
63
+ codeartifactRepository?: string;
64
+ includeEcr: boolean;
65
+ ecrAccountId?: string;
66
+ ecrRegion?: string;
67
+ }
68
+ /**
69
+ * SSO configuration extracted from answers
70
+ */
71
+ export interface SSOConfig {
72
+ profileName: string;
73
+ startUrl: string;
74
+ ssoRegion: string;
75
+ accountId: string;
76
+ roleName: string;
77
+ defaultRegion: string;
78
+ }
79
+ /**
80
+ * Validator functions compatible with inquirer
81
+ * Return true for valid, error message string for invalid
82
+ */
83
+ declare function createProfileValidator(): (value: string) => true | string;
84
+ declare function createRegionValidator(): (value: string) => true | string;
85
+ declare function createAccountIdValidator(field: string): (value: string) => true | string;
86
+ declare function createDomainValidator(): (value: string) => true | string;
87
+ declare function createRepositoryValidator(): (value: string) => true | string;
88
+ /**
89
+ * Prompt creators return inquirer Question objects
90
+ */
91
+ declare function createProfileNamePrompt(defaultValue?: string): Question;
92
+ declare function createSSOAccountPrompt(defaultAccountId?: string): ListQuestion;
93
+ declare function createSSORolePrompt(defaultRole?: string): ListQuestion;
94
+ declare function createRegionPrompt(defaultValue?: string): Question;
95
+ declare function createCodeArtifactOptInPrompt(): Question;
96
+ declare function createCodeArtifactDomainPrompt(defaultValue?: string): Question;
97
+ declare function createCodeArtifactOwnerPrompt(defaultValue?: string): Question;
98
+ declare function createCodeArtifactRepositoryPrompt(defaultValue?: string): Question;
99
+ declare function createEcrOptInPrompt(): Question;
100
+ declare function createEcrAccountIdPrompt(defaultValue?: string): Question;
101
+ declare function createEcrRegionPrompt(defaultValue?: string): Question;
102
+ /**
103
+ * Extract account ID from the ssoAccount answer format "name (accountId)"
104
+ */
105
+ declare function extractAccountId(ssoAccount: string): string;
106
+ /**
107
+ * Display configuration summary
108
+ */
109
+ declare function displaySummary(answers: PromptAnswers): void;
110
+ declare function createConfirmationPrompt(): Question;
111
+ /**
112
+ * Result from runPrompts containing both configs
113
+ */
114
+ export interface PromptResult {
115
+ paduaConfig: PaduaConfig;
116
+ ssoConfig: SSOConfig;
117
+ }
118
+ /**
119
+ * Run the complete prompt flow
120
+ *
121
+ * @param existingConfig - Optional existing config to use as defaults
122
+ * @returns PromptResult - Both PaduaConfig and SSOConfig
123
+ * @throws Error if user cancels (Ctrl+C) or validation fails after retries
124
+ */
125
+ export declare function runPrompts(existingConfig: PaduaConfig | null): Promise<PromptResult>;
126
+ export { createProfileValidator, createRegionValidator, createAccountIdValidator, createDomainValidator, createRepositoryValidator, createProfileNamePrompt, createSSOAccountPrompt, createSSORolePrompt, createRegionPrompt, createCodeArtifactOptInPrompt, createCodeArtifactDomainPrompt, createCodeArtifactOwnerPrompt, createCodeArtifactRepositoryPrompt, createEcrOptInPrompt, createEcrAccountIdPrompt, createEcrRegionPrompt, createConfirmationPrompt, displaySummary, extractAccountId, PADUA_DEFAULTS, PADUA_ACCOUNTS, PADUA_SSO_ROLES, };
127
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/commands/init/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,395 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PADUA_SSO_ROLES = exports.PADUA_ACCOUNTS = exports.PADUA_DEFAULTS = void 0;
7
+ exports.runPrompts = runPrompts;
8
+ exports.createProfileValidator = createProfileValidator;
9
+ exports.createRegionValidator = createRegionValidator;
10
+ exports.createAccountIdValidator = createAccountIdValidator;
11
+ exports.createDomainValidator = createDomainValidator;
12
+ exports.createRepositoryValidator = createRepositoryValidator;
13
+ exports.createProfileNamePrompt = createProfileNamePrompt;
14
+ exports.createSSOAccountPrompt = createSSOAccountPrompt;
15
+ exports.createSSORolePrompt = createSSORolePrompt;
16
+ exports.createRegionPrompt = createRegionPrompt;
17
+ exports.createCodeArtifactOptInPrompt = createCodeArtifactOptInPrompt;
18
+ exports.createCodeArtifactDomainPrompt = createCodeArtifactDomainPrompt;
19
+ exports.createCodeArtifactOwnerPrompt = createCodeArtifactOwnerPrompt;
20
+ exports.createCodeArtifactRepositoryPrompt = createCodeArtifactRepositoryPrompt;
21
+ exports.createEcrOptInPrompt = createEcrOptInPrompt;
22
+ exports.createEcrAccountIdPrompt = createEcrAccountIdPrompt;
23
+ exports.createEcrRegionPrompt = createEcrRegionPrompt;
24
+ exports.createConfirmationPrompt = createConfirmationPrompt;
25
+ exports.displaySummary = displaySummary;
26
+ exports.extractAccountId = extractAccountId;
27
+ const inquirer_1 = __importDefault(require("inquirer"));
28
+ const chalk_1 = __importDefault(require("chalk"));
29
+ const types_1 = require("../login/types");
30
+ /**
31
+ * Padua AWS account configurations
32
+ */
33
+ const PADUA_ACCOUNTS = [
34
+ { name: 'development', accountId: '361485743373' },
35
+ { name: 'preproduction', accountId: '632525745250' },
36
+ { name: 'production', accountId: '196829529726' },
37
+ { name: 'sharedservices', accountId: '462199339380' },
38
+ ];
39
+ exports.PADUA_ACCOUNTS = PADUA_ACCOUNTS;
40
+ /**
41
+ * Padua SSO role options
42
+ */
43
+ const PADUA_SSO_ROLES = [
44
+ { name: 'Developers', description: 'Standard developer access (recommended)' },
45
+ { name: 'Administrators', description: 'Full administrative access' },
46
+ ];
47
+ exports.PADUA_SSO_ROLES = PADUA_SSO_ROLES;
48
+ /**
49
+ * Padua-specific default configuration values
50
+ * These are pre-filled to match the standard Padua infrastructure setup
51
+ */
52
+ const PADUA_DEFAULTS = {
53
+ profile: 'development',
54
+ region: 'ap-southeast-2',
55
+ sso: {
56
+ startUrl: 'https://paduasolutions.awsapps.com/start/',
57
+ region: 'ap-southeast-2',
58
+ roleName: 'Developers',
59
+ accountId: '361485743373', // paduafg-development
60
+ },
61
+ codeartifact: {
62
+ domain: 'padua',
63
+ domainOwner: '361485743373', // paduafg-development account
64
+ repository: 'npm',
65
+ },
66
+ ecr: {
67
+ accountId: '361485743373', // paduafg-development account
68
+ region: 'ap-southeast-2',
69
+ },
70
+ };
71
+ exports.PADUA_DEFAULTS = PADUA_DEFAULTS;
72
+ /**
73
+ * Validator functions compatible with inquirer
74
+ * Return true for valid, error message string for invalid
75
+ */
76
+ function createProfileValidator() {
77
+ return (value) => {
78
+ const trimmed = value.trim();
79
+ if (!trimmed) {
80
+ return 'Profile name is required';
81
+ }
82
+ if (!(0, types_1.isValidProfileName)(trimmed)) {
83
+ return 'Invalid profile name. Use alphanumeric, hyphens, and underscores (max 128 chars)';
84
+ }
85
+ return true;
86
+ };
87
+ }
88
+ function createRegionValidator() {
89
+ return (value) => {
90
+ const trimmed = value.trim();
91
+ if (!trimmed) {
92
+ return 'Region is required';
93
+ }
94
+ if (!(0, types_1.isValidRegion)(trimmed)) {
95
+ return 'Invalid region. Valid regions: us-east-1, us-east-2, us-west-1, us-west-2, ' +
96
+ 'eu-west-1, eu-west-2, eu-west-3, eu-central-1, eu-north-1, ' +
97
+ 'ap-northeast-1, ap-northeast-2, ap-northeast-3, ' +
98
+ 'ap-southeast-1, ap-southeast-2, ap-south-1, ' +
99
+ 'ca-central-1, sa-east-1, af-south-1, me-south-1';
100
+ }
101
+ return true;
102
+ };
103
+ }
104
+ function createAccountIdValidator(field) {
105
+ return (value) => {
106
+ const trimmed = value.trim();
107
+ if (!trimmed) {
108
+ return `${field} is required`;
109
+ }
110
+ if (!(0, types_1.isValidAccountId)(trimmed)) {
111
+ return 'Invalid account ID. Must be exactly 12 digits';
112
+ }
113
+ return true;
114
+ };
115
+ }
116
+ function createDomainValidator() {
117
+ return (value) => {
118
+ const trimmed = value.trim().toLowerCase();
119
+ if (!trimmed) {
120
+ return 'Domain name is required';
121
+ }
122
+ if (!(0, types_1.isValidDomainName)(trimmed)) {
123
+ return 'Invalid domain. Use lowercase alphanumeric and hyphens ' +
124
+ '(1-127 chars, no leading/trailing hyphens)';
125
+ }
126
+ return true;
127
+ };
128
+ }
129
+ function createRepositoryValidator() {
130
+ return (value) => {
131
+ const trimmed = value.trim().toLowerCase();
132
+ if (!trimmed) {
133
+ return 'Repository name is required';
134
+ }
135
+ if (!(0, types_1.isValidRepositoryName)(trimmed)) {
136
+ return 'Invalid repository name. Use lowercase alphanumeric and hyphens ' +
137
+ '(1-100 chars, no leading/trailing hyphens)';
138
+ }
139
+ return true;
140
+ };
141
+ }
142
+ /**
143
+ * Prompt creators return inquirer Question objects
144
+ */
145
+ function createProfileNamePrompt(defaultValue) {
146
+ return {
147
+ type: 'input',
148
+ name: 'profileName',
149
+ message: 'Profile name (for ~/.aws/config):',
150
+ default: defaultValue || PADUA_DEFAULTS.profile,
151
+ validate: createProfileValidator(),
152
+ filter: (value) => value.trim(),
153
+ };
154
+ }
155
+ function createSSOAccountPrompt(defaultAccountId) {
156
+ const choices = PADUA_ACCOUNTS.map(acc => ({
157
+ name: `${acc.name} (${acc.accountId})`,
158
+ value: `${acc.name} (${acc.accountId})`,
159
+ }));
160
+ // Find default based on accountId or use first option
161
+ const defaultChoice = defaultAccountId
162
+ ? choices.find(c => c.value.includes(defaultAccountId))?.value
163
+ : choices[0].value;
164
+ return {
165
+ type: 'list',
166
+ name: 'ssoAccount',
167
+ message: 'AWS Account:',
168
+ choices,
169
+ default: defaultChoice,
170
+ };
171
+ }
172
+ function createSSORolePrompt(defaultRole) {
173
+ const choices = PADUA_SSO_ROLES.map(role => ({
174
+ name: `${role.name} - ${role.description}`,
175
+ value: role.name,
176
+ }));
177
+ return {
178
+ type: 'list',
179
+ name: 'ssoRoleName',
180
+ message: 'SSO Role:',
181
+ choices,
182
+ default: defaultRole || PADUA_DEFAULTS.sso.roleName,
183
+ };
184
+ }
185
+ function createRegionPrompt(defaultValue) {
186
+ return {
187
+ type: 'input',
188
+ name: 'region',
189
+ message: 'Default AWS Region:',
190
+ default: defaultValue || PADUA_DEFAULTS.region,
191
+ validate: createRegionValidator(),
192
+ filter: (value) => value.trim(),
193
+ };
194
+ }
195
+ function createCodeArtifactOptInPrompt() {
196
+ return {
197
+ type: 'confirm',
198
+ name: 'includeCodeArtifact',
199
+ message: 'Configure CodeArtifact (npm registry)?',
200
+ default: true, // Default to yes for Padua projects
201
+ };
202
+ }
203
+ function createCodeArtifactDomainPrompt(defaultValue) {
204
+ return {
205
+ type: 'input',
206
+ name: 'codeartifactDomain',
207
+ message: 'CodeArtifact Domain:',
208
+ default: defaultValue || PADUA_DEFAULTS.codeartifact.domain,
209
+ validate: createDomainValidator(),
210
+ filter: (value) => value.trim().toLowerCase(),
211
+ when: (answers) => answers.includeCodeArtifact === true,
212
+ };
213
+ }
214
+ function createCodeArtifactOwnerPrompt(defaultValue) {
215
+ return {
216
+ type: 'input',
217
+ name: 'codeartifactOwner',
218
+ message: 'CodeArtifact Domain Owner (AWS Account ID):',
219
+ default: defaultValue || PADUA_DEFAULTS.codeartifact.domainOwner,
220
+ validate: createAccountIdValidator('Account ID'),
221
+ filter: (value) => value.trim(),
222
+ when: (answers) => answers.includeCodeArtifact === true,
223
+ };
224
+ }
225
+ function createCodeArtifactRepositoryPrompt(defaultValue) {
226
+ return {
227
+ type: 'input',
228
+ name: 'codeartifactRepository',
229
+ message: 'CodeArtifact Repository:',
230
+ default: defaultValue || PADUA_DEFAULTS.codeartifact.repository,
231
+ validate: createRepositoryValidator(),
232
+ filter: (value) => value.trim().toLowerCase(),
233
+ when: (answers) => answers.includeCodeArtifact === true,
234
+ };
235
+ }
236
+ function createEcrOptInPrompt() {
237
+ return {
238
+ type: 'confirm',
239
+ name: 'includeEcr',
240
+ message: 'Configure ECR (Docker registry)?',
241
+ default: true, // Default to yes for Padua projects
242
+ };
243
+ }
244
+ function createEcrAccountIdPrompt(defaultValue) {
245
+ return {
246
+ type: 'input',
247
+ name: 'ecrAccountId',
248
+ message: 'ECR Account ID:',
249
+ default: defaultValue || PADUA_DEFAULTS.ecr.accountId,
250
+ validate: createAccountIdValidator('Account ID'),
251
+ filter: (value) => value.trim(),
252
+ when: (answers) => answers.includeEcr === true,
253
+ };
254
+ }
255
+ function createEcrRegionPrompt(defaultValue) {
256
+ return {
257
+ type: 'input',
258
+ name: 'ecrRegion',
259
+ message: 'ECR Region:',
260
+ default: defaultValue || PADUA_DEFAULTS.ecr.region,
261
+ validate: createRegionValidator(),
262
+ filter: (value) => value.trim(),
263
+ when: (answers) => answers.includeEcr === true,
264
+ };
265
+ }
266
+ /**
267
+ * Extract account ID from the ssoAccount answer format "name (accountId)"
268
+ */
269
+ function extractAccountId(ssoAccount) {
270
+ const match = ssoAccount.match(/\((\d+)\)/);
271
+ return match ? match[1] : '';
272
+ }
273
+ /**
274
+ * Display configuration summary
275
+ */
276
+ function displaySummary(answers) {
277
+ console.log('');
278
+ console.log('─'.repeat(50));
279
+ console.log(chalk_1.default.cyan.bold('Configuration Summary'));
280
+ console.log('─'.repeat(50));
281
+ console.log('');
282
+ console.log(chalk_1.default.dim('AWS SSO Profile (~/.aws/config)'));
283
+ console.log(` Profile Name: ${chalk_1.default.white(answers.profileName)}`);
284
+ console.log(` SSO Start URL: ${chalk_1.default.white(PADUA_DEFAULTS.sso.startUrl)}`);
285
+ console.log(` SSO Account: ${chalk_1.default.white(answers.ssoAccount)}`);
286
+ console.log(` SSO Role: ${chalk_1.default.white(answers.ssoRoleName)}`);
287
+ console.log(` Default Region: ${chalk_1.default.white(answers.region)}`);
288
+ if (answers.includeCodeArtifact) {
289
+ console.log('');
290
+ console.log(chalk_1.default.dim('CodeArtifact (npm)'));
291
+ console.log(` Domain: ${chalk_1.default.white(answers.codeartifactDomain)}`);
292
+ console.log(` Owner: ${chalk_1.default.white(answers.codeartifactOwner)}`);
293
+ console.log(` Repository: ${chalk_1.default.white(answers.codeartifactRepository)}`);
294
+ }
295
+ if (answers.includeEcr) {
296
+ console.log('');
297
+ console.log(chalk_1.default.dim('ECR (Docker)'));
298
+ console.log(` Account ID: ${chalk_1.default.white(answers.ecrAccountId)}`);
299
+ console.log(` Region: ${chalk_1.default.white(answers.ecrRegion)}`);
300
+ }
301
+ console.log('');
302
+ console.log('─'.repeat(50));
303
+ console.log('');
304
+ }
305
+ function createConfirmationPrompt() {
306
+ return {
307
+ type: 'confirm',
308
+ name: 'confirm',
309
+ message: 'Write this configuration to padua.config.json?',
310
+ default: true,
311
+ };
312
+ }
313
+ /**
314
+ * Run the complete prompt flow
315
+ *
316
+ * @param existingConfig - Optional existing config to use as defaults
317
+ * @returns PromptResult - Both PaduaConfig and SSOConfig
318
+ * @throws Error if user cancels (Ctrl+C) or validation fails after retries
319
+ */
320
+ async function runPrompts(existingConfig) {
321
+ // Build question array with conditional sections
322
+ const questions = [
323
+ // SSO Profile configuration
324
+ createProfileNamePrompt(existingConfig?.defaultProfile),
325
+ createSSOAccountPrompt(), // Uses first account (development) as default
326
+ createSSORolePrompt(),
327
+ createRegionPrompt(existingConfig?.region),
328
+ // CodeArtifact section (optional)
329
+ createCodeArtifactOptInPrompt(),
330
+ createCodeArtifactDomainPrompt(existingConfig?.codeartifact?.domain),
331
+ createCodeArtifactOwnerPrompt(existingConfig?.codeartifact?.domainOwner),
332
+ createCodeArtifactRepositoryPrompt(existingConfig?.codeartifact?.repository),
333
+ // ECR section (optional)
334
+ createEcrOptInPrompt(),
335
+ createEcrAccountIdPrompt(existingConfig?.ecr?.accountId),
336
+ createEcrRegionPrompt(existingConfig?.ecr?.region),
337
+ ];
338
+ // Run prompt flow
339
+ const answers = await inquirer_1.default.prompt(questions);
340
+ // Display summary for confirmation
341
+ displaySummary(answers);
342
+ // Ask for confirmation
343
+ const confirmAnswer = await inquirer_1.default.prompt([createConfirmationPrompt()]);
344
+ if (!confirmAnswer.confirm) {
345
+ // User wants to restart
346
+ const restartAnswer = await inquirer_1.default.prompt([
347
+ {
348
+ type: 'confirm',
349
+ name: 'restart',
350
+ message: 'Start over from beginning?',
351
+ default: false,
352
+ },
353
+ ]);
354
+ if (restartAnswer.restart) {
355
+ // Recursively call runPrompts to start over
356
+ // Pass null as defaults to start fresh
357
+ return runPrompts(null);
358
+ }
359
+ else {
360
+ // User chose not to restart, exit
361
+ throw new Error('User cancelled initialization');
362
+ }
363
+ }
364
+ // Extract account ID from selection
365
+ const ssoAccountId = extractAccountId(answers.ssoAccount);
366
+ // Build SSO config
367
+ const ssoConfig = {
368
+ profileName: answers.profileName,
369
+ startUrl: PADUA_DEFAULTS.sso.startUrl,
370
+ ssoRegion: PADUA_DEFAULTS.sso.region,
371
+ accountId: ssoAccountId,
372
+ roleName: answers.ssoRoleName,
373
+ defaultRegion: answers.region,
374
+ };
375
+ // Convert answers to PaduaConfig
376
+ const paduaConfig = {
377
+ defaultProfile: answers.profileName,
378
+ region: answers.region,
379
+ };
380
+ if (answers.includeCodeArtifact && answers.codeartifactDomain && answers.codeartifactOwner && answers.codeartifactRepository) {
381
+ paduaConfig.codeartifact = {
382
+ domain: answers.codeartifactDomain,
383
+ domainOwner: answers.codeartifactOwner,
384
+ repository: answers.codeartifactRepository,
385
+ };
386
+ }
387
+ if (answers.includeEcr && answers.ecrAccountId && answers.ecrRegion) {
388
+ paduaConfig.ecr = {
389
+ accountId: answers.ecrAccountId,
390
+ region: answers.ecrRegion,
391
+ };
392
+ }
393
+ return { paduaConfig, ssoConfig };
394
+ }
395
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/commands/init/prompts.ts"],"names":[],"mappings":"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"}