@padua/cli 1.1.2 → 1.2.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,19 @@
1
+ import { SSOStatus, CodeArtifactStatus, ECRStatus } from './types';
2
+ import { CodeArtifactConfig, EcrConfig } from '../login/types';
3
+ /**
4
+ * Check SSO authentication status and get identity details
5
+ */
6
+ export declare function checkSSOStatus(profile: string): Promise<SSOStatus>;
7
+ /**
8
+ * Check CodeArtifact authentication status by parsing ~/.npmrc
9
+ */
10
+ export declare function checkCodeArtifactStatus(config: CodeArtifactConfig): Promise<CodeArtifactStatus>;
11
+ /**
12
+ * Check ECR authentication status by parsing ~/.docker/config.json
13
+ */
14
+ export declare function checkECRStatus(config: EcrConfig): Promise<ECRStatus>;
15
+ /**
16
+ * Format a relative time string (e.g., "in 11 hours" or "2 hours ago")
17
+ */
18
+ export declare function formatRelativeTime(date: Date): string;
19
+ //# sourceMappingURL=checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../src/commands/status/checks.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAe,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK/D;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAiFxE;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAuDrG;AA4BD;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAqE1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAmBrD"}
@@ -0,0 +1,281 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.checkSSOStatus = checkSSOStatus;
37
+ exports.checkCodeArtifactStatus = checkCodeArtifactStatus;
38
+ exports.checkECRStatus = checkECRStatus;
39
+ exports.formatRelativeTime = formatRelativeTime;
40
+ const child_process_1 = require("child_process");
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const os = __importStar(require("os"));
44
+ const utils_1 = require("../login/utils");
45
+ const CHECK_TIMEOUT_MS = 10000; // 10 seconds
46
+ /**
47
+ * Check SSO authentication status and get identity details
48
+ */
49
+ async function checkSSOStatus(profile) {
50
+ try {
51
+ (0, utils_1.validateProfileName)(profile);
52
+ }
53
+ catch (error) {
54
+ return {
55
+ authenticated: false,
56
+ error: error.message,
57
+ };
58
+ }
59
+ const result = (0, child_process_1.spawnSync)('aws', ['sts', 'get-caller-identity', '--profile', profile, '--output', 'json'], {
60
+ shell: false,
61
+ timeout: CHECK_TIMEOUT_MS,
62
+ maxBuffer: 1024 * 1024,
63
+ stdio: ['pipe', 'pipe', 'pipe'],
64
+ env: {
65
+ ...(0, utils_1.getSubprocessEnv)(),
66
+ AWS_PROFILE: profile,
67
+ },
68
+ });
69
+ if (result.error) {
70
+ if (result.error.message.includes('ENOENT')) {
71
+ return {
72
+ authenticated: false,
73
+ error: 'AWS CLI not installed',
74
+ };
75
+ }
76
+ return {
77
+ authenticated: false,
78
+ error: result.error.message,
79
+ };
80
+ }
81
+ if (result.status !== 0) {
82
+ const stderr = result.stderr?.toString() || '';
83
+ if (stderr.includes('ExpiredToken') || stderr.includes('Token has expired')) {
84
+ return {
85
+ authenticated: false,
86
+ error: 'Session expired',
87
+ };
88
+ }
89
+ if (stderr.includes('profile') && stderr.includes('not found')) {
90
+ return {
91
+ authenticated: false,
92
+ error: `Profile '${profile}' not found`,
93
+ };
94
+ }
95
+ if (stderr.includes('No SSO configuration')) {
96
+ return {
97
+ authenticated: false,
98
+ error: 'Profile not configured for SSO',
99
+ };
100
+ }
101
+ return {
102
+ authenticated: false,
103
+ error: 'Not authenticated',
104
+ };
105
+ }
106
+ // Parse the JSON output
107
+ try {
108
+ const output = result.stdout?.toString() || '';
109
+ const identity = JSON.parse(output);
110
+ return {
111
+ authenticated: true,
112
+ identity: {
113
+ userId: identity.UserId,
114
+ account: identity.Account,
115
+ userArn: identity.Arn,
116
+ },
117
+ };
118
+ }
119
+ catch {
120
+ return {
121
+ authenticated: false,
122
+ error: 'Failed to parse identity response',
123
+ };
124
+ }
125
+ }
126
+ /**
127
+ * Check CodeArtifact authentication status by parsing ~/.npmrc
128
+ */
129
+ async function checkCodeArtifactStatus(config) {
130
+ const npmrcPath = path.join(os.homedir(), '.npmrc');
131
+ if (!fs.existsSync(npmrcPath)) {
132
+ return {
133
+ authenticated: false,
134
+ error: 'No ~/.npmrc file found',
135
+ };
136
+ }
137
+ try {
138
+ const content = fs.readFileSync(npmrcPath, 'utf-8');
139
+ // Build expected registry pattern
140
+ // Format: //domain-owner.d.codeartifact.region.amazonaws.com/npm/repo/:_authToken=TOKEN
141
+ const registryPattern = new RegExp(`//([^/]+\\.d\\.codeartifact\\.[^/]+\\.amazonaws\\.com/npm/${config.repository}/).*:_authToken=(.+)`, 'm');
142
+ const match = content.match(registryPattern);
143
+ if (!match) {
144
+ return {
145
+ authenticated: false,
146
+ error: 'No CodeArtifact token found in ~/.npmrc',
147
+ };
148
+ }
149
+ const registry = `https://${match[1]}`;
150
+ const token = match[2].trim();
151
+ // Try to decode the JWT to get expiry
152
+ const expiresAt = parseJwtExpiry(token);
153
+ if (expiresAt && expiresAt < new Date()) {
154
+ return {
155
+ authenticated: false,
156
+ registry,
157
+ expiresAt,
158
+ error: 'Token expired',
159
+ };
160
+ }
161
+ return {
162
+ authenticated: true,
163
+ registry,
164
+ expiresAt: expiresAt || undefined,
165
+ };
166
+ }
167
+ catch (error) {
168
+ return {
169
+ authenticated: false,
170
+ error: `Failed to read ~/.npmrc: ${error.message}`,
171
+ };
172
+ }
173
+ }
174
+ /**
175
+ * Parse JWT token to extract expiry time
176
+ * CodeArtifact tokens are JWTs with an exp claim
177
+ */
178
+ function parseJwtExpiry(token) {
179
+ try {
180
+ // JWT format: header.payload.signature
181
+ const parts = token.split('.');
182
+ if (parts.length !== 3) {
183
+ return null;
184
+ }
185
+ // Decode the payload (base64url)
186
+ const payload = parts[1];
187
+ const decoded = Buffer.from(payload, 'base64url').toString('utf-8');
188
+ const data = JSON.parse(decoded);
189
+ if (data.exp) {
190
+ return new Date(data.exp * 1000);
191
+ }
192
+ return null;
193
+ }
194
+ catch {
195
+ return null;
196
+ }
197
+ }
198
+ /**
199
+ * Check ECR authentication status by parsing ~/.docker/config.json
200
+ */
201
+ async function checkECRStatus(config) {
202
+ const dockerConfigPath = path.join(os.homedir(), '.docker', 'config.json');
203
+ const registry = `${config.accountId}.dkr.ecr.${config.region}.amazonaws.com`;
204
+ if (!fs.existsSync(dockerConfigPath)) {
205
+ return {
206
+ authenticated: false,
207
+ registry,
208
+ error: 'No ~/.docker/config.json found',
209
+ };
210
+ }
211
+ try {
212
+ const content = fs.readFileSync(dockerConfigPath, 'utf-8');
213
+ const dockerConfig = JSON.parse(content);
214
+ // Check if using credential helper (common on macOS)
215
+ if (dockerConfig.credHelpers) {
216
+ const helperKey = Object.keys(dockerConfig.credHelpers).find(k => k.includes('ecr') && k.includes(config.region));
217
+ if (helperKey) {
218
+ // Credential helper is configured - assume authenticated
219
+ // (we can't easily check helper-stored credentials)
220
+ return {
221
+ authenticated: true,
222
+ registry,
223
+ };
224
+ }
225
+ }
226
+ // Check direct auth entries
227
+ if (!dockerConfig.auths) {
228
+ return {
229
+ authenticated: false,
230
+ registry,
231
+ error: 'No Docker auth entries found',
232
+ };
233
+ }
234
+ // Look for ECR registry entry
235
+ const ecrEntry = Object.keys(dockerConfig.auths).find(k => k.includes(config.accountId) && k.includes('ecr') && k.includes(config.region));
236
+ if (!ecrEntry || !dockerConfig.auths[ecrEntry]?.auth) {
237
+ return {
238
+ authenticated: false,
239
+ registry,
240
+ error: 'No ECR credentials found',
241
+ };
242
+ }
243
+ // ECR auth exists - tokens are valid for 12 hours but we can't check expiry
244
+ // from the stored credential alone
245
+ return {
246
+ authenticated: true,
247
+ registry,
248
+ };
249
+ }
250
+ catch (error) {
251
+ return {
252
+ authenticated: false,
253
+ registry,
254
+ error: `Failed to read Docker config: ${error.message}`,
255
+ };
256
+ }
257
+ }
258
+ /**
259
+ * Format a relative time string (e.g., "in 11 hours" or "2 hours ago")
260
+ */
261
+ function formatRelativeTime(date) {
262
+ const now = new Date();
263
+ const diffMs = date.getTime() - now.getTime();
264
+ const diffMins = Math.round(diffMs / 60000);
265
+ const diffHours = Math.round(diffMs / 3600000);
266
+ if (diffMs < 0) {
267
+ // In the past
268
+ if (diffMins > -60) {
269
+ return `${Math.abs(diffMins)} minute${Math.abs(diffMins) !== 1 ? 's' : ''} ago`;
270
+ }
271
+ return `${Math.abs(diffHours)} hour${Math.abs(diffHours) !== 1 ? 's' : ''} ago`;
272
+ }
273
+ else {
274
+ // In the future
275
+ if (diffMins < 60) {
276
+ return `in ${diffMins} minute${diffMins !== 1 ? 's' : ''}`;
277
+ }
278
+ return `in ${diffHours} hour${diffHours !== 1 ? 's' : ''}`;
279
+ }
280
+ }
281
+ //# sourceMappingURL=checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../../src/commands/status/checks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Command } from 'commander';
2
+ import { StatusOptions, StatusResult } from './types';
3
+ /**
4
+ * Status command definition
5
+ */
6
+ export declare const statusCommand: Command;
7
+ /**
8
+ * Main handler for status command
9
+ */
10
+ declare function handleStatus(options: StatusOptions): Promise<void>;
11
+ /**
12
+ * Display status results to console
13
+ */
14
+ declare function displayStatus(result: StatusResult, profile: string, options: StatusOptions): void;
15
+ export { handleStatus, displayStatus };
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGtD;;GAEG;AACH,eAAO,MAAM,aAAa,SAKH,CAAC;AAExB;;GAEG;AACH,iBAAe,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCjE;AAED;;GAEG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAiE1F;AAGD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,127 @@
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.statusCommand = void 0;
7
+ exports.handleStatus = handleStatus;
8
+ exports.displayStatus = displayStatus;
9
+ const commander_1 = require("commander");
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const config_1 = require("../login/config");
12
+ const types_1 = require("../login/types");
13
+ const checks_1 = require("./checks");
14
+ /**
15
+ * Status command definition
16
+ */
17
+ exports.statusCommand = new commander_1.Command('status')
18
+ .description('Check current authentication status for all services')
19
+ .option('-p, --profile <name>', 'AWS SSO profile to check')
20
+ .option('--no-color', 'Disable colored output')
21
+ .option('-q, --quiet', 'Only output if there are issues (exit code reflects status)')
22
+ .action(handleStatus);
23
+ /**
24
+ * Main handler for status command
25
+ */
26
+ async function handleStatus(options) {
27
+ // Load configuration
28
+ const config = await (0, config_1.loadConfig)();
29
+ if (!config) {
30
+ if (!options.quiet) {
31
+ console.error(options.noColor
32
+ ? 'Error: No padua.config.json found. Run: padua init'
33
+ : chalk_1.default.red('Error: No padua.config.json found. Run: padua init'));
34
+ }
35
+ process.exit(2);
36
+ }
37
+ const profile = (0, types_1.getEffectiveProfile)(options, config);
38
+ // Check all services
39
+ const result = {
40
+ sso: await (0, checks_1.checkSSOStatus)(profile),
41
+ codeartifact: (0, types_1.hasCodeArtifactConfig)(config)
42
+ ? await (0, checks_1.checkCodeArtifactStatus)(config.codeartifact)
43
+ : null,
44
+ ecr: (0, types_1.hasEcrConfig)(config)
45
+ ? await (0, checks_1.checkECRStatus)(config.ecr)
46
+ : null,
47
+ };
48
+ // Determine if all services are healthy
49
+ const allHealthy = result.sso.authenticated
50
+ && (result.codeartifact === null || result.codeartifact.authenticated)
51
+ && (result.ecr === null || result.ecr.authenticated);
52
+ // In quiet mode, only output if there are issues
53
+ if (options.quiet && allHealthy) {
54
+ process.exit(0);
55
+ }
56
+ // Display results
57
+ displayStatus(result, profile, options);
58
+ // Exit with appropriate code
59
+ process.exit(allHealthy ? 0 : 1);
60
+ }
61
+ /**
62
+ * Display status results to console
63
+ */
64
+ function displayStatus(result, profile, options) {
65
+ const { noColor } = options;
66
+ // Helper functions for colored output
67
+ const success = (text) => noColor ? text : chalk_1.default.green(text);
68
+ const error = (text) => noColor ? text : chalk_1.default.red(text);
69
+ const dim = (text) => noColor ? text : chalk_1.default.dim(text);
70
+ const bold = (text) => noColor ? text : chalk_1.default.bold(text);
71
+ const cyan = (text) => noColor ? text : chalk_1.default.cyan(text);
72
+ console.log('');
73
+ // SSO Status
74
+ console.log(bold(`AWS SSO ${dim(`(profile: ${profile})`)}`));
75
+ if (result.sso.authenticated && result.sso.identity) {
76
+ console.log(` Status: ${success('Authenticated')}`);
77
+ console.log(` Account: ${result.sso.identity.account}`);
78
+ console.log(` User: ${dim(result.sso.identity.userArn)}`);
79
+ }
80
+ else {
81
+ console.log(` Status: ${error('Not authenticated')}`);
82
+ if (result.sso.error) {
83
+ console.log(` Error: ${dim(result.sso.error)}`);
84
+ }
85
+ }
86
+ // CodeArtifact Status
87
+ if (result.codeartifact !== null) {
88
+ console.log('');
89
+ console.log(bold('CodeArtifact (npm)'));
90
+ if (result.codeartifact.authenticated) {
91
+ console.log(` Status: ${success('Authenticated')}`);
92
+ if (result.codeartifact.registry) {
93
+ console.log(` Registry: ${dim(result.codeartifact.registry)}`);
94
+ }
95
+ if (result.codeartifact.expiresAt) {
96
+ const relTime = (0, checks_1.formatRelativeTime)(result.codeartifact.expiresAt);
97
+ const expiryStr = result.codeartifact.expiresAt.toLocaleString();
98
+ console.log(` Expires: ${cyan(expiryStr)} ${dim(`(${relTime})`)}`);
99
+ }
100
+ }
101
+ else {
102
+ console.log(` Status: ${error('Not authenticated')}`);
103
+ if (result.codeartifact.error) {
104
+ console.log(` Error: ${dim(result.codeartifact.error)}`);
105
+ }
106
+ }
107
+ }
108
+ // ECR Status
109
+ if (result.ecr !== null) {
110
+ console.log('');
111
+ console.log(bold('ECR (Docker)'));
112
+ if (result.ecr.authenticated) {
113
+ console.log(` Status: ${success('Authenticated')}`);
114
+ if (result.ecr.registry) {
115
+ console.log(` Registry: ${dim(result.ecr.registry)}`);
116
+ }
117
+ }
118
+ else {
119
+ console.log(` Status: ${error('Not authenticated')}`);
120
+ if (result.ecr.error) {
121
+ console.log(` Error: ${dim(result.ecr.error)}`);
122
+ }
123
+ }
124
+ }
125
+ console.log('');
126
+ }
127
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Type definitions for the status command
3
+ */
4
+ /**
5
+ * SSO identity details from aws sts get-caller-identity
6
+ */
7
+ export interface SSOIdentity {
8
+ /** AWS account ID */
9
+ account: string;
10
+ /** User ARN (role assumed via SSO) */
11
+ userArn: string;
12
+ /** User ID */
13
+ userId: string;
14
+ }
15
+ /**
16
+ * Status of a single service
17
+ */
18
+ export interface ServiceStatus {
19
+ /** Whether the service is currently authenticated */
20
+ authenticated: boolean;
21
+ /** Error message if check failed */
22
+ error?: string;
23
+ }
24
+ /**
25
+ * SSO service status with identity details
26
+ */
27
+ export interface SSOStatus extends ServiceStatus {
28
+ /** Identity details if authenticated */
29
+ identity?: SSOIdentity;
30
+ }
31
+ /**
32
+ * CodeArtifact service status with token details
33
+ */
34
+ export interface CodeArtifactStatus extends ServiceStatus {
35
+ /** Registry URL if configured */
36
+ registry?: string;
37
+ /** Token expiration time if available */
38
+ expiresAt?: Date;
39
+ }
40
+ /**
41
+ * ECR service status with registry details
42
+ */
43
+ export interface ECRStatus extends ServiceStatus {
44
+ /** Registry URL if configured */
45
+ registry?: string;
46
+ }
47
+ /**
48
+ * Complete status result for all services
49
+ */
50
+ export interface StatusResult {
51
+ /** SSO authentication status */
52
+ sso: SSOStatus;
53
+ /** CodeArtifact authentication status (null if not configured) */
54
+ codeartifact: CodeArtifactStatus | null;
55
+ /** ECR authentication status (null if not configured) */
56
+ ecr: ECRStatus | null;
57
+ }
58
+ /**
59
+ * Command-line options for `padua status`
60
+ */
61
+ export interface StatusOptions {
62
+ /** AWS SSO profile to check */
63
+ profile?: string;
64
+ /** Disable colored output */
65
+ noColor?: boolean;
66
+ /** Only output if there are issues */
67
+ quiet?: boolean;
68
+ }
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/status/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,aAAa,EAAE,OAAO,CAAC;IACvB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,GAAG,EAAE,SAAS,CAAC;IACf,kEAAkE;IAClE,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,yDAAyD;IACzD,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for the status command
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/status/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
package/dist/index.js CHANGED
@@ -2,8 +2,9 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const commander_1 = require("commander");
5
- const login_1 = require("./commands/login");
6
5
  const init_1 = require("./commands/init");
6
+ const login_1 = require("./commands/login");
7
+ const status_1 = require("./commands/status");
7
8
  const program = new commander_1.Command();
8
9
  program
9
10
  .name('padua')
@@ -12,5 +13,6 @@ program
12
13
  // Register commands
13
14
  program.addCommand(init_1.initCommand);
14
15
  program.addCommand(login_1.loginCommand);
16
+ program.addCommand(status_1.statusCommand);
15
17
  program.parse();
16
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,4CAAgD;AAChD,0CAA8C;AAE9C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,4CAAgD;AAChD,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAElC,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@padua/cli",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "Unified AWS infrastructure management CLI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",