@padua/cli 2.0.18 → 2.0.20
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/README.md +29 -2
- package/dist/commands/login/npmrc.d.ts.map +1 -1
- package/dist/commands/login/npmrc.js +2 -0
- package/dist/commands/login/npmrc.js.map +1 -1
- package/dist/commands/login/version-check.d.ts +4 -0
- package/dist/commands/login/version-check.d.ts.map +1 -1
- package/dist/commands/login/version-check.js +19 -1
- package/dist/commands/login/version-check.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -54,6 +54,7 @@ The `init` command will:
|
|
|
54
54
|
| | Status | Health check for all authentication services |
|
|
55
55
|
| | Doctor | Configuration validation and diagnostics with fuzzy profile matching |
|
|
56
56
|
| **Tunnel** | RDS | Secure tunnels to RDS/Aurora databases via SSM |
|
|
57
|
+
| **Exec** | ECS | Interactive shell in running ECS containers via SSM |
|
|
57
58
|
| **MCP** | Server | Built-in MCP server with 49 GitLab and Atlassian tools |
|
|
58
59
|
| | Daemon | Background process management via `padua login` |
|
|
59
60
|
| | Diagnostics | MCP health checks via `padua doctor` |
|
|
@@ -301,7 +302,7 @@ Returns:
|
|
|
301
302
|
"atlassian": "ready"
|
|
302
303
|
},
|
|
303
304
|
"uptime": 3600,
|
|
304
|
-
"version": "2.0.
|
|
305
|
+
"version": "2.0.20"
|
|
305
306
|
}
|
|
306
307
|
```
|
|
307
308
|
|
|
@@ -835,6 +836,33 @@ Starting tunnel...
|
|
|
835
836
|
Press Ctrl+C to close the tunnel
|
|
836
837
|
```
|
|
837
838
|
|
|
839
|
+
## Exec Command
|
|
840
|
+
|
|
841
|
+
Open an interactive shell in a running ECS container via SSM Execute Command.
|
|
842
|
+
|
|
843
|
+
### Basic Usage
|
|
844
|
+
|
|
845
|
+
```bash
|
|
846
|
+
padua exec # Interactive (prompts for cluster/service/task/container)
|
|
847
|
+
padua exec -c my-cluster -s my-service # Specify cluster and service
|
|
848
|
+
padua exec -c my-cluster -s my-service -t abc123 --container app # Fully non-interactive
|
|
849
|
+
```
|
|
850
|
+
|
|
851
|
+
### Options
|
|
852
|
+
|
|
853
|
+
| Flag | Description |
|
|
854
|
+
|------|-------------|
|
|
855
|
+
| `-p, --profile <name>` | AWS profile to use |
|
|
856
|
+
| `-c, --cluster <name>` | ECS cluster name |
|
|
857
|
+
| `-s, --service <name>` | ECS service name |
|
|
858
|
+
| `-t, --task <id>` | ECS task ID |
|
|
859
|
+
| `--container <name>` | Container name |
|
|
860
|
+
| `--command <cmd>` | Command to run (default: `/bin/bash`) |
|
|
861
|
+
| `-v, --verbose` | Show detailed output |
|
|
862
|
+
| `--no-color` | Disable colored output |
|
|
863
|
+
|
|
864
|
+
Auto-selects when only one option exists at each level (cluster, service, task, container).
|
|
865
|
+
|
|
838
866
|
## Planned Features
|
|
839
867
|
|
|
840
868
|
The following commands are planned for future releases:
|
|
@@ -842,7 +870,6 @@ The following commands are planned for future releases:
|
|
|
842
870
|
```bash
|
|
843
871
|
padua tunnel opensearch # OpenSearch/Kibana dashboard
|
|
844
872
|
padua tunnel ec2 <name> # SSM session to EC2 instance
|
|
845
|
-
padua ecs exec <cluster> <task> # Execute in ECS container
|
|
846
873
|
```
|
|
847
874
|
|
|
848
875
|
## Development
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npmrc.d.ts","sourceRoot":"","sources":["../../../src/commands/login/npmrc.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU7E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGtD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"npmrc.d.ts","sourceRoot":"","sources":["../../../src/commands/login/npmrc.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU7E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGtD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAgB5F;AAwBD;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAGhD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAG/C;AAmBD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAe5C"}
|
|
@@ -103,6 +103,8 @@ function isPaduaManagedLine(line) {
|
|
|
103
103
|
return true;
|
|
104
104
|
if (/^\/\/.*\.d\.codeartifact\..*\.amazonaws\.com\//.test(trimmed))
|
|
105
105
|
return true;
|
|
106
|
+
if (/^registry=https?:\/\/.*\.d\.codeartifact\..*\.amazonaws\.com\//.test(trimmed))
|
|
107
|
+
return true;
|
|
106
108
|
return false;
|
|
107
109
|
}
|
|
108
110
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npmrc.js","sourceRoot":"","sources":["../../../src/commands/login/npmrc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,8DAGC;AASD,sDAUC;AAQD,8CAGC;AAQD,4CAGC;AAMD,
|
|
1
|
+
{"version":3,"file":"npmrc.js","sourceRoot":"","sources":["../../../src/commands/login/npmrc.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,4 +6,8 @@
|
|
|
6
6
|
* Returns silently if up-to-date, check fails, or user declines.
|
|
7
7
|
*/
|
|
8
8
|
export declare function checkAndPromptUpdate(noColor: boolean): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Returns true if `latest` is strictly newer than `current` using semver ordering.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isNewerVersion(current: string, latest: string): boolean;
|
|
9
13
|
//# sourceMappingURL=version-check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../../src/commands/login/version-check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D1E"}
|
|
1
|
+
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../../src/commands/login/version-check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAWvE"}
|
|
@@ -40,6 +40,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
40
40
|
};
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
42
|
exports.checkAndPromptUpdate = checkAndPromptUpdate;
|
|
43
|
+
exports.isNewerVersion = isNewerVersion;
|
|
43
44
|
const fs = __importStar(require("fs"));
|
|
44
45
|
const path = __importStar(require("path"));
|
|
45
46
|
const readline = __importStar(require("node:readline"));
|
|
@@ -68,7 +69,7 @@ async function checkAndPromptUpdate(noColor) {
|
|
|
68
69
|
return;
|
|
69
70
|
}
|
|
70
71
|
const latestVersion = result.stdout?.toString().trim();
|
|
71
|
-
if (!latestVersion || currentVersion
|
|
72
|
+
if (!latestVersion || !isNewerVersion(currentVersion, latestVersion)) {
|
|
72
73
|
return;
|
|
73
74
|
}
|
|
74
75
|
const updateMsg = `Update available: ${currentVersion} → ${latestVersion}`;
|
|
@@ -106,6 +107,23 @@ async function checkAndPromptUpdate(noColor) {
|
|
|
106
107
|
}
|
|
107
108
|
process.exit(0);
|
|
108
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Returns true if `latest` is strictly newer than `current` using semver ordering.
|
|
112
|
+
*/
|
|
113
|
+
function isNewerVersion(current, latest) {
|
|
114
|
+
const parse = (v) => v.split('.').map(Number);
|
|
115
|
+
const c = parse(current);
|
|
116
|
+
const l = parse(latest);
|
|
117
|
+
for (let i = 0; i < Math.max(c.length, l.length); i++) {
|
|
118
|
+
const cv = c[i] ?? 0;
|
|
119
|
+
const lv = l[i] ?? 0;
|
|
120
|
+
if (lv > cv)
|
|
121
|
+
return true;
|
|
122
|
+
if (lv < cv)
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
109
127
|
function promptYesNo(question) {
|
|
110
128
|
const rl = readline.createInterface({
|
|
111
129
|
input: process.stdin,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../../src/commands/login/version-check.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,oDA4DC;
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../../src/commands/login/version-check.ts"],"names":[],"mappings":"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"}
|