@crawlee-cloud/cli 0.2.1 ā 0.8.5
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 +51 -7
- package/dist/bin.js +0 -0
- package/dist/commands/call.d.ts.map +1 -1
- package/dist/commands/call.js +24 -8
- package/dist/commands/call.js.map +1 -1
- package/dist/commands/info.d.ts +14 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +98 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/list.d.ts +8 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +141 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +8 -6
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/profile.d.ts +17 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +70 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/push.d.ts +8 -0
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +272 -46
- package/dist/commands/push.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/config.d.ts +59 -6
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +134 -21
- package/dist/utils/config.js.map +1 -1
- package/package.json +5 -3
- package/dist/commands/create.d.ts +0 -9
- package/dist/commands/create.d.ts.map +0 -1
- package/dist/commands/create.js +0 -70
- package/dist/commands/create.js.map +0 -1
package/dist/commands/push.d.ts
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
* `crawlee-cloud push` command
|
|
3
3
|
*
|
|
4
4
|
* Builds and pushes Actor to the platform.
|
|
5
|
+
*
|
|
6
|
+
* Supports multiple build strategies:
|
|
7
|
+
* --local (default): build Docker image on the local machine
|
|
8
|
+
* --remote <host>: build on a remote runner via SSH
|
|
9
|
+
* --ghcr <repo>: build locally, push to GHCR, runners pull
|
|
10
|
+
*
|
|
11
|
+
* On push, the actor is created or updated (upsert) so modifiedAt
|
|
12
|
+
* always reflects the latest deployment.
|
|
5
13
|
*/
|
|
6
14
|
import { Command } from 'commander';
|
|
7
15
|
export declare const pushCommand: Command;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,eAAO,MAAM,WAAW,SA8NpB,CAAC"}
|
package/dist/commands/push.js
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
* `crawlee-cloud push` command
|
|
3
3
|
*
|
|
4
4
|
* Builds and pushes Actor to the platform.
|
|
5
|
+
*
|
|
6
|
+
* Supports multiple build strategies:
|
|
7
|
+
* --local (default): build Docker image on the local machine
|
|
8
|
+
* --remote <host>: build on a remote runner via SSH
|
|
9
|
+
* --ghcr <repo>: build locally, push to GHCR, runners pull
|
|
10
|
+
*
|
|
11
|
+
* On push, the actor is created or updated (upsert) so modifiedAt
|
|
12
|
+
* always reflects the latest deployment.
|
|
5
13
|
*/
|
|
6
14
|
import { Command } from 'commander';
|
|
7
15
|
import chalk from 'chalk';
|
|
@@ -27,17 +35,23 @@ export const pushCommand = new Command('push')
|
|
|
27
35
|
.description('Push Actor to Crawlee Cloud')
|
|
28
36
|
.option('-t, --tag <tag>', 'Docker image tag', 'latest')
|
|
29
37
|
.option('--no-build', 'Skip Docker build')
|
|
38
|
+
.option('--platform <platform>', 'Docker build platform (e.g. linux/amd64)', '')
|
|
39
|
+
.option('--remote <user@host>', 'Build on a remote runner via SSH')
|
|
40
|
+
.option('--ssh-key <path>', 'SSH key for remote build')
|
|
41
|
+
.option('--ghcr <repo>', 'Push to GitHub Container Registry (e.g. org/repo)')
|
|
42
|
+
.option('--ghcr-user <user>', 'GHCR username (default: github)')
|
|
43
|
+
.option('--ghcr-token <token>', 'GHCR token (or set GHCR_TOKEN env var)')
|
|
44
|
+
.option('-e, --env <KEY=VALUE>', 'Set actor default env var (repeatable). Empty values are dropped.', collectEnv, {})
|
|
45
|
+
.option('--env-file <path>', 'Load actor default env vars from a file (KEY=VALUE per line, # comments allowed)')
|
|
30
46
|
.action(async (options) => {
|
|
31
47
|
console.log(chalk.bold('\nš¤ Pushing Actor to Crawlee Cloud\n'));
|
|
32
48
|
const cwd = process.cwd();
|
|
33
49
|
const config = await getConfig();
|
|
34
50
|
// Check if .actor directory exists
|
|
35
51
|
const actorDir = path.join(cwd, '.actor');
|
|
36
|
-
if (!await fs.pathExists(actorDir)) {
|
|
52
|
+
if (!(await fs.pathExists(actorDir))) {
|
|
37
53
|
console.log(chalk.red('ā No .actor directory found.'));
|
|
38
|
-
console.log(chalk.dim('\
|
|
39
|
-
console.log(chalk.cyan(' npx apify-cli create my-actor'));
|
|
40
|
-
console.log(chalk.dim('\nOr create .actor/actor.json manually with:'));
|
|
54
|
+
console.log(chalk.dim('\nCreate .actor/actor.json with:'));
|
|
41
55
|
console.log(chalk.dim(` {
|
|
42
56
|
"actorSpecification": 1,
|
|
43
57
|
"name": "my-actor",
|
|
@@ -47,14 +61,8 @@ export const pushCommand = new Command('push')
|
|
|
47
61
|
}
|
|
48
62
|
// Check if actor.json exists
|
|
49
63
|
const actorJsonPath = path.join(actorDir, 'actor.json');
|
|
50
|
-
if (!await fs.pathExists(actorJsonPath)) {
|
|
64
|
+
if (!(await fs.pathExists(actorJsonPath))) {
|
|
51
65
|
console.log(chalk.red('ā No .actor/actor.json found.'));
|
|
52
|
-
console.log(chalk.dim('\nCreate .actor/actor.json with at minimum:'));
|
|
53
|
-
console.log(chalk.dim(` {
|
|
54
|
-
"actorSpecification": 1,
|
|
55
|
-
"name": "my-actor",
|
|
56
|
-
"title": "My Actor"
|
|
57
|
-
}`));
|
|
58
66
|
process.exit(1);
|
|
59
67
|
}
|
|
60
68
|
// Parse and validate actor.json
|
|
@@ -67,11 +75,10 @@ export const pushCommand = new Command('push')
|
|
|
67
75
|
console.error(err);
|
|
68
76
|
process.exit(1);
|
|
69
77
|
}
|
|
70
|
-
// Validate required fields
|
|
71
78
|
const validationErrors = validateActorJson(actorJson);
|
|
72
79
|
if (validationErrors.length > 0) {
|
|
73
80
|
console.log(chalk.red('ā Invalid .actor/actor.json:'));
|
|
74
|
-
validationErrors.forEach(err => console.log(chalk.red(` ⢠${err}`)));
|
|
81
|
+
validationErrors.forEach((err) => console.log(chalk.red(` ⢠${err}`)));
|
|
75
82
|
process.exit(1);
|
|
76
83
|
}
|
|
77
84
|
const actorName = actorJson.name;
|
|
@@ -82,30 +89,32 @@ export const pushCommand = new Command('push')
|
|
|
82
89
|
if (actorJson.version)
|
|
83
90
|
console.log(chalk.dim(`Version: ${actorJson.version}`));
|
|
84
91
|
console.log(chalk.dim(`Image: ${imageName}`));
|
|
92
|
+
// Determine build mode
|
|
93
|
+
const buildMode = options.ghcr ? 'ghcr' : options.remote ? 'remote' : 'local';
|
|
94
|
+
console.log(chalk.dim(`Build: ${buildMode}`));
|
|
85
95
|
console.log();
|
|
86
96
|
// Check Dockerfile exists
|
|
87
97
|
const dockerfilePath = actorJson.dockerfile
|
|
88
98
|
? path.resolve(cwd, '.actor', actorJson.dockerfile)
|
|
89
99
|
: path.join(cwd, 'Dockerfile');
|
|
90
|
-
if (!await fs.pathExists(dockerfilePath)) {
|
|
100
|
+
if (!(await fs.pathExists(dockerfilePath))) {
|
|
91
101
|
console.log(chalk.red(`ā Dockerfile not found at: ${dockerfilePath}`));
|
|
92
102
|
process.exit(1);
|
|
93
103
|
}
|
|
94
|
-
// Build
|
|
104
|
+
// ---- Build image ----
|
|
95
105
|
if (options.build !== false) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
await runCommand('docker', ['build', '-t', imageName, '.'], cwd);
|
|
99
|
-
buildSpinner.succeed('Docker image built');
|
|
106
|
+
if (buildMode === 'remote') {
|
|
107
|
+
await buildRemote(cwd, imageName, options);
|
|
100
108
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
109
|
+
else if (buildMode === 'ghcr') {
|
|
110
|
+
await buildAndPushGhcr(cwd, imageName, actorName, options);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
await buildLocal(cwd, imageName, options);
|
|
105
114
|
}
|
|
106
115
|
}
|
|
107
|
-
// Push to registry (if configured)
|
|
108
|
-
if (config.registryUrl) {
|
|
116
|
+
// ---- Push to registry (if configured in config, separate from GHCR) ----
|
|
117
|
+
if (config.registryUrl && buildMode === 'local') {
|
|
109
118
|
const pushSpinner = ora('Pushing to registry...').start();
|
|
110
119
|
try {
|
|
111
120
|
const remoteImage = `${config.registryUrl}/actor-${actorName}:${options.tag}`;
|
|
@@ -119,32 +128,96 @@ export const pushCommand = new Command('push')
|
|
|
119
128
|
process.exit(1);
|
|
120
129
|
}
|
|
121
130
|
}
|
|
122
|
-
// Register
|
|
131
|
+
// ---- Register/update actor (upsert) ----
|
|
123
132
|
const registerSpinner = ora('Registering with platform...').start();
|
|
124
133
|
try {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
headers: {
|
|
128
|
-
|
|
129
|
-
|
|
134
|
+
// Check if actor exists
|
|
135
|
+
const listRes = await fetch(`${config.apiBaseUrl}/v2/acts?limit=200`, {
|
|
136
|
+
headers: { Authorization: `Bearer ${config.token}` },
|
|
137
|
+
});
|
|
138
|
+
let existingId = null;
|
|
139
|
+
if (listRes.ok) {
|
|
140
|
+
const listData = (await listRes.json());
|
|
141
|
+
const existing = listData.data.items.find((a) => a.name === actorName);
|
|
142
|
+
if (existing)
|
|
143
|
+
existingId = existing.id;
|
|
144
|
+
}
|
|
145
|
+
// Resolve actor default env vars. Precedence (later wins):
|
|
146
|
+
// actor.json `environmentVariables`
|
|
147
|
+
// < --env-file (CI-friendly: gitignored .env-style file)
|
|
148
|
+
// < --env KEY=VALUE flag (per-run override)
|
|
149
|
+
// Empties are dropped from each *override* layer before merging ā an
|
|
150
|
+
// empty override means "don't override," so an unset CI secret can't
|
|
151
|
+
// clobber a non-empty actor.json default. (Whatever ships in
|
|
152
|
+
// actor.json is the author's intent, so we don't strip it.)
|
|
153
|
+
const fromActorJson = actorJson.environmentVariables ?? {};
|
|
154
|
+
const fromFile = options.envFile ? await loadEnvFile(options.envFile) : {};
|
|
155
|
+
const fromFlag = options.env ?? {};
|
|
156
|
+
const mergedEnvVars = {
|
|
157
|
+
...fromActorJson,
|
|
158
|
+
...dropEmpty(fromFile),
|
|
159
|
+
...dropEmpty(fromFlag),
|
|
160
|
+
};
|
|
161
|
+
// Resolve the image reference runners will pull. Mirrors the build/push
|
|
162
|
+
// branches above so the stored value matches whatever was actually pushed:
|
|
163
|
+
// --ghcr: ghcr.io/<repo>/actor-<name>:<tag>
|
|
164
|
+
// config.registryUrl + local: <registryUrl>/actor-<name>:<tag>
|
|
165
|
+
// local only / remote: imageName (local Docker daemon convention)
|
|
166
|
+
// Without this, ghcr / registryUrl deploys would store the local
|
|
167
|
+
// `crawlee-cloud/actor-...` tag and runners would fail to pull it.
|
|
168
|
+
const runtimeImage = buildMode === 'ghcr'
|
|
169
|
+
? `ghcr.io/${options.ghcr.toLowerCase()}/actor-${actorName}:${options.tag}`
|
|
170
|
+
: config.registryUrl && buildMode === 'local'
|
|
171
|
+
? `${config.registryUrl}/actor-${actorName}:${options.tag}`
|
|
172
|
+
: imageName;
|
|
173
|
+
const actorPayload = {
|
|
174
|
+
name: actorName,
|
|
175
|
+
title: actorJson.title,
|
|
176
|
+
description: actorJson.description,
|
|
177
|
+
// Source version from .actor/actor.json. Sent so the API can upsert
|
|
178
|
+
// an actor_versions row and link the build to it. Apify uses this
|
|
179
|
+
// for the version selector on the dashboard's build history.
|
|
180
|
+
version: actorJson.version,
|
|
181
|
+
defaultRunOptions: {
|
|
182
|
+
image: runtimeImage,
|
|
183
|
+
envVars: Object.keys(mergedEnvVars).length > 0 ? mergedEnvVars : undefined,
|
|
130
184
|
},
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
185
|
+
};
|
|
186
|
+
if (existingId) {
|
|
187
|
+
// Update existing actor (refreshes modifiedAt)
|
|
188
|
+
const response = await fetch(`${config.apiBaseUrl}/v2/acts/${existingId}`, {
|
|
189
|
+
method: 'PUT',
|
|
190
|
+
headers: {
|
|
191
|
+
'Content-Type': 'application/json',
|
|
192
|
+
Authorization: `Bearer ${config.token}`,
|
|
137
193
|
},
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
194
|
+
body: JSON.stringify(actorPayload),
|
|
195
|
+
});
|
|
196
|
+
if (!response.ok) {
|
|
197
|
+
const errorText = await response.text();
|
|
198
|
+
throw new Error(`API error: ${String(response.status)} - ${errorText}`);
|
|
199
|
+
}
|
|
200
|
+
registerSpinner.succeed('Actor updated');
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
// Create new actor
|
|
204
|
+
const response = await fetch(`${config.apiBaseUrl}/v2/acts`, {
|
|
205
|
+
method: 'POST',
|
|
206
|
+
headers: {
|
|
207
|
+
'Content-Type': 'application/json',
|
|
208
|
+
Authorization: `Bearer ${config.token}`,
|
|
209
|
+
},
|
|
210
|
+
body: JSON.stringify(actorPayload),
|
|
211
|
+
});
|
|
212
|
+
if (!response.ok) {
|
|
213
|
+
const errorText = await response.text();
|
|
214
|
+
throw new Error(`API error: ${String(response.status)} - ${errorText}`);
|
|
215
|
+
}
|
|
216
|
+
registerSpinner.succeed('Actor registered');
|
|
143
217
|
}
|
|
144
|
-
registerSpinner.succeed('Registered with platform');
|
|
145
218
|
console.log(chalk.green(`\nā
Actor "${actorName}" pushed successfully!\n`));
|
|
146
|
-
console.log(chalk.dim(`Run with:
|
|
147
|
-
console.log(chalk.dim(`
|
|
219
|
+
console.log(chalk.dim(`Run with: crawlee-cloud call ${actorName}`));
|
|
220
|
+
console.log(chalk.dim(`List: crawlee-cloud ls`));
|
|
148
221
|
console.log();
|
|
149
222
|
}
|
|
150
223
|
catch (err) {
|
|
@@ -153,6 +226,140 @@ export const pushCommand = new Command('push')
|
|
|
153
226
|
process.exit(1);
|
|
154
227
|
}
|
|
155
228
|
});
|
|
229
|
+
// ---- Build strategies ----
|
|
230
|
+
async function buildLocal(cwd, imageName, options) {
|
|
231
|
+
const buildSpinner = ora('Building Docker image...').start();
|
|
232
|
+
try {
|
|
233
|
+
const args = ['build', '-t', imageName];
|
|
234
|
+
if (options.platform) {
|
|
235
|
+
args.push('--platform', options.platform);
|
|
236
|
+
}
|
|
237
|
+
args.push('.');
|
|
238
|
+
await runCommand('docker', args, cwd);
|
|
239
|
+
buildSpinner.succeed('Docker image built');
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
buildSpinner.fail('Docker build failed');
|
|
243
|
+
console.error(err);
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
async function buildRemote(cwd, imageName, options) {
|
|
248
|
+
const buildSpinner = ora(`Building on ${options.remote}...`).start();
|
|
249
|
+
try {
|
|
250
|
+
const sshArgs = options.sshKey ? ['-i', options.sshKey] : [];
|
|
251
|
+
const remoteDir = `/tmp/crawlee-push-${Date.now()}`;
|
|
252
|
+
// Copy build context to remote
|
|
253
|
+
buildSpinner.text = 'Copying build context...';
|
|
254
|
+
await runCommand('scp', [...sshArgs, '-r', '-q', cwd, `${options.remote}:${remoteDir}`], cwd);
|
|
255
|
+
// Build on remote
|
|
256
|
+
buildSpinner.text = 'Building on remote...';
|
|
257
|
+
await runCommand('ssh', [...sshArgs, options.remote, `cd ${remoteDir} && docker build -t ${imageName} .`], cwd);
|
|
258
|
+
// Cleanup remote
|
|
259
|
+
await runCommand('ssh', [...sshArgs, options.remote, `rm -rf ${remoteDir}`], cwd);
|
|
260
|
+
buildSpinner.succeed(`Built on ${options.remote}`);
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
buildSpinner.fail('Remote build failed');
|
|
264
|
+
console.error(err);
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async function buildAndPushGhcr(cwd, _imageName, actorName, options) {
|
|
269
|
+
const ghcrToken = options.ghcrToken || process.env.GHCR_TOKEN || '';
|
|
270
|
+
const ghcrUser = options.ghcrUser || process.env.GHCR_USER || 'github';
|
|
271
|
+
const ghcrImage = `ghcr.io/${options.ghcr.toLowerCase()}/actor-${actorName}:${options.tag}`;
|
|
272
|
+
if (!ghcrToken) {
|
|
273
|
+
console.log(chalk.red('ā GHCR token required. Set --ghcr-token or GHCR_TOKEN env var.'));
|
|
274
|
+
process.exit(1);
|
|
275
|
+
}
|
|
276
|
+
// Login to GHCR
|
|
277
|
+
const loginSpinner = ora('Logging in to GHCR...').start();
|
|
278
|
+
try {
|
|
279
|
+
await runCommandWithInput('docker', ['login', 'ghcr.io', '-u', ghcrUser, '--password-stdin'], ghcrToken, cwd);
|
|
280
|
+
loginSpinner.succeed('GHCR login OK');
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
loginSpinner.fail('GHCR login failed');
|
|
284
|
+
console.error(err);
|
|
285
|
+
process.exit(1);
|
|
286
|
+
}
|
|
287
|
+
// Build
|
|
288
|
+
const buildSpinner = ora('Building Docker image...').start();
|
|
289
|
+
try {
|
|
290
|
+
const args = ['build', '-t', ghcrImage];
|
|
291
|
+
if (options.platform) {
|
|
292
|
+
args.push('--platform', options.platform);
|
|
293
|
+
}
|
|
294
|
+
args.push('.');
|
|
295
|
+
await runCommand('docker', args, cwd);
|
|
296
|
+
buildSpinner.succeed('Docker image built');
|
|
297
|
+
}
|
|
298
|
+
catch (err) {
|
|
299
|
+
buildSpinner.fail('Docker build failed');
|
|
300
|
+
console.error(err);
|
|
301
|
+
process.exit(1);
|
|
302
|
+
}
|
|
303
|
+
// Push
|
|
304
|
+
const pushSpinner = ora(`Pushing to ${ghcrImage}...`).start();
|
|
305
|
+
try {
|
|
306
|
+
await runCommand('docker', ['push', ghcrImage], cwd);
|
|
307
|
+
pushSpinner.succeed('Pushed to GHCR');
|
|
308
|
+
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
pushSpinner.fail('GHCR push failed');
|
|
311
|
+
console.error(err);
|
|
312
|
+
process.exit(1);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// ---- Helpers ----
|
|
316
|
+
/**
|
|
317
|
+
* commander value-collector for repeatable `-e KEY=VALUE` flags.
|
|
318
|
+
* Throws on malformed input rather than silently dropping it ā bad args
|
|
319
|
+
* during CI deploys would otherwise look like "no env vars set" later.
|
|
320
|
+
*/
|
|
321
|
+
function collectEnv(arg, prev) {
|
|
322
|
+
const eq = arg.indexOf('=');
|
|
323
|
+
if (eq <= 0) {
|
|
324
|
+
throw new Error(`Invalid --env value "${arg}". Expected KEY=VALUE.`);
|
|
325
|
+
}
|
|
326
|
+
const key = arg.slice(0, eq);
|
|
327
|
+
const value = arg.slice(eq + 1);
|
|
328
|
+
return { ...prev, [key]: value };
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Parse a .env-style file into a flat map. Supports `# comments`, blank
|
|
332
|
+
* lines, and quoted values. Does NOT do shell interpolation (no `$VAR`
|
|
333
|
+
* expansion) ā that's the caller's job if they want it.
|
|
334
|
+
*/
|
|
335
|
+
async function loadEnvFile(filePath) {
|
|
336
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
337
|
+
const out = {};
|
|
338
|
+
for (const rawLine of content.split('\n')) {
|
|
339
|
+
const line = rawLine.trim();
|
|
340
|
+
if (!line || line.startsWith('#'))
|
|
341
|
+
continue;
|
|
342
|
+
const eq = line.indexOf('=');
|
|
343
|
+
if (eq <= 0)
|
|
344
|
+
continue;
|
|
345
|
+
const key = line.slice(0, eq).trim();
|
|
346
|
+
let value = line.slice(eq + 1).trim();
|
|
347
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
348
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
349
|
+
value = value.slice(1, -1);
|
|
350
|
+
}
|
|
351
|
+
out[key] = value;
|
|
352
|
+
}
|
|
353
|
+
return out;
|
|
354
|
+
}
|
|
355
|
+
function dropEmpty(map) {
|
|
356
|
+
const out = {};
|
|
357
|
+
for (const [k, v] of Object.entries(map)) {
|
|
358
|
+
if (v !== undefined && v !== '')
|
|
359
|
+
out[k] = v;
|
|
360
|
+
}
|
|
361
|
+
return out;
|
|
362
|
+
}
|
|
156
363
|
function runCommand(cmd, args, cwd) {
|
|
157
364
|
return new Promise((resolve, reject) => {
|
|
158
365
|
const child = spawn(cmd, args, { cwd, stdio: 'pipe' });
|
|
@@ -165,7 +372,26 @@ function runCommand(cmd, args, cwd) {
|
|
|
165
372
|
resolve();
|
|
166
373
|
}
|
|
167
374
|
else {
|
|
168
|
-
reject(new Error(stderr || `Command failed with code ${code}`));
|
|
375
|
+
reject(new Error(stderr || `Command failed with code ${String(code)}`));
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
function runCommandWithInput(cmd, args, input, cwd) {
|
|
381
|
+
return new Promise((resolve, reject) => {
|
|
382
|
+
const child = spawn(cmd, args, { cwd, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
383
|
+
let stderr = '';
|
|
384
|
+
child.stderr?.on('data', (data) => {
|
|
385
|
+
stderr += data.toString();
|
|
386
|
+
});
|
|
387
|
+
child.stdin?.write(input);
|
|
388
|
+
child.stdin?.end();
|
|
389
|
+
child.on('exit', (code) => {
|
|
390
|
+
if (code === 0) {
|
|
391
|
+
resolve();
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
reject(new Error(stderr || `Command failed with code ${String(code)}`));
|
|
169
395
|
}
|
|
170
396
|
});
|
|
171
397
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,OAAO,SAAgB,CAAC;AAoBrC,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,9 @@ import { callCommand } from './commands/call.js';
|
|
|
20
20
|
import { logsCommand } from './commands/logs.js';
|
|
21
21
|
import { statusCommand } from './commands/status.js';
|
|
22
22
|
import { loginCommand } from './commands/login.js';
|
|
23
|
+
import { listCommand } from './commands/list.js';
|
|
24
|
+
import { profileCommand } from './commands/profile.js';
|
|
25
|
+
import { infoCommand } from './commands/info.js';
|
|
23
26
|
export const program = new Command();
|
|
24
27
|
program
|
|
25
28
|
.name('crawlee-cloud')
|
|
@@ -34,6 +37,9 @@ program.addCommand(callCommand);
|
|
|
34
37
|
program.addCommand(logsCommand);
|
|
35
38
|
program.addCommand(statusCommand);
|
|
36
39
|
program.addCommand(loginCommand);
|
|
40
|
+
program.addCommand(listCommand);
|
|
41
|
+
program.addCommand(profileCommand);
|
|
42
|
+
program.addCommand(infoCommand);
|
|
37
43
|
export { program as cli };
|
|
38
44
|
// v0.2.1 trigger
|
|
39
45
|
//# 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":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAErC,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC;AAE1B,iBAAiB"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Configuration utilities for CLI.
|
|
3
|
+
*
|
|
4
|
+
* The config file supports multiple named "profiles" ā separate API URL +
|
|
5
|
+
* token sets for different environments (local / staging / prod / per-team).
|
|
6
|
+
* One profile is active at a time; `getConfig()` returns its values so the
|
|
7
|
+
* rest of the CLI doesn't need to know about profiles at all.
|
|
8
|
+
*
|
|
9
|
+
* Persisted shape (~/.crawlee-cloud/config.json):
|
|
10
|
+
* {
|
|
11
|
+
* "activeProfile": "default",
|
|
12
|
+
* "profiles": {
|
|
13
|
+
* "default": { "apiBaseUrl": "...", "token": "...", "registryUrl": "..." },
|
|
14
|
+
* "prod": { ... },
|
|
15
|
+
* "staging": { ... }
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* Backwards-compat: if the file is in the OLD flat shape
|
|
20
|
+
* { "apiBaseUrl": "...", "token": "..." }
|
|
21
|
+
* we migrate it on first read into a `default` profile, transparently.
|
|
22
|
+
*
|
|
23
|
+
* Profile selection precedence (highest wins):
|
|
24
|
+
* 1. CRAWLEE_CLOUD_PROFILE env var (per-invocation override)
|
|
25
|
+
* 2. activeProfile in config.json
|
|
26
|
+
* 3. "default"
|
|
27
|
+
*
|
|
28
|
+
* Env-var overrides for the active profile's fields still apply
|
|
29
|
+
* (CRAWLEE_CLOUD_API_URL, CRAWLEE_CLOUD_TOKEN, etc.) ā useful for CI.
|
|
3
30
|
*/
|
|
4
31
|
export interface CLIConfig {
|
|
5
32
|
apiBaseUrl: string;
|
|
@@ -7,15 +34,41 @@ export interface CLIConfig {
|
|
|
7
34
|
registryUrl?: string;
|
|
8
35
|
}
|
|
9
36
|
/**
|
|
10
|
-
* Get CLI configuration.
|
|
37
|
+
* Get the effective CLI configuration for the active profile.
|
|
38
|
+
*
|
|
39
|
+
* Resolution order per field (highest wins):
|
|
40
|
+
* 1. Direct env var (CRAWLEE_CLOUD_API_URL, CRAWLEE_CLOUD_TOKEN, ...)
|
|
41
|
+
* 2. Active profile in config.json
|
|
42
|
+
* 3. Hard-coded defaults
|
|
11
43
|
*/
|
|
12
44
|
export declare function getConfig(): Promise<CLIConfig>;
|
|
13
45
|
/**
|
|
14
|
-
* Save
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*
|
|
46
|
+
* Save (merge) into the active profile. Used by `crc login` to persist
|
|
47
|
+
* after a successful auth handshake.
|
|
48
|
+
*
|
|
49
|
+
* If `profile` is passed, that named profile is updated/created instead
|
|
50
|
+
* of the active one ā this is how `crc login --profile prod` adds a new
|
|
51
|
+
* profile without disturbing the active selection.
|
|
19
52
|
*/
|
|
53
|
+
export declare function saveConfig(config: Partial<CLIConfig>, options?: {
|
|
54
|
+
profile?: string;
|
|
55
|
+
setActive?: boolean;
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
/** Delete every persisted profile + reset active. Used in test cleanup. */
|
|
20
58
|
export declare function clearConfig(): Promise<void>;
|
|
59
|
+
export interface ProfileSummary {
|
|
60
|
+
name: string;
|
|
61
|
+
apiBaseUrl: string;
|
|
62
|
+
/** First 12 chars of the token, suffix masked. */
|
|
63
|
+
tokenPreview: string;
|
|
64
|
+
active: boolean;
|
|
65
|
+
}
|
|
66
|
+
/** List every persisted profile with its API URL and a masked token preview. */
|
|
67
|
+
export declare function listProfiles(): Promise<ProfileSummary[]>;
|
|
68
|
+
/** Set the active profile. Throws if the named profile doesn't exist. */
|
|
69
|
+
export declare function useProfile(name: string): Promise<void>;
|
|
70
|
+
/** Remove a named profile. If it was active, fall back to "default" or first. */
|
|
71
|
+
export declare function removeProfile(name: string): Promise<void>;
|
|
72
|
+
/** Get the currently-active profile's name (after env-var override). */
|
|
73
|
+
export declare function getActiveProfileName(): Promise<string>;
|
|
21
74
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAMH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA4CD;;;;;;;GAOG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,CAmBpD;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,EAC1B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACtD,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,2EAA2E;AAC3E,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAIjD;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,gFAAgF;AAChF,wBAAsB,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAU9D;AAED,yEAAyE;AACzE,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5D;AAED,iFAAiF;AACjF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/D;AAED,wEAAwE;AACxE,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAG5D"}
|