lobstercage-cli 0.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.
- package/README.md +64 -0
- package/dist/commands/auth.d.ts +39 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +393 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/billing.d.ts +11 -0
- package/dist/commands/billing.d.ts.map +1 -0
- package/dist/commands/billing.js +181 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/cages.d.ts +87 -0
- package/dist/commands/cages.d.ts.map +1 -0
- package/dist/commands/cages.js +603 -0
- package/dist/commands/cages.js.map +1 -0
- package/dist/commands/env.d.ts +42 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +287 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/exec.d.ts +12 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +127 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/tunnel.d.ts +29 -0
- package/dist/commands/tunnel.d.ts.map +1 -0
- package/dist/commands/tunnel.js +232 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +138 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +96 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +348 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +63 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +193 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/docker.d.ts +52 -0
- package/dist/lib/docker.d.ts.map +1 -0
- package/dist/lib/docker.js +210 -0
- package/dist/lib/docker.js.map +1 -0
- package/dist/lib/error-handler.d.ts +30 -0
- package/dist/lib/error-handler.d.ts.map +1 -0
- package/dist/lib/error-handler.js +113 -0
- package/dist/lib/error-handler.js.map +1 -0
- package/dist/lib/output.d.ts +71 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +237 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/utils.d.ts +17 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +71 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/types/index.d.ts +158 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Environment Variable Commands
|
|
4
|
+
*
|
|
5
|
+
* env list, env set, env get, env delete, env scan
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.envListHandler = envListHandler;
|
|
45
|
+
exports.envSetHandler = envSetHandler;
|
|
46
|
+
exports.envGetHandler = envGetHandler;
|
|
47
|
+
exports.envDeleteHandler = envDeleteHandler;
|
|
48
|
+
exports.envScanHandler = envScanHandler;
|
|
49
|
+
exports.createEnvCommands = createEnvCommands;
|
|
50
|
+
const ora_1 = __importDefault(require("ora"));
|
|
51
|
+
const api = __importStar(require("../lib/api"));
|
|
52
|
+
const output = __importStar(require("../lib/output"));
|
|
53
|
+
const utils_1 = require("../lib/utils");
|
|
54
|
+
const error_handler_1 = require("../lib/error-handler");
|
|
55
|
+
/**
|
|
56
|
+
* Validates environment variable name format
|
|
57
|
+
*/
|
|
58
|
+
function isValidEnvName(name) {
|
|
59
|
+
if (!name) {
|
|
60
|
+
return { valid: false, message: 'Variable name is required' };
|
|
61
|
+
}
|
|
62
|
+
if (!/^[A-Z_][A-Z0-9_]*$/.test(name)) {
|
|
63
|
+
return { valid: false, message: 'Variable name must be uppercase with underscores (e.g., MY_VAR)' };
|
|
64
|
+
}
|
|
65
|
+
if (name.length > 256) {
|
|
66
|
+
return { valid: false, message: 'Variable name must be at most 256 characters' };
|
|
67
|
+
}
|
|
68
|
+
return { valid: true };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Env list command handler
|
|
72
|
+
*/
|
|
73
|
+
async function envListHandler(nameOrId, options) {
|
|
74
|
+
const spinner = (0, ora_1.default)('Fetching environment variables...').start();
|
|
75
|
+
try {
|
|
76
|
+
(0, utils_1.requireAuth)();
|
|
77
|
+
const cageId = await (0, utils_1.resolveCageId)(nameOrId);
|
|
78
|
+
const vars = await api.listEnvVars(cageId);
|
|
79
|
+
spinner.stop();
|
|
80
|
+
if (options.json) {
|
|
81
|
+
output.json(vars);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
console.log();
|
|
85
|
+
console.log(output.formatEnvVars(vars));
|
|
86
|
+
console.log();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
(0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'fetching environment variables' });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Env set command handler
|
|
95
|
+
*/
|
|
96
|
+
async function envSetHandler(nameOrId, keyValues, options) {
|
|
97
|
+
if (keyValues.length === 0) {
|
|
98
|
+
output.error('No variables specified. Use KEY=VALUE format.');
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
// Parse KEY=VALUE pairs
|
|
102
|
+
const variables = {};
|
|
103
|
+
for (const kv of keyValues) {
|
|
104
|
+
const eqIndex = kv.indexOf('=');
|
|
105
|
+
if (eqIndex === -1) {
|
|
106
|
+
output.error(`Invalid format: "${kv}". Use KEY=VALUE`);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
const key = kv.slice(0, eqIndex);
|
|
110
|
+
const value = kv.slice(eqIndex + 1);
|
|
111
|
+
const validation = isValidEnvName(key);
|
|
112
|
+
if (!validation.valid) {
|
|
113
|
+
output.error(`Invalid variable name "${key}": ${validation.message}`);
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
variables[key] = value;
|
|
117
|
+
}
|
|
118
|
+
const spinner = (0, ora_1.default)('Setting environment variables...').start();
|
|
119
|
+
try {
|
|
120
|
+
(0, utils_1.requireAuth)();
|
|
121
|
+
const cageId = await (0, utils_1.resolveCageId)(nameOrId);
|
|
122
|
+
const result = await api.setEnvVars(cageId, {
|
|
123
|
+
variables,
|
|
124
|
+
scan: !options.noScan,
|
|
125
|
+
});
|
|
126
|
+
spinner.stop();
|
|
127
|
+
if (options.json) {
|
|
128
|
+
output.json(result);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
output.success(`Set ${Object.keys(variables).length} environment variable(s)`);
|
|
132
|
+
// Show security warnings if any
|
|
133
|
+
if (result.securityWarnings && result.securityWarnings.length > 0) {
|
|
134
|
+
console.log();
|
|
135
|
+
output.warning('Security warnings:');
|
|
136
|
+
console.log();
|
|
137
|
+
console.log(output.formatSecurityWarnings(result.securityWarnings));
|
|
138
|
+
console.log();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
(0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'setting environment variables' });
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Env get command handler
|
|
148
|
+
*/
|
|
149
|
+
async function envGetHandler(nameOrId, varName, options) {
|
|
150
|
+
const validation = isValidEnvName(varName);
|
|
151
|
+
if (!validation.valid) {
|
|
152
|
+
output.error(`Invalid variable name: ${validation.message}`);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
const spinner = (0, ora_1.default)('Fetching environment variable...').start();
|
|
156
|
+
try {
|
|
157
|
+
(0, utils_1.requireAuth)();
|
|
158
|
+
const cageId = await (0, utils_1.resolveCageId)(nameOrId);
|
|
159
|
+
const result = await api.getEnvVar(cageId, varName);
|
|
160
|
+
spinner.stop();
|
|
161
|
+
if (options.json) {
|
|
162
|
+
output.json(result);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// Output just the value for easy scripting
|
|
166
|
+
console.log(result.value);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
(0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'fetching environment variable' });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Env delete command handler
|
|
175
|
+
*/
|
|
176
|
+
async function envDeleteHandler(nameOrId, varNames, options) {
|
|
177
|
+
if (varNames.length === 0) {
|
|
178
|
+
output.error('No variables specified');
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
// Validate all names first
|
|
182
|
+
for (const varName of varNames) {
|
|
183
|
+
const validation = isValidEnvName(varName);
|
|
184
|
+
if (!validation.valid) {
|
|
185
|
+
output.error(`Invalid variable name "${varName}": ${validation.message}`);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const spinner = (0, ora_1.default)('Deleting environment variables...').start();
|
|
190
|
+
try {
|
|
191
|
+
(0, utils_1.requireAuth)();
|
|
192
|
+
const cageId = await (0, utils_1.resolveCageId)(nameOrId);
|
|
193
|
+
// Delete each variable
|
|
194
|
+
const results = [];
|
|
195
|
+
for (const varName of varNames) {
|
|
196
|
+
try {
|
|
197
|
+
await api.deleteEnvVar(cageId, varName);
|
|
198
|
+
results.push({ name: varName, success: true });
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
if (err instanceof api.ApiClientError) {
|
|
202
|
+
results.push({ name: varName, success: false, error: err.message });
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
throw err;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
spinner.stop();
|
|
210
|
+
if (options.json) {
|
|
211
|
+
output.json(results);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
const successes = results.filter(r => r.success);
|
|
215
|
+
const failures = results.filter(r => !r.success);
|
|
216
|
+
if (successes.length > 0) {
|
|
217
|
+
output.success(`Deleted ${successes.length} variable(s)`);
|
|
218
|
+
}
|
|
219
|
+
for (const failure of failures) {
|
|
220
|
+
output.error(`Failed to delete ${failure.name}: ${failure.error}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
(0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'deleting environment variables' });
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Env scan command handler
|
|
230
|
+
*/
|
|
231
|
+
async function envScanHandler(nameOrId, options) {
|
|
232
|
+
const spinner = (0, ora_1.default)('Scanning environment variables for security issues...').start();
|
|
233
|
+
try {
|
|
234
|
+
(0, utils_1.requireAuth)();
|
|
235
|
+
const cageId = await (0, utils_1.resolveCageId)(nameOrId);
|
|
236
|
+
const result = await api.scanEnvVars(cageId);
|
|
237
|
+
spinner.stop();
|
|
238
|
+
if (options.json) {
|
|
239
|
+
output.json(result);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
console.log();
|
|
243
|
+
console.log(output.formatSecurityWarnings(result.warnings));
|
|
244
|
+
console.log();
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
(0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'scanning environment variables' });
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Create env commands
|
|
253
|
+
*/
|
|
254
|
+
function createEnvCommands(program) {
|
|
255
|
+
const env = program
|
|
256
|
+
.command('env')
|
|
257
|
+
.description('Manage environment variables');
|
|
258
|
+
env
|
|
259
|
+
.command('list <cage>')
|
|
260
|
+
.alias('ls')
|
|
261
|
+
.description('List environment variables')
|
|
262
|
+
.option('--json', 'Output as JSON')
|
|
263
|
+
.action(envListHandler);
|
|
264
|
+
env
|
|
265
|
+
.command('set <cage> <keyValues...>')
|
|
266
|
+
.description('Set environment variables (KEY=VALUE format)')
|
|
267
|
+
.option('--no-scan', 'Skip security scan')
|
|
268
|
+
.option('--json', 'Output as JSON')
|
|
269
|
+
.action(envSetHandler);
|
|
270
|
+
env
|
|
271
|
+
.command('get <cage> <name>')
|
|
272
|
+
.description('Get environment variable value')
|
|
273
|
+
.option('--json', 'Output as JSON')
|
|
274
|
+
.action(envGetHandler);
|
|
275
|
+
env
|
|
276
|
+
.command('delete <cage> <names...>')
|
|
277
|
+
.alias('rm')
|
|
278
|
+
.description('Delete environment variables')
|
|
279
|
+
.option('--json', 'Output as JSON')
|
|
280
|
+
.action(envDeleteHandler);
|
|
281
|
+
env
|
|
282
|
+
.command('scan <cage>')
|
|
283
|
+
.description('Scan environment variables for security issues')
|
|
284
|
+
.option('--json', 'Output as JSON')
|
|
285
|
+
.action(envScanHandler);
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exec Command
|
|
3
|
+
*
|
|
4
|
+
* Execute commands in a cage or open an interactive shell.
|
|
5
|
+
* Uses the API when --api-url is configured, otherwise local Docker.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare function execHandler(name: string, args: string[], options: {
|
|
9
|
+
local?: boolean;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare function createExecCommand(program: Command): void;
|
|
12
|
+
//# sourceMappingURL=exec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3G;AAqED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CASxD"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Exec Command
|
|
4
|
+
*
|
|
5
|
+
* Execute commands in a cage or open an interactive shell.
|
|
6
|
+
* Uses the API when --api-url is configured, otherwise local Docker.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.execHandler = execHandler;
|
|
43
|
+
exports.createExecCommand = createExecCommand;
|
|
44
|
+
const child_process_1 = require("child_process");
|
|
45
|
+
const api = __importStar(require("../lib/api"));
|
|
46
|
+
const docker = __importStar(require("../lib/docker"));
|
|
47
|
+
const output = __importStar(require("../lib/output"));
|
|
48
|
+
const utils_1 = require("../lib/utils");
|
|
49
|
+
const error_handler_1 = require("../lib/error-handler");
|
|
50
|
+
async function execHandler(name, args, options) {
|
|
51
|
+
if (options.local) {
|
|
52
|
+
return execHandlerLocal(name, args);
|
|
53
|
+
}
|
|
54
|
+
return execHandlerApi(name, args);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Exec via API endpoint
|
|
58
|
+
*/
|
|
59
|
+
async function execHandlerApi(name, args) {
|
|
60
|
+
if (args.length === 0) {
|
|
61
|
+
output.error('Interactive shell is not supported in API mode. Provide a command to execute.');
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const cageId = await (0, utils_1.resolveCageId)(name);
|
|
66
|
+
const result = await api.execInCage(cageId, args);
|
|
67
|
+
if (result.stdout) {
|
|
68
|
+
process.stdout.write(result.stdout);
|
|
69
|
+
}
|
|
70
|
+
if (result.stderr) {
|
|
71
|
+
process.stderr.write(result.stderr);
|
|
72
|
+
}
|
|
73
|
+
process.exit(result.exitCode ?? 0);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
(0, error_handler_1.handleError)(err, { context: 'executing command in cage' });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Exec via local Docker
|
|
81
|
+
*/
|
|
82
|
+
async function execHandlerLocal(name, args) {
|
|
83
|
+
// Verify cage exists and is running
|
|
84
|
+
try {
|
|
85
|
+
const cage = await docker.getCage(name);
|
|
86
|
+
if (cage.status !== 'running') {
|
|
87
|
+
output.error(`Cage "${name}" is not running (status: ${cage.status})`);
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
(0, error_handler_1.handleError)(err, { context: 'checking cage status' });
|
|
93
|
+
}
|
|
94
|
+
const containerName = docker.getContainerName(name);
|
|
95
|
+
const isInteractive = args.length === 0;
|
|
96
|
+
const spawnArgs = ['exec'];
|
|
97
|
+
if (isInteractive) {
|
|
98
|
+
spawnArgs.push('-it', containerName, '/bin/bash');
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
if (process.stdin.isTTY) {
|
|
102
|
+
spawnArgs.push('-it');
|
|
103
|
+
}
|
|
104
|
+
spawnArgs.push(containerName, ...args);
|
|
105
|
+
}
|
|
106
|
+
const child = (0, child_process_1.spawn)('docker', spawnArgs, {
|
|
107
|
+
stdio: 'inherit',
|
|
108
|
+
});
|
|
109
|
+
child.on('exit', (code) => {
|
|
110
|
+
process.exit(code ?? 0);
|
|
111
|
+
});
|
|
112
|
+
child.on('error', (err) => {
|
|
113
|
+
output.error(`Failed to exec: ${err.message}`);
|
|
114
|
+
process.exit(1);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function createExecCommand(program) {
|
|
118
|
+
program
|
|
119
|
+
.command('exec <name> [command...]')
|
|
120
|
+
.description('Execute a command in a cage (interactive shell if no command given)')
|
|
121
|
+
.option('-l, --local', 'Use local Docker instead of remote API')
|
|
122
|
+
.passThroughOptions()
|
|
123
|
+
.action(async (name, command, options) => {
|
|
124
|
+
await execHandler(name, command, options);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUH,kCAKC;AAqED,8CASC;AA1FD,iDAAsC;AACtC,gDAAkC;AAClC,sDAAwC;AACxC,sDAAwC;AACxC,wCAA6C;AAC7C,wDAAmD;AAE5C,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,IAAc,EAAE,OAA4B;IAC1F,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAc;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAElD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,2BAAW,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAc;IAC1D,oCAAoC;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,6BAA6B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,2BAAW,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAExC,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,aAAa,EAAE,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,QAAQ,EAAE,SAAS,EAAE;QACvC,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACxB,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAgB;IAChD,OAAO;SACJ,OAAO,CAAC,0BAA0B,CAAC;SACnC,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,aAAa,EAAE,wCAAwC,CAAC;SAC/D,kBAAkB,EAAE;SACpB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAiB,EAAE,OAA4B,EAAE,EAAE;QAC9E,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tunnel Commands
|
|
3
|
+
*
|
|
4
|
+
* tunnel, ssh
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
/**
|
|
8
|
+
* Tunnel command handler
|
|
9
|
+
*/
|
|
10
|
+
export declare function tunnelHandler(nameOrId: string, options: {
|
|
11
|
+
port?: string;
|
|
12
|
+
localPort?: string;
|
|
13
|
+
ssh?: boolean;
|
|
14
|
+
json?: boolean;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* SSH command handler
|
|
18
|
+
*
|
|
19
|
+
* This is a convenience wrapper around tunnel --ssh
|
|
20
|
+
*/
|
|
21
|
+
export declare function sshHandler(nameOrId: string, options: {
|
|
22
|
+
localPort?: string;
|
|
23
|
+
json?: boolean;
|
|
24
|
+
}): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Create tunnel commands
|
|
27
|
+
*/
|
|
28
|
+
export declare function createTunnelCommands(program: Command): void;
|
|
29
|
+
//# sourceMappingURL=tunnel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmGpC;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAkDf;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9C,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgB3D"}
|