@padua/cli 1.0.0 → 1.1.1
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/commands/init/aws-config.d.ts +25 -0
- package/dist/commands/init/aws-config.d.ts.map +1 -0
- package/dist/commands/init/aws-config.js +91 -0
- package/dist/commands/init/aws-config.js.map +1 -0
- package/dist/commands/init/aws-profile.d.ts +18 -0
- package/dist/commands/init/aws-profile.d.ts.map +1 -0
- package/dist/commands/init/aws-profile.js +127 -0
- package/dist/commands/init/aws-profile.js.map +1 -0
- package/dist/commands/init/index.d.ts +37 -0
- package/dist/commands/init/index.d.ts.map +1 -0
- package/dist/commands/init/index.js +254 -0
- package/dist/commands/init/index.js.map +1 -0
- package/dist/commands/init/init.d.ts +24 -0
- package/dist/commands/init/init.d.ts.map +1 -0
- package/dist/commands/init/init.js +123 -0
- package/dist/commands/init/init.js.map +1 -0
- package/dist/commands/init/prompts.d.ts +127 -0
- package/dist/commands/init/prompts.d.ts.map +1 -0
- package/dist/commands/init/prompts.js +395 -0
- package/dist/commands/init/prompts.js.map +1 -0
- package/dist/commands/login/index.d.ts.map +1 -1
- package/dist/commands/login/index.js.map +1 -1
- package/dist/commands/login/types.js +2 -2
- package/dist/commands/login/types.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
|
@@ -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: 'paduafg',
|
|
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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"}
|