anycloud 0.0.9 → 0.0.11
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 +6 -0
- package/binaries/anycloud-darwin-arm64 +0 -0
- package/binaries/anycloud-darwin-x64 +0 -0
- package/binaries/anycloud-linux-arm64 +0 -0
- package/binaries/anycloud-linux-x64 +0 -0
- package/dist/cli/commands/config/edit.js +30 -91
- package/dist/cli/commands/config/edit.js.map +1 -1
- package/dist/cli/commands/config/new.js +143 -183
- package/dist/cli/commands/config/new.js.map +1 -1
- package/dist/cli/commands/credentials/new.js +273 -101
- package/dist/cli/commands/credentials/new.js.map +1 -1
- package/dist/cli/commands/logs.js +13 -14
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/run.js +192 -19
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/status.js +13 -14
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/terminate.js +14 -19
- package/dist/cli/commands/terminate.js.map +1 -1
- package/dist/cli/commands/update.js +11 -78
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +0 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/services/api-client.js +2 -3
- package/dist/cli/services/api-client.js.map +1 -1
- package/dist/cli/services/config.js +1 -1
- package/dist/cli/services/config.js.map +1 -1
- package/dist/cli/services/docker.js +17 -4
- package/dist/cli/services/docker.js.map +1 -1
- package/dist/cli/services/slurp/azure.js +168 -1
- package/dist/cli/services/slurp/azure.js.map +1 -1
- package/dist/daemon/cluster.js +1 -0
- package/dist/daemon/cluster.js.map +1 -1
- package/dist/shared/assets/clouds/aws/types-per-region.json +4769 -0
- package/dist/shared/assets/clouds/azure/types-per-region.json +29358 -0
- package/dist/shared/assets/clouds/gcp/types-per-region.json +6910 -0
- package/dist/shared/types.js +39 -3
- package/dist/shared/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/commands/list.js +0 -99
- package/dist/cli/commands/list.js.map +0 -1
package/dist/cli/commands/run.js
CHANGED
|
@@ -2,23 +2,91 @@ import { Command } from 'commander';
|
|
|
2
2
|
import prompts from 'prompts';
|
|
3
3
|
import { getGitHubToken } from '../services/auth.js';
|
|
4
4
|
import { resolveDeploymentProfile, loadDeploymentProfiles, } from '../services/config.js';
|
|
5
|
+
import { loadCredentials } from '../services/credentials.js';
|
|
5
6
|
import { createDeployment } from '../services/api-client.js';
|
|
6
|
-
import { printInfo, printError, createSpinner } from '../utils/output.js';
|
|
7
|
+
import { printInfo, printError, createSpinner, printCloudConfigsTable, } from '../utils/output.js';
|
|
7
8
|
import { isNonInteractive, getConfigFromEnv, } from '../services/non-interactive.js';
|
|
8
9
|
import { DeploymentType } from '../../shared/types.js';
|
|
9
10
|
import { generateJobId } from '../../shared/id-generator.js';
|
|
10
11
|
import { parseEnvFile } from '../utils/env-parser.js';
|
|
12
|
+
import { createCredentialsInteractive } from './credentials/new.js';
|
|
13
|
+
import { createConfigInteractive } from './config/new.js';
|
|
14
|
+
import { resolveAndPushImage } from '../services/docker.js';
|
|
15
|
+
import { getGitHubUsername } from '../services/auth.js';
|
|
11
16
|
import packageJson from '../../../package.json' with { type: 'json' };
|
|
17
|
+
/**
|
|
18
|
+
* List GitHub Container Registry packages for authenticated user
|
|
19
|
+
*/
|
|
20
|
+
async function listGitHubPackages(token) {
|
|
21
|
+
try {
|
|
22
|
+
// Get authenticated user
|
|
23
|
+
const userResponse = await fetch('https://api.github.com/user', {
|
|
24
|
+
headers: {
|
|
25
|
+
Authorization: `Bearer ${token}`,
|
|
26
|
+
Accept: 'application/vnd.github+json',
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
if (!userResponse.ok)
|
|
30
|
+
return [];
|
|
31
|
+
const user = (await userResponse.json());
|
|
32
|
+
// Get user's packages
|
|
33
|
+
const packagesResponse = await fetch(`https://api.github.com/user/packages?package_type=container`, {
|
|
34
|
+
headers: {
|
|
35
|
+
Authorization: `Bearer ${token}`,
|
|
36
|
+
Accept: 'application/vnd.github+json',
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
if (!packagesResponse.ok)
|
|
40
|
+
return [];
|
|
41
|
+
const packages = (await packagesResponse.json());
|
|
42
|
+
// For each package, get versions/tags
|
|
43
|
+
const images = [];
|
|
44
|
+
for (const pkg of packages.slice(0, 10)) {
|
|
45
|
+
// Limit to 10 packages
|
|
46
|
+
try {
|
|
47
|
+
const versionsResponse = await fetch(`https://api.github.com/user/packages/container/${pkg.name}/versions`, {
|
|
48
|
+
headers: {
|
|
49
|
+
Authorization: `Bearer ${token}`,
|
|
50
|
+
Accept: 'application/vnd.github+json',
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
if (versionsResponse.ok) {
|
|
54
|
+
const versions = (await versionsResponse.json());
|
|
55
|
+
// Get tags from first few versions
|
|
56
|
+
for (const version of versions.slice(0, 5)) {
|
|
57
|
+
const tags = version.metadata?.container?.tags || [];
|
|
58
|
+
for (const tag of tags.slice(0, 3)) {
|
|
59
|
+
const full = `ghcr.io/${user.login}/${pkg.name}:${tag}`;
|
|
60
|
+
images.push({
|
|
61
|
+
name: `ghcr.io/${user.login}/${pkg.name}`,
|
|
62
|
+
tag,
|
|
63
|
+
full,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Skip this package on error
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return images;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
12
79
|
export function createRunCommand() {
|
|
13
80
|
return new Command('run')
|
|
14
81
|
.description('🚀 Deploy a container image')
|
|
15
|
-
.argument('
|
|
82
|
+
.argument('[image]', 'Container image (e.g., ghcr.io/user/repo:latest)')
|
|
16
83
|
.option('-c, --config <name>', 'Config name from anycloud.json')
|
|
17
84
|
.option('-i, --id <id>', 'Job identifier')
|
|
18
85
|
.option('-e, --env <file>', 'Environment file (.env format)')
|
|
19
86
|
.addHelpText('after', `
|
|
20
87
|
Examples:
|
|
21
|
-
$ anycloud run
|
|
88
|
+
$ anycloud run # Select from GHCR images
|
|
89
|
+
$ anycloud run ghcr.io/user/repo:latest # Deploy specific image
|
|
22
90
|
$ anycloud run ghcr.io/user/repo:v1.0 --config prod # Deploy with config
|
|
23
91
|
$ anycloud run ghcr.io/user/repo:latest --env .env # Deploy with env vars
|
|
24
92
|
|
|
@@ -45,31 +113,138 @@ Output:
|
|
|
45
113
|
process.exit(1);
|
|
46
114
|
}
|
|
47
115
|
}
|
|
48
|
-
// If --config not provided and not in non-interactive mode,
|
|
116
|
+
// If --config not provided and not in non-interactive mode, check setup
|
|
49
117
|
if (!configName) {
|
|
118
|
+
// Check if credentials exist
|
|
119
|
+
const credentials = await loadCredentials();
|
|
120
|
+
const credNames = Object.keys(credentials);
|
|
121
|
+
if (credNames.length === 0) {
|
|
122
|
+
printInfo('No credentials found.');
|
|
123
|
+
console.log('');
|
|
124
|
+
const createCreds = await prompts({
|
|
125
|
+
type: 'confirm',
|
|
126
|
+
name: 'value',
|
|
127
|
+
message: 'Would you like to create credentials now?',
|
|
128
|
+
initial: true,
|
|
129
|
+
});
|
|
130
|
+
if (!createCreds.value) {
|
|
131
|
+
printInfo('Run "anycloud credentials new" to create credentials.');
|
|
132
|
+
process.exit(0);
|
|
133
|
+
}
|
|
134
|
+
console.log('');
|
|
135
|
+
await createCredentialsInteractive();
|
|
136
|
+
console.log('');
|
|
137
|
+
}
|
|
138
|
+
// Check if profiles exist
|
|
50
139
|
const profiles = await loadDeploymentProfiles();
|
|
51
140
|
const profileNames = Object.keys(profiles);
|
|
52
141
|
if (profileNames.length === 0) {
|
|
53
|
-
|
|
54
|
-
|
|
142
|
+
printInfo('No deployment profiles found.');
|
|
143
|
+
console.log('');
|
|
144
|
+
const createConfig = await prompts({
|
|
145
|
+
type: 'confirm',
|
|
146
|
+
name: 'value',
|
|
147
|
+
message: 'Would you like to create a config profile now?',
|
|
148
|
+
initial: true,
|
|
149
|
+
});
|
|
150
|
+
if (!createConfig.value) {
|
|
151
|
+
printInfo('Run "anycloud config new" to create a profile.');
|
|
152
|
+
process.exit(0);
|
|
153
|
+
}
|
|
154
|
+
console.log('');
|
|
155
|
+
configName = await createConfigInteractive();
|
|
156
|
+
console.log('');
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Show config table before selection
|
|
160
|
+
const cloudConfigEntries = profileNames.flatMap((name) => profiles[name].map((entry) => ({
|
|
161
|
+
configName: name,
|
|
162
|
+
credentialsName: entry.credentialsName,
|
|
163
|
+
region: entry.region,
|
|
164
|
+
vmType: entry.vmType,
|
|
165
|
+
provider: '',
|
|
166
|
+
spot: entry.spot ?? false,
|
|
167
|
+
bucketName: entry.bucketName,
|
|
168
|
+
diskSizeGb: entry.diskSizeGb,
|
|
169
|
+
})));
|
|
170
|
+
console.log('');
|
|
171
|
+
printCloudConfigsTable(cloudConfigEntries, {
|
|
172
|
+
showCredentials: true,
|
|
173
|
+
});
|
|
174
|
+
// Prompt for config selection
|
|
175
|
+
const selection = await prompts({
|
|
176
|
+
type: 'select',
|
|
177
|
+
name: 'profile',
|
|
178
|
+
message: 'Select config:',
|
|
179
|
+
choices: profileNames.map((name) => ({
|
|
180
|
+
title: name,
|
|
181
|
+
value: name,
|
|
182
|
+
})),
|
|
183
|
+
});
|
|
184
|
+
if (!selection.profile) {
|
|
185
|
+
process.exit(0); // User cancelled
|
|
186
|
+
}
|
|
187
|
+
configName = selection.profile;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
printInfo(`Using config: ${configName}`);
|
|
191
|
+
// Get GitHub token early if we need to list images
|
|
192
|
+
const accessToken = await getGitHubToken();
|
|
193
|
+
// If no image provided, let user select from available images
|
|
194
|
+
if (!image) {
|
|
195
|
+
if (isNonInteractive()) {
|
|
196
|
+
printError('Non-interactive mode: Image required.\n' +
|
|
197
|
+
' Provide image as first argument.');
|
|
55
198
|
process.exit(1);
|
|
56
199
|
}
|
|
200
|
+
const spinner = createSpinner('Loading available images...').start();
|
|
201
|
+
// Load GitHub packages
|
|
202
|
+
const ghcrImages = await listGitHubPackages(accessToken);
|
|
203
|
+
spinner.stop();
|
|
204
|
+
// Dedupe images to show only most recent tag per image name
|
|
205
|
+
const seenGhcrImages = new Set();
|
|
206
|
+
const dedupedGhcrImages = ghcrImages.filter((img) => {
|
|
207
|
+
if (seenGhcrImages.has(img.name))
|
|
208
|
+
return false;
|
|
209
|
+
seenGhcrImages.add(img.name);
|
|
210
|
+
return true;
|
|
211
|
+
});
|
|
212
|
+
// Build choices for selection
|
|
213
|
+
const choices = [];
|
|
214
|
+
// Add existing GHCR images
|
|
215
|
+
for (const img of dedupedGhcrImages) {
|
|
216
|
+
choices.push({
|
|
217
|
+
title: img.full,
|
|
218
|
+
value: img.full,
|
|
219
|
+
description: 'GitHub Container Registry',
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
// Add option to build new image
|
|
223
|
+
choices.push({
|
|
224
|
+
title: 'Build and push a new image from local dir',
|
|
225
|
+
value: '__build__',
|
|
226
|
+
description: 'Build from Dockerfile in current directory',
|
|
227
|
+
});
|
|
228
|
+
console.log('');
|
|
57
229
|
const selection = await prompts({
|
|
58
230
|
type: 'select',
|
|
59
|
-
name: '
|
|
60
|
-
message: 'Select
|
|
61
|
-
choices
|
|
62
|
-
title: name,
|
|
63
|
-
value: name,
|
|
64
|
-
description: `${profiles[name].length} config(s)`,
|
|
65
|
-
})),
|
|
231
|
+
name: 'image',
|
|
232
|
+
message: 'Select image to deploy:',
|
|
233
|
+
choices,
|
|
66
234
|
});
|
|
67
|
-
if (!selection.
|
|
68
|
-
process.exit(0);
|
|
235
|
+
if (!selection.image) {
|
|
236
|
+
process.exit(0);
|
|
237
|
+
}
|
|
238
|
+
if (selection.image === '__build__') {
|
|
239
|
+
// Build and push new image
|
|
240
|
+
const githubUsername = await getGitHubUsername(accessToken);
|
|
241
|
+
console.log('');
|
|
242
|
+
image = await resolveAndPushImage(undefined, accessToken, githubUsername);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
image = selection.image;
|
|
69
246
|
}
|
|
70
|
-
configName = selection.profile;
|
|
71
247
|
}
|
|
72
|
-
printInfo(`Using config: ${configName}`);
|
|
73
248
|
// Parse environment variables from file if provided
|
|
74
249
|
let envVars;
|
|
75
250
|
if (options.env) {
|
|
@@ -88,8 +263,6 @@ Output:
|
|
|
88
263
|
process.exit(1);
|
|
89
264
|
}
|
|
90
265
|
}
|
|
91
|
-
// Get GitHub token
|
|
92
|
-
const accessToken = await getGitHubToken();
|
|
93
266
|
console.log('');
|
|
94
267
|
printInfo(`Deploying image: ${image}`);
|
|
95
268
|
// Resolve deployment profile and credentials
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,17 @@ import { Command } from 'commander';
|
|
|
2
2
|
import prompts from 'prompts';
|
|
3
3
|
import { getGitHubToken } from '../services/auth.js';
|
|
4
4
|
import { getDeploymentStatus, listDeployments, } from '../services/api-client.js';
|
|
5
|
-
import { resolveAllDeploymentProfiles } from '../services/config.js';
|
|
6
5
|
import { printInfo, printError, createSpinner } from '../utils/output.js';
|
|
7
6
|
import { isNonInteractive, getEnvOptional, } from '../services/non-interactive.js';
|
|
7
|
+
import { DeploymentState } from '../../shared/types.js';
|
|
8
8
|
import packageJson from '../../../package.json' with { type: 'json' };
|
|
9
|
+
const stateEmoji = {
|
|
10
|
+
[DeploymentState.Provisioning]: '🟡',
|
|
11
|
+
[DeploymentState.Running]: '🟢',
|
|
12
|
+
[DeploymentState.Failed]: '🔴',
|
|
13
|
+
[DeploymentState.Terminating]: '🟠',
|
|
14
|
+
[DeploymentState.Terminated]: '⚫',
|
|
15
|
+
};
|
|
9
16
|
export function createStatusCommand() {
|
|
10
17
|
return new Command('status')
|
|
11
18
|
.description('📊 Get deployment status')
|
|
@@ -42,16 +49,9 @@ Output:
|
|
|
42
49
|
else {
|
|
43
50
|
// Get GitHub token
|
|
44
51
|
const accessToken = await getGitHubToken();
|
|
45
|
-
//
|
|
46
|
-
const anycloudConfigs = await resolveAllDeploymentProfiles();
|
|
47
|
-
if (Object.keys(anycloudConfigs).length === 0) {
|
|
48
|
-
printError('No deployment profiles found in anycloud.json');
|
|
49
|
-
printInfo('Please create anycloud.json with deployment profiles.');
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
// List all deployments
|
|
52
|
+
// List all deployments (fast KV-based)
|
|
53
53
|
const loadingSpinner = createSpinner('Loading deployments...').start();
|
|
54
|
-
const deployments = await listDeployments(
|
|
54
|
+
const deployments = await listDeployments(accessToken, packageJson.version);
|
|
55
55
|
loadingSpinner.stop();
|
|
56
56
|
if (deployments.length === 0) {
|
|
57
57
|
printError('No deployments found.');
|
|
@@ -64,12 +64,11 @@ Output:
|
|
|
64
64
|
name: 'deployment',
|
|
65
65
|
message: 'Select deployment:',
|
|
66
66
|
choices: deployments.map((deployment) => {
|
|
67
|
-
const
|
|
68
|
-
const spotText = hasSpot ? ' | Spot' : '';
|
|
67
|
+
const emoji = stateEmoji[deployment.state] || '❓';
|
|
69
68
|
return {
|
|
70
|
-
title: deployment.id
|
|
69
|
+
title: `${emoji} ${deployment.id}`,
|
|
71
70
|
value: deployment.id,
|
|
72
|
-
description:
|
|
71
|
+
description: deployment.state,
|
|
73
72
|
};
|
|
74
73
|
}),
|
|
75
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,GAAoC;IAClD,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,IAAI;IACpC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI;IAC/B,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI;IAC9B,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,IAAI;IACnC,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,GAAG;CAClC,CAAC;AAEF,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,0BAA0B,CAAC;SACvC,QAAQ,CACP,MAAM,EACN,kEAAkE,CACnE;SACA,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;CAcL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,EAAW,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,IAAI,YAAY,GAAG,EAAE,CAAC;YAEtB,oDAAoD;YACpD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,yDAAyD;gBACzD,IAAI,gBAAgB,EAAE,EAAE,CAAC;oBACvB,YAAY,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAAC;oBACxD,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,UAAU,CACR,iDAAiD;4BAC/C,+EAA+E,CAClF,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,mBAAmB;oBACnB,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;oBAE3C,uCAAuC;oBACvC,MAAM,cAAc,GAAG,aAAa,CAClC,wBAAwB,CACzB,CAAC,KAAK,EAAE,CAAC;oBACV,MAAM,WAAW,GAAG,MAAM,eAAe,CACvC,WAAW,EACX,WAAW,CAAC,OAAO,CACpB,CAAC;oBACF,cAAc,CAAC,IAAI,EAAE,CAAC;oBAEtB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC7B,UAAU,CAAC,uBAAuB,CAAC,CAAC;wBACpC,SAAS,CACP,8EAA8E,CAC/E,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;oBAED,kCAAkC;oBAClC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;wBAC9B,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,oBAAoB;wBAC7B,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;4BACtC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;4BAClD,OAAO;gCACL,KAAK,EAAE,GAAG,KAAK,IAAI,UAAU,CAAC,EAAE,EAAE;gCAClC,KAAK,EAAE,UAAU,CAAC,EAAE;gCACpB,WAAW,EAAE,UAAU,CAAC,KAAK;6BAC9B,CAAC;wBACJ,CAAC,CAAC;qBACH,CAAC,CAAC;oBAEH,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;wBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;oBACpC,CAAC;oBAED,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC;gBACtC,CAAC;YACH,CAAC;YAED,4CAA4C;YAC5C,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YAE3C,aAAa;YACb,MAAM,OAAO,GAAG,aAAa,CAC3B,wBAAwB,YAAY,KAAK,CAC1C,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,YAAY,EACZ,WAAW,EACX,WAAW,CAAC,OAAO,CACpB,CAAC;YACF,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,kCAAkC;YAClC,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;oBACxC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;oBACxD,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM;wBAC1B,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;wBAC1D,CAAC,CAAC,EAAE,CAAC;oBACP,OAAO,CAAC,GAAG,CACT,KAAK,UAAU,OAAO,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,UAAU,GAAG,UAAU,EAAE,CACzE,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -2,10 +2,18 @@ import { Command } from 'commander';
|
|
|
2
2
|
import prompts from 'prompts';
|
|
3
3
|
import { terminateDeployment, listDeployments, } from '../services/api-client.js';
|
|
4
4
|
import { getGitHubToken } from '../services/auth.js';
|
|
5
|
-
import { resolveDeploymentProfile, loadDeploymentProfiles,
|
|
5
|
+
import { resolveDeploymentProfile, loadDeploymentProfiles, } from '../services/config.js';
|
|
6
6
|
import { printInfo, printError, createSpinner } from '../utils/output.js';
|
|
7
7
|
import { isNonInteractive, getConfigFromEnv, getEnvOptional, } from '../services/non-interactive.js';
|
|
8
|
+
import { DeploymentState } from '../../shared/types.js';
|
|
8
9
|
import packageJson from '../../../package.json' with { type: 'json' };
|
|
10
|
+
const stateEmoji = {
|
|
11
|
+
[DeploymentState.Provisioning]: '🟡',
|
|
12
|
+
[DeploymentState.Running]: '🟢',
|
|
13
|
+
[DeploymentState.Failed]: '🔴',
|
|
14
|
+
[DeploymentState.Terminating]: '🟠',
|
|
15
|
+
[DeploymentState.Terminated]: '⚫',
|
|
16
|
+
};
|
|
9
17
|
export function createTerminateCommand() {
|
|
10
18
|
return new Command('terminate')
|
|
11
19
|
.description('🛑 Terminate a deployment')
|
|
@@ -40,16 +48,9 @@ Output:
|
|
|
40
48
|
else {
|
|
41
49
|
// Get GitHub token
|
|
42
50
|
const accessToken = await getGitHubToken();
|
|
43
|
-
//
|
|
44
|
-
const anycloudConfigs = await resolveAllDeploymentProfiles();
|
|
45
|
-
if (Object.keys(anycloudConfigs).length === 0) {
|
|
46
|
-
printError('No deployment profiles found in anycloud.json');
|
|
47
|
-
printInfo('Please create anycloud.json with deployment profiles.');
|
|
48
|
-
process.exit(1);
|
|
49
|
-
}
|
|
50
|
-
// List all deployments
|
|
51
|
+
// List all deployments (fast KV-based)
|
|
51
52
|
const loadingSpinner = createSpinner('Loading deployments...').start();
|
|
52
|
-
const deployments = await listDeployments(
|
|
53
|
+
const deployments = await listDeployments(accessToken, packageJson.version);
|
|
53
54
|
loadingSpinner.stop();
|
|
54
55
|
if (deployments.length === 0) {
|
|
55
56
|
printError('No deployments found.');
|
|
@@ -62,12 +63,11 @@ Output:
|
|
|
62
63
|
name: 'deployment',
|
|
63
64
|
message: 'Select deployment to terminate:',
|
|
64
65
|
choices: deployments.map((deployment) => {
|
|
65
|
-
const
|
|
66
|
-
const spotText = hasSpot ? ' | Spot' : '';
|
|
66
|
+
const emoji = stateEmoji[deployment.state] || '❓';
|
|
67
67
|
return {
|
|
68
|
-
title: deployment.id
|
|
68
|
+
title: `${emoji} ${deployment.id}`,
|
|
69
69
|
value: deployment.id,
|
|
70
|
-
description:
|
|
70
|
+
description: deployment.state,
|
|
71
71
|
};
|
|
72
72
|
}),
|
|
73
73
|
});
|
|
@@ -75,11 +75,6 @@ Output:
|
|
|
75
75
|
process.exit(0); // User cancelled
|
|
76
76
|
}
|
|
77
77
|
deploymentId = selection.deployment;
|
|
78
|
-
// Auto-detect config from the selected deployment if not provided
|
|
79
|
-
const selectedDeployment = deployments.find((d) => d.id === deploymentId);
|
|
80
|
-
if (selectedDeployment && !configName) {
|
|
81
|
-
configName = selectedDeployment.configName;
|
|
82
|
-
}
|
|
83
78
|
}
|
|
84
79
|
}
|
|
85
80
|
printInfo(`Terminating: ${deploymentId}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/cli/commands/terminate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/cli/commands/terminate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,7 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { tmpdir } from 'os';
|
|
5
|
-
import { join } from 'path';
|
|
6
|
-
import axios from 'axios';
|
|
7
|
-
import { printInfo, printError, createSpinner } from '../utils/output.js';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import { printInfo, printError } from '../utils/output.js';
|
|
8
4
|
import packageJson from '../../../package.json' with { type: 'json' };
|
|
9
|
-
function getPlatform() {
|
|
10
|
-
const arch = process.arch === 'x64' ? 'x64' : 'arm64';
|
|
11
|
-
return `${process.platform}-${arch}`;
|
|
12
|
-
}
|
|
13
|
-
async function getLatestVersion() {
|
|
14
|
-
const response = await axios.get('https://registry.npmjs.org/anycloud/latest');
|
|
15
|
-
return response.data.version;
|
|
16
|
-
}
|
|
17
|
-
async function downloadBinary(version, platform, destPath) {
|
|
18
|
-
const url = `https://unpkg.com/anycloud@${version}/binaries/anycloud-${platform}`;
|
|
19
|
-
const response = await axios({
|
|
20
|
-
method: 'get',
|
|
21
|
-
url,
|
|
22
|
-
responseType: 'stream',
|
|
23
|
-
});
|
|
24
|
-
const writer = createWriteStream(destPath);
|
|
25
|
-
response.data.pipe(writer);
|
|
26
|
-
return new Promise((resolve, reject) => {
|
|
27
|
-
writer.on('finish', resolve);
|
|
28
|
-
writer.on('error', reject);
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
5
|
export function createUpdateCommand() {
|
|
32
6
|
return new Command('update')
|
|
33
7
|
.description('⬆️ Update anycloud CLI to the latest version')
|
|
@@ -36,60 +10,19 @@ export function createUpdateCommand() {
|
|
|
36
10
|
Examples:
|
|
37
11
|
$ anycloud update # Update to latest version
|
|
38
12
|
$ anycloud update 0.2.0 # Update to specific version
|
|
39
|
-
|
|
40
|
-
Output:
|
|
41
|
-
Current version: 0.0.8
|
|
42
|
-
Latest version: 0.1.0
|
|
43
|
-
Downloading anycloud 0.1.0 for darwin-arm64...
|
|
44
|
-
✓ Updated to version 0.1.0
|
|
45
13
|
`)
|
|
46
14
|
.action(async (targetVersion) => {
|
|
47
15
|
try {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
// Check if already on target version
|
|
54
|
-
if (currentVersion === version) {
|
|
55
|
-
printInfo('Already on the target version.');
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
// Detect platform
|
|
59
|
-
const platform = getPlatform();
|
|
60
|
-
// Download new binary
|
|
61
|
-
const spinner = createSpinner(`Downloading anycloud ${version} for ${platform}...`).start();
|
|
62
|
-
const tempPath = join(tmpdir(), `anycloud-${Date.now()}`);
|
|
63
|
-
await downloadBinary(version, platform, tempPath);
|
|
64
|
-
// Make executable
|
|
65
|
-
await chmod(tempPath, 0o755);
|
|
66
|
-
// Get current executable path
|
|
67
|
-
const execPath = process.execPath;
|
|
68
|
-
// Check if we're running from a standalone binary or node
|
|
69
|
-
const isStandaloneBinary = !execPath.includes('node');
|
|
70
|
-
if (!isStandaloneBinary) {
|
|
71
|
-
spinner.fail('Update command only works with standalone binary installations.');
|
|
72
|
-
printInfo('If you installed via npm, use: npm update -g anycloud');
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
75
|
-
// Replace current binary
|
|
76
|
-
try {
|
|
77
|
-
const backupPath = `${execPath}.backup`;
|
|
78
|
-
await rename(execPath, backupPath);
|
|
79
|
-
await rename(tempPath, execPath);
|
|
80
|
-
await unlink(backupPath).catch(() => { });
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
if (err.code === 'EACCES') {
|
|
84
|
-
spinner.fail('Permission denied. Try running with sudo:');
|
|
85
|
-
printInfo(` sudo anycloud update${targetVersion ? ` ${targetVersion}` : ''}`);
|
|
86
|
-
await unlink(tempPath).catch(() => { });
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
throw err;
|
|
16
|
+
printInfo(`Current version: ${packageJson.version}`);
|
|
17
|
+
const env = { ...process.env };
|
|
18
|
+
if (targetVersion) {
|
|
19
|
+
env.ANYCLOUD_VERSION = targetVersion;
|
|
20
|
+
printInfo(`Target version: ${targetVersion}`);
|
|
90
21
|
}
|
|
91
|
-
|
|
92
|
-
|
|
22
|
+
execSync('curl -fsSL https://get.anycloud.sh | bash', {
|
|
23
|
+
stdio: 'inherit',
|
|
24
|
+
env,
|
|
25
|
+
});
|
|
93
26
|
}
|
|
94
27
|
catch (error) {
|
|
95
28
|
printError(`Update failed: ${error.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,QAAQ,CAAC,WAAW,EAAE,+CAA+C,CAAC;SACtE,WAAW,CACV,OAAO,EACP;;;;CAIL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,aAAsB,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,SAAS,CAAC,oBAAoB,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAErD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC/B,IAAI,aAAa,EAAE,CAAC;gBAClB,GAAG,CAAC,gBAAgB,GAAG,aAAa,CAAC;gBACrC,SAAS,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;YAChD,CAAC;YAED,QAAQ,CAAC,2CAA2C,EAAE;gBACpD,KAAK,EAAE,SAAS;gBAChB,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,kBAAmB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import { createRunCommand } from './commands/run.js';
|
|
4
4
|
import { createBuildCommand } from './commands/build.js';
|
|
5
|
-
import { createListCommand } from './commands/list.js';
|
|
6
5
|
import { createStatusCommand } from './commands/status.js';
|
|
7
6
|
import { createLogsCommand } from './commands/logs.js';
|
|
8
7
|
import { createTerminateCommand } from './commands/terminate.js';
|
|
9
|
-
import { createUpgradeCommand } from './commands/upgrade.js';
|
|
10
8
|
import { createUpdateCommand } from './commands/update.js';
|
|
11
9
|
import { createCredentialsCommand } from './commands/credentials/index.js';
|
|
12
10
|
import { createConfigCommand } from './commands/config/index.js';
|
|
@@ -53,11 +51,9 @@ program.addCommand(createLoginCommand());
|
|
|
53
51
|
// program.addCommand(_createServeCommand()); // Not functional yet
|
|
54
52
|
program.addCommand(createBuildCommand());
|
|
55
53
|
program.addCommand(createRunCommand());
|
|
56
|
-
program.addCommand(createListCommand());
|
|
57
54
|
program.addCommand(createStatusCommand());
|
|
58
55
|
program.addCommand(createLogsCommand());
|
|
59
56
|
program.addCommand(createTerminateCommand());
|
|
60
|
-
program.addCommand(createUpgradeCommand());
|
|
61
57
|
program.addCommand(createUpdateCommand());
|
|
62
58
|
program.addCommand(createCredentialsCommand());
|
|
63
59
|
program.addCommand(createConfigCommand());
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,12 +22,11 @@ export async function createDeployment(image, cloudConfigs, accessToken, configN
|
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
* List deployments for
|
|
25
|
+
* List all deployments for the authenticated user (fast KV-based)
|
|
26
26
|
* POST /v1/list
|
|
27
27
|
*/
|
|
28
|
-
export async function listDeployments(
|
|
28
|
+
export async function listDeployments(accessToken, daemonVersion) {
|
|
29
29
|
const payload = {
|
|
30
|
-
anycloudConfigs,
|
|
31
30
|
accessToken,
|
|
32
31
|
daemonVersion,
|
|
33
32
|
};
|