anycloud 0.0.25 → 0.0.27
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/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 +42 -178
- package/dist/cli/commands/config/edit.js.map +1 -1
- package/dist/cli/commands/config/list.js +2 -31
- package/dist/cli/commands/config/list.js.map +1 -1
- package/dist/cli/commands/config/new.js +42 -77
- package/dist/cli/commands/config/new.js.map +1 -1
- package/dist/cli/commands/config/remove.js +1 -12
- package/dist/cli/commands/config/remove.js.map +1 -1
- package/dist/cli/commands/list.js +4 -2
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/run.js +16 -12
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/ssh.js +23 -11
- package/dist/cli/commands/ssh.js.map +1 -1
- package/dist/cli/commands/status.js +55 -16
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/terminate.js +42 -58
- package/dist/cli/commands/terminate.js.map +1 -1
- package/dist/cli/config.js +5 -4
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/services/api-client.js +28 -11
- package/dist/cli/services/api-client.js.map +1 -1
- package/dist/cli/services/config.js +75 -50
- package/dist/cli/services/config.js.map +1 -1
- package/dist/cli/services/slurp/gcp.js.map +1 -1
- package/dist/cli/utils/output.js +4 -4
- package/dist/cli/utils/output.js.map +1 -1
- package/dist/shared/id-generator.js +20 -4
- package/dist/shared/id-generator.js.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/dist/shared/utils.js +11 -0
- package/dist/shared/utils.js.map +1 -0
- package/package.json +5 -3
- package/dist/cli/commands/upgrade.js +0 -106
- package/dist/cli/commands/upgrade.js.map +0 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import prompts from 'prompts';
|
|
3
3
|
import { requireCredentials } from '../../services/credentials.js';
|
|
4
|
-
import { loadDeploymentProfiles, } from '../../services/config.js';
|
|
5
|
-
import { printSuccess, printInfo, printError, selectWithAutocomplete, selectCredentials, promptDiskSize, promptSpot,
|
|
6
|
-
import { saveDeploymentProfiles } from './new.js';
|
|
4
|
+
import { loadDeploymentProfiles, saveDeploymentProfiles, } from '../../services/config.js';
|
|
5
|
+
import { printSuccess, printInfo, printError, selectWithAutocomplete, selectCredentials, promptDiskSize, promptSpot, } from '../../utils/output.js';
|
|
7
6
|
import { CloudConfig } from '../../../shared/types.js';
|
|
8
7
|
export function createEditCommand() {
|
|
9
8
|
return new Command('edit')
|
|
@@ -17,10 +16,9 @@ Examples:
|
|
|
17
16
|
Output:
|
|
18
17
|
Editing profile: my-app
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
> Remove region
|
|
19
|
+
Select credentials: prod-aws
|
|
20
|
+
Region: us-west-2
|
|
21
|
+
VM type: t3.medium
|
|
24
22
|
|
|
25
23
|
✓ Profile "my-app" updated successfully!
|
|
26
24
|
`)
|
|
@@ -42,7 +40,6 @@ Output:
|
|
|
42
40
|
choices: profileNames.map((n) => ({
|
|
43
41
|
title: n,
|
|
44
42
|
value: n,
|
|
45
|
-
description: `${profiles[n].length} region(s)`,
|
|
46
43
|
})),
|
|
47
44
|
});
|
|
48
45
|
if (!selection.profileName) {
|
|
@@ -60,46 +57,47 @@ Output:
|
|
|
60
57
|
console.log('');
|
|
61
58
|
// Load credentials for selection
|
|
62
59
|
const credentials = await requireCredentials();
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (
|
|
60
|
+
const entry = profiles[name];
|
|
61
|
+
printInfo('Press Enter to keep current value');
|
|
62
|
+
console.log('');
|
|
63
|
+
// Edit credentials
|
|
64
|
+
const credName = await selectCredentials(credentials, entry.credentialsName);
|
|
65
|
+
if (!credName) {
|
|
66
|
+
process.exit(0);
|
|
67
|
+
}
|
|
68
|
+
const selectedCred = credentials[credName];
|
|
69
|
+
// Edit region
|
|
70
|
+
const regions = CloudConfig.getRegions(selectedCred.cloudProvider);
|
|
71
|
+
const region = await selectWithAutocomplete('Select a region', regions.map((r) => ({ title: r, value: r })), entry.region ? regions.indexOf(entry.region) : 0);
|
|
72
|
+
if (region === undefined) {
|
|
73
|
+
process.exit(0);
|
|
74
|
+
}
|
|
75
|
+
// Edit VM type
|
|
76
|
+
const vmTypes = CloudConfig.getVMTypes(selectedCred.cloudProvider, region);
|
|
77
|
+
const vmType = await selectWithAutocomplete('Select a VM type', vmTypes.map((v) => ({ title: v, value: v })), entry.vmType ? vmTypes.indexOf(entry.vmType) : 0);
|
|
78
|
+
if (vmType === undefined) {
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
// Edit spot
|
|
82
|
+
const spot = await promptSpot(entry.spot);
|
|
83
|
+
if (spot === undefined) {
|
|
87
84
|
process.exit(0);
|
|
88
85
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
break;
|
|
94
|
-
case 'edit':
|
|
95
|
-
await editRegion(entries, credentials);
|
|
96
|
-
break;
|
|
97
|
-
case 'remove':
|
|
98
|
-
await removeRegion(entries);
|
|
99
|
-
break;
|
|
86
|
+
// Edit disk size
|
|
87
|
+
const diskSizeGb = await promptDiskSize(entry.diskSizeGb);
|
|
88
|
+
if (diskSizeGb === undefined) {
|
|
89
|
+
process.exit(0);
|
|
100
90
|
}
|
|
91
|
+
// Update entry
|
|
92
|
+
const updatedEntry = {
|
|
93
|
+
credentialsName: credName,
|
|
94
|
+
...(region && { region }),
|
|
95
|
+
...(vmType && { vmType }),
|
|
96
|
+
...(spot && { spot }),
|
|
97
|
+
...(diskSizeGb && { diskSizeGb }),
|
|
98
|
+
};
|
|
101
99
|
// Save updated profiles
|
|
102
|
-
profiles[name] =
|
|
100
|
+
profiles[name] = updatedEntry;
|
|
103
101
|
await saveDeploymentProfiles(profiles);
|
|
104
102
|
console.log('');
|
|
105
103
|
printSuccess(`Profile "${name}" updated successfully!`);
|
|
@@ -110,138 +108,4 @@ Output:
|
|
|
110
108
|
}
|
|
111
109
|
});
|
|
112
110
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Add a new region to the profile
|
|
115
|
-
*/
|
|
116
|
-
async function addRegion(entries, credentials) {
|
|
117
|
-
console.log('');
|
|
118
|
-
printInfo('Configure new region:');
|
|
119
|
-
console.log('');
|
|
120
|
-
// Select credentials
|
|
121
|
-
const credName = await selectCredentials(credentials);
|
|
122
|
-
if (!credName) {
|
|
123
|
-
process.exit(0);
|
|
124
|
-
}
|
|
125
|
-
const selectedCred = credentials[credName];
|
|
126
|
-
// Prompt for region
|
|
127
|
-
const regions = CloudConfig.getRegions(selectedCred.cloudProvider);
|
|
128
|
-
const region = await selectWithAutocomplete('Select a region', regions.map((r) => ({ title: r, value: r })));
|
|
129
|
-
if (region === undefined) {
|
|
130
|
-
process.exit(0);
|
|
131
|
-
}
|
|
132
|
-
// Prompt for VM type
|
|
133
|
-
const vmTypes = CloudConfig.getVMTypes(selectedCred.cloudProvider, region);
|
|
134
|
-
const vmType = await selectWithAutocomplete('Select a VM type', vmTypes.map((v) => ({ title: v, value: v })));
|
|
135
|
-
if (vmType === undefined) {
|
|
136
|
-
process.exit(0);
|
|
137
|
-
}
|
|
138
|
-
// Prompt for spot instances
|
|
139
|
-
const spot = await promptSpot();
|
|
140
|
-
if (spot === undefined) {
|
|
141
|
-
process.exit(0);
|
|
142
|
-
}
|
|
143
|
-
// Prompt for disk size (optional)
|
|
144
|
-
const diskSizeGb = await promptDiskSize();
|
|
145
|
-
if (diskSizeGb === undefined) {
|
|
146
|
-
process.exit(0);
|
|
147
|
-
}
|
|
148
|
-
// Build entry
|
|
149
|
-
const entry = {
|
|
150
|
-
credentialsName: credName,
|
|
151
|
-
...(region && { region }),
|
|
152
|
-
...(vmType && { vmType }),
|
|
153
|
-
...(spot && { spot }),
|
|
154
|
-
...(diskSizeGb && { diskSizeGb }),
|
|
155
|
-
};
|
|
156
|
-
entries.push(entry);
|
|
157
|
-
printSuccess('Region added');
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Edit an existing region
|
|
161
|
-
*/
|
|
162
|
-
async function editRegion(entries, credentials) {
|
|
163
|
-
if (entries.length === 0) {
|
|
164
|
-
printError('No regions to edit.');
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
// Select which region to edit
|
|
168
|
-
const index = await selectRegionEntry(entries, 'Select region to edit:');
|
|
169
|
-
if (index === undefined) {
|
|
170
|
-
process.exit(0);
|
|
171
|
-
}
|
|
172
|
-
const entry = entries[index];
|
|
173
|
-
console.log('');
|
|
174
|
-
printInfo('Press Enter to keep current value');
|
|
175
|
-
console.log('');
|
|
176
|
-
// Edit credentials
|
|
177
|
-
const credName = await selectCredentials(credentials, entry.credentialsName);
|
|
178
|
-
if (!credName) {
|
|
179
|
-
process.exit(0);
|
|
180
|
-
}
|
|
181
|
-
const selectedCred = credentials[credName];
|
|
182
|
-
// Edit region
|
|
183
|
-
const regions = CloudConfig.getRegions(selectedCred.cloudProvider);
|
|
184
|
-
const region = await selectWithAutocomplete('Select a region', regions.map((r) => ({ title: r, value: r })), entry.region ? regions.indexOf(entry.region) : 0);
|
|
185
|
-
if (region === undefined) {
|
|
186
|
-
process.exit(0);
|
|
187
|
-
}
|
|
188
|
-
// Edit VM type
|
|
189
|
-
const vmTypes = CloudConfig.getVMTypes(selectedCred.cloudProvider, region);
|
|
190
|
-
const vmType = await selectWithAutocomplete('Select a VM type', vmTypes.map((v) => ({ title: v, value: v })), entry.vmType ? vmTypes.indexOf(entry.vmType) : 0);
|
|
191
|
-
if (vmType === undefined) {
|
|
192
|
-
process.exit(0);
|
|
193
|
-
}
|
|
194
|
-
// Edit spot
|
|
195
|
-
const spot = await promptSpot(entry.spot);
|
|
196
|
-
if (spot === undefined) {
|
|
197
|
-
process.exit(0);
|
|
198
|
-
}
|
|
199
|
-
// Edit disk size
|
|
200
|
-
const diskSizeGb = await promptDiskSize(entry.diskSizeGb);
|
|
201
|
-
if (diskSizeGb === undefined) {
|
|
202
|
-
process.exit(0);
|
|
203
|
-
}
|
|
204
|
-
// Update entry
|
|
205
|
-
const updatedEntry = {
|
|
206
|
-
credentialsName: credName,
|
|
207
|
-
...(region && { region }),
|
|
208
|
-
...(vmType && { vmType }),
|
|
209
|
-
...(spot && { spot }),
|
|
210
|
-
...(diskSizeGb && { diskSizeGb }),
|
|
211
|
-
};
|
|
212
|
-
entries[index] = updatedEntry;
|
|
213
|
-
printSuccess('Region updated');
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Remove a region from the profile
|
|
217
|
-
*/
|
|
218
|
-
async function removeRegion(entries) {
|
|
219
|
-
if (entries.length === 0) {
|
|
220
|
-
printError('No regions to remove.');
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
if (entries.length === 1) {
|
|
224
|
-
printError('Cannot remove the only region in a profile.');
|
|
225
|
-
printInfo('Use "anycloud config remove" to delete the entire profile.');
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
// Select which region to remove
|
|
229
|
-
const index = await selectRegionEntry(entries, 'Select region to remove:');
|
|
230
|
-
if (index === undefined) {
|
|
231
|
-
process.exit(0);
|
|
232
|
-
}
|
|
233
|
-
// Confirm removal
|
|
234
|
-
const confirm = await prompts({
|
|
235
|
-
type: 'confirm',
|
|
236
|
-
name: 'value',
|
|
237
|
-
message: 'Are you sure you want to remove this region?',
|
|
238
|
-
initial: false,
|
|
239
|
-
});
|
|
240
|
-
if (!confirm.value) {
|
|
241
|
-
printInfo('Cancelled');
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
entries.splice(index, 1);
|
|
245
|
-
printSuccess('Region removed');
|
|
246
|
-
}
|
|
247
111
|
//# sourceMappingURL=edit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,sBAAsB,GAEvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,UAAU,EACV,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,UAAU,
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
import { loadDeploymentProfiles, profilesToTableEntries, } from '../../services/config.js';
|
|
2
|
+
import { loadDeploymentProfiles, profilesToTableEntries, getActiveConfigFile, } from '../../services/config.js';
|
|
5
3
|
import { printSuccess, printInfo, printError, printCloudConfigsTable, } from '../../utils/output.js';
|
|
6
4
|
import { resolve } from 'path';
|
|
7
|
-
import { CONFIG_FILE } from '../../config.js';
|
|
8
5
|
export function createListCommand() {
|
|
9
6
|
return new Command('list')
|
|
10
7
|
.description('📋 List profiles')
|
|
@@ -15,20 +12,10 @@ Examples:
|
|
|
15
12
|
Output:
|
|
16
13
|
✓ Found 2 deployment profile(s):
|
|
17
14
|
|
|
18
|
-
┌─────────────────────────┬──────────┐
|
|
19
|
-
│ Profile │ Regions │
|
|
20
|
-
├─────────────────────────┼──────────┤
|
|
21
|
-
│ my-app │ 2 │
|
|
22
|
-
│ api-service │ 1 │
|
|
23
|
-
└─────────────────────────┴──────────┘
|
|
24
|
-
|
|
25
|
-
Region Configurations:
|
|
26
|
-
|
|
27
15
|
┌────────────────────┬──────────────────┬──────────────────┬────────────────────┐
|
|
28
16
|
│ Config │ Credentials │ Region │ VM Type │
|
|
29
17
|
├────────────────────┼──────────────────┼──────────────────┼────────────────────┤
|
|
30
18
|
│ my-app │ prod-aws │ us-west-2 │ t3.medium │
|
|
31
|
-
│ my-app │ eu-aws │ eu-west-1 │ t3.large │
|
|
32
19
|
│ api-service │ prod-gcp │ us-central1 │ e2-medium │
|
|
33
20
|
└────────────────────┴──────────────────┴──────────────────┴────────────────────┘
|
|
34
21
|
`)
|
|
@@ -38,29 +25,13 @@ Output:
|
|
|
38
25
|
const profileNames = Object.keys(profiles);
|
|
39
26
|
if (profileNames.length === 0) {
|
|
40
27
|
printInfo('No deployment profiles found.');
|
|
41
|
-
printInfo(`Create profiles in ${resolve(process.cwd(),
|
|
28
|
+
printInfo(`Create profiles in ${resolve(process.cwd(), getActiveConfigFile())} or use "anycloud config new"`);
|
|
42
29
|
return;
|
|
43
30
|
}
|
|
44
31
|
printSuccess(`Found ${profileNames.length} deployment profile(s):`);
|
|
45
32
|
console.log('');
|
|
46
|
-
// Create profiles overview table
|
|
47
|
-
const profilesTable = new Table({
|
|
48
|
-
head: ['Profile', 'Regions'].map((h) => chalk.cyan(h)),
|
|
49
|
-
colWidths: [25, 12],
|
|
50
|
-
style: {
|
|
51
|
-
head: [],
|
|
52
|
-
border: ['dim'],
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
profileNames.forEach((name) => {
|
|
56
|
-
const entries = profiles[name];
|
|
57
|
-
profilesTable.push([name, entries.length.toString()]);
|
|
58
|
-
});
|
|
59
|
-
console.log(profilesTable.toString());
|
|
60
|
-
console.log('');
|
|
61
33
|
// Create cloud configurations table using shared utility
|
|
62
34
|
printCloudConfigsTable(profilesToTableEntries(profiles), {
|
|
63
|
-
title: 'Region Configurations:',
|
|
64
35
|
showCredentials: true,
|
|
65
36
|
});
|
|
66
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,UAAU,EACV,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;CAaL,CACI;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAsB,EAAE,CAAC;YAChD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE3C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,SAAS,CAAC,+BAA+B,CAAC,CAAC;gBAC3C,SAAS,CACP,sBAAsB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,EAAE,CAAC,+BAA+B,CACnG,CAAC;gBACF,OAAO;YACT,CAAC;YAED,YAAY,CAAC,SAAS,YAAY,CAAC,MAAM,yBAAyB,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,yDAAyD;YACzD,sBAAsB,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE;gBACvD,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,4BAA6B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -2,9 +2,8 @@ import { Command } from 'commander';
|
|
|
2
2
|
import prompts from 'prompts';
|
|
3
3
|
import { resolve } from 'path';
|
|
4
4
|
import { requireCredentials } from '../../services/credentials.js';
|
|
5
|
-
import { loadDeploymentProfiles, } from '../../services/config.js';
|
|
5
|
+
import { loadDeploymentProfiles, saveDeploymentProfiles, getActiveConfigFile, } from '../../services/config.js';
|
|
6
6
|
import { printSuccess, printInfo, printError, selectWithAutocomplete, selectCredentials, promptDiskSize, promptSpot, } from '../../utils/output.js';
|
|
7
|
-
import { CONFIG_FILE } from '../../config.js';
|
|
8
7
|
import { CloudConfig } from '../../../shared/types.js';
|
|
9
8
|
/**
|
|
10
9
|
* Interactive config profile creation flow
|
|
@@ -43,70 +42,48 @@ export async function createConfigInteractive(name) {
|
|
|
43
42
|
}
|
|
44
43
|
printInfo(`Creating profile: ${name}`);
|
|
45
44
|
console.log('');
|
|
46
|
-
//
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const vmTypes = CloudConfig.getVMTypes(selectedCred.cloudProvider, region);
|
|
69
|
-
const vmType = await selectWithAutocomplete('Select a VM type', vmTypes.map((v) => ({ title: v, value: v })));
|
|
70
|
-
if (vmType === undefined) {
|
|
71
|
-
process.exit(0);
|
|
72
|
-
}
|
|
73
|
-
// Prompt for spot instances
|
|
74
|
-
const spot = await promptSpot();
|
|
75
|
-
if (spot === undefined) {
|
|
76
|
-
process.exit(0);
|
|
77
|
-
}
|
|
78
|
-
// Prompt for disk size (optional)
|
|
79
|
-
const diskSizeGb = await promptDiskSize();
|
|
80
|
-
if (diskSizeGb === undefined) {
|
|
81
|
-
process.exit(0);
|
|
82
|
-
}
|
|
83
|
-
// Build entry
|
|
84
|
-
const entry = {
|
|
85
|
-
credentialsName: credName,
|
|
86
|
-
...(region && { region }),
|
|
87
|
-
...(vmType && { vmType }),
|
|
88
|
-
...(spot && { spot }),
|
|
89
|
-
...(diskSizeGb && { diskSizeGb }),
|
|
90
|
-
};
|
|
91
|
-
entries.push(entry);
|
|
92
|
-
// Ask if user wants to add another region
|
|
93
|
-
const addAnother = await prompts({
|
|
94
|
-
type: 'confirm',
|
|
95
|
-
name: 'value',
|
|
96
|
-
message: 'Add another region to this profile?',
|
|
97
|
-
initial: false,
|
|
98
|
-
});
|
|
99
|
-
if (!addAnother.value) {
|
|
100
|
-
addMore = false;
|
|
101
|
-
}
|
|
45
|
+
// Select credentials
|
|
46
|
+
const credName = await selectCredentials(credentials);
|
|
47
|
+
if (!credName) {
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
const selectedCred = credentials[credName];
|
|
51
|
+
// Prompt for region
|
|
52
|
+
const regions = CloudConfig.getRegions(selectedCred.cloudProvider);
|
|
53
|
+
const region = await selectWithAutocomplete('Select a region', regions.map((r) => ({ title: r, value: r })));
|
|
54
|
+
if (region === undefined) {
|
|
55
|
+
process.exit(0);
|
|
56
|
+
}
|
|
57
|
+
// Prompt for VM type
|
|
58
|
+
const vmTypes = CloudConfig.getVMTypes(selectedCred.cloudProvider, region);
|
|
59
|
+
const vmType = await selectWithAutocomplete('Select a VM type', vmTypes.map((v) => ({ title: v, value: v })));
|
|
60
|
+
if (vmType === undefined) {
|
|
61
|
+
process.exit(0);
|
|
62
|
+
}
|
|
63
|
+
// Prompt for spot instances
|
|
64
|
+
const spot = await promptSpot();
|
|
65
|
+
if (spot === undefined) {
|
|
66
|
+
process.exit(0);
|
|
102
67
|
}
|
|
68
|
+
// Prompt for disk size (optional)
|
|
69
|
+
const diskSizeGb = await promptDiskSize();
|
|
70
|
+
if (diskSizeGb === undefined) {
|
|
71
|
+
process.exit(0);
|
|
72
|
+
}
|
|
73
|
+
// Build entry
|
|
74
|
+
const entry = {
|
|
75
|
+
credentialsName: credName,
|
|
76
|
+
...(region && { region }),
|
|
77
|
+
...(vmType && { vmType }),
|
|
78
|
+
...(spot && { spot }),
|
|
79
|
+
...(diskSizeGb && { diskSizeGb }),
|
|
80
|
+
};
|
|
103
81
|
// Save profile
|
|
104
|
-
profiles[name] =
|
|
82
|
+
profiles[name] = entry;
|
|
105
83
|
await saveDeploymentProfiles(profiles);
|
|
106
84
|
console.log('');
|
|
107
85
|
printSuccess(`Profile "${name}" created successfully!`);
|
|
108
|
-
printInfo(`
|
|
109
|
-
printInfo(`Saved to: ${resolve(process.cwd(), CONFIG_FILE)}`);
|
|
86
|
+
printInfo(`Saved to: ${resolve(process.cwd(), getActiveConfigFile())}`);
|
|
110
87
|
return name;
|
|
111
88
|
}
|
|
112
89
|
export function createNewCommand() {
|
|
@@ -121,16 +98,12 @@ Examples:
|
|
|
121
98
|
Output:
|
|
122
99
|
Creating profile: my-app
|
|
123
100
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
VM type: t3.medium
|
|
128
|
-
|
|
129
|
-
Add another region to this profile? (y/n): n
|
|
101
|
+
Select credentials: prod-aws
|
|
102
|
+
Region: us-west-2
|
|
103
|
+
VM type: t3.medium
|
|
130
104
|
|
|
131
105
|
✓ Profile "my-app" created successfully!
|
|
132
|
-
|
|
133
|
-
Saved to: /path/to/anycloud.json
|
|
106
|
+
Saved to: /path/to/anycloud.yaml
|
|
134
107
|
`)
|
|
135
108
|
.action(async (name) => {
|
|
136
109
|
try {
|
|
@@ -142,12 +115,4 @@ Output:
|
|
|
142
115
|
}
|
|
143
116
|
});
|
|
144
117
|
}
|
|
145
|
-
/**
|
|
146
|
-
* Save deployment profiles to anycloud.json
|
|
147
|
-
*/
|
|
148
|
-
export async function saveDeploymentProfiles(profiles) {
|
|
149
|
-
const { writeFile } = await import('fs/promises');
|
|
150
|
-
const configPath = resolve(process.cwd(), CONFIG_FILE);
|
|
151
|
-
await writeFile(configPath, JSON.stringify(profiles, null, 2), 'utf-8');
|
|
152
|
-
}
|
|
153
118
|
//# sourceMappingURL=new.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import prompts from 'prompts';
|
|
3
|
-
import {
|
|
4
|
-
import { loadDeploymentProfiles, } from '../../services/config.js';
|
|
3
|
+
import { loadDeploymentProfiles, saveDeploymentProfiles, } from '../../services/config.js';
|
|
5
4
|
import { printSuccess, printInfo, printError } from '../../utils/output.js';
|
|
6
|
-
import { CONFIG_FILE } from '../../config.js';
|
|
7
5
|
export function createRemoveCommand() {
|
|
8
6
|
return new Command('remove')
|
|
9
7
|
.description('🗑️ Remove profile')
|
|
@@ -36,7 +34,6 @@ Output:
|
|
|
36
34
|
choices: profileNames.map((n) => ({
|
|
37
35
|
title: n,
|
|
38
36
|
value: n,
|
|
39
|
-
description: `${profiles[n].length} region(s)`,
|
|
40
37
|
})),
|
|
41
38
|
});
|
|
42
39
|
if (!selection.profileName) {
|
|
@@ -75,12 +72,4 @@ Output:
|
|
|
75
72
|
}
|
|
76
73
|
});
|
|
77
74
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Save deployment profiles to anycloud.json
|
|
80
|
-
*/
|
|
81
|
-
async function saveDeploymentProfiles(profiles) {
|
|
82
|
-
const { writeFile } = await import('fs/promises');
|
|
83
|
-
const configPath = resolve(process.cwd(), CONFIG_FILE);
|
|
84
|
-
await writeFile(configPath, JSON.stringify(profiles, null, 2), 'utf-8');
|
|
85
|
-
}
|
|
86
75
|
//# sourceMappingURL=remove.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/cli/commands/config/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,qBAAqB,CAAC;SAClC,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACnD,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,WAAW,CACV,OAAO,EACP;;;;;;;;;CASL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,OAA6B,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAsB,EAAE,CAAC;YAChD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE3C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,UAAU,CAAC,+BAA+B,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,iCAAiC;YACjC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;oBAC9B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,2BAA2B;oBACpC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAChC,KAAK,EAAE,CAAC;wBACR,KAAK,EAAE,CAAC;qBACT,CAAC,CAAC;iBACJ,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;gBACpC,CAAC;gBACD,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC;YAC/B,CAAC;YAED,0BAA0B;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,UAAU,CAAC,YAAY,IAAI,cAAc,CAAC,CAAC;gBAC3C,SAAS,CAAC,uBAAuB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,kCAAkC;YAClC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;oBAC5B,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,4CAA4C,IAAI,IAAI;oBAC7D,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,SAAS,CAAC,WAAW,CAAC,CAAC;oBACvB,OAAO;gBACT,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEtB,wBAAwB;YACxB,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YAEvC,YAAY,CAAC,YAAY,IAAI,yBAAyB,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,6BAA8B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -47,12 +47,13 @@ Examples:
|
|
|
47
47
|
region: 14,
|
|
48
48
|
zone: 6,
|
|
49
49
|
vmType: 24,
|
|
50
|
+
bucket: 16,
|
|
50
51
|
age: 6,
|
|
51
52
|
spot: 3,
|
|
52
53
|
};
|
|
53
54
|
// Print header
|
|
54
55
|
console.log('');
|
|
55
|
-
console.log(chalk.cyan(`${'ID'.padEnd(cols.id)}${'IMAGE'.padEnd(cols.image)}${'CLOUD'.padEnd(cols.cloud)}${'REGION'.padEnd(cols.region)}${'ZONE'.padEnd(cols.zone)}${'VM TYPE'.padEnd(cols.vmType)}${'AGE'.padEnd(cols.age)}SPOT STATE`));
|
|
56
|
+
console.log(chalk.cyan(`${'ID'.padEnd(cols.id)}${'IMAGE'.padEnd(cols.image)}${'CLOUD'.padEnd(cols.cloud)}${'REGION'.padEnd(cols.region)}${'ZONE'.padEnd(cols.zone)}${'VM TYPE'.padEnd(cols.vmType)}${'BUCKET'.padEnd(cols.bucket)}${'AGE'.padEnd(cols.age)}SPOT STATE`));
|
|
56
57
|
// Print rows
|
|
57
58
|
for (const d of deployments) {
|
|
58
59
|
const emoji = stateEmoji[d.state] || '❓';
|
|
@@ -73,9 +74,10 @@ Examples:
|
|
|
73
74
|
const region = (d.region || '-').padEnd(cols.region);
|
|
74
75
|
const zone = (d.availabilityZone || '-').padEnd(cols.zone);
|
|
75
76
|
const vmType = (d.vmType || '-').padEnd(cols.vmType);
|
|
77
|
+
const bucket = (d.bucketName || '-').padEnd(cols.bucket);
|
|
76
78
|
const ageStr = age.padEnd(cols.age);
|
|
77
79
|
const spot = d.spot ? '✓ ' : ' ';
|
|
78
|
-
console.log(`${id}${img}${cloud}${region}${zone}${vmType}${ageStr}${spot}${d.state} ${emoji}`);
|
|
80
|
+
console.log(`${id}${img}${cloud}${region}${zone}${vmType}${bucket}${ageStr}${spot}${d.state} ${emoji}`);
|
|
79
81
|
}
|
|
80
82
|
console.log('');
|
|
81
83
|
printInfo(`${deployments.length} deployment(s)`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,OAAO,EAAE,sDAAsD,CAAC;SACvE,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;SAClD,WAAW,CACV,OAAO,EACP;;;;;CAKL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,OAA6C,EAAE,EAAE;QAC9D,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,MAAM,GAAiC,OAAO,EAAE,GAAG;gBACvD,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,OAAO,EAAE,MAAM;oBACf,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,SAAS,CAAC;YAEhB,mBAAmB;YACnB,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YAE3C,oBAAoB;YACpB,MAAM,OAAO,GAAG,aAAa,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;YAChE,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC;gBACxC,WAAW;gBACX,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,MAAM;aACP,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,SAAS,CAAC,uBAAuB,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,gBAAgB;YAChB,MAAM,IAAI,GAAG;gBACX,EAAE,EAAE,EAAE;gBACN,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,EAAE;gBACV,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,CAAC;aACR,CAAC;YAEF,eAAe;YACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"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"}
|