sesterce-cli
Version:
A powerful command-line interface tool for managing Sesterce Cloud services. Sesterce CLI provides easy access to GPU cloud instances, AI inference services, container registries, and SSH key management directly from your terminal.
68 lines • 3.08 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createGpuCloudVolumeDeleteCommand = createGpuCloudVolumeDeleteCommand;
const delete_volume_1 = require("@/modules/gpu-cloud/use-cases/delete-volume");
const list_volumes_1 = require("@/modules/gpu-cloud/use-cases/list-volumes");
const prompts_1 = require("@inquirer/prompts");
const console_1 = __importDefault(require("console"));
const printVolume = (volume) => {
return `${volume.name} (${volume.capacity} GB) | ${volume.availabilityZone} | ${volume.region.name} | $${volume.hourlyPrice.toFixed(2)}/hour`;
};
function createGpuCloudVolumeDeleteCommand(gpuCloudVolumeCommand) {
gpuCloudVolumeCommand
.command("delete")
.description("Delete a GPU Cloud volume")
.option("-i, --volume-id <volumeId>", "The ID of the volume to delete")
.action(async (args) => {
let volumeId = args.volumeId;
if (!volumeId) {
console_1.default.log("Loading volumes...");
const result = await list_volumes_1.listGpuCloudVolumes.execute();
if (result.isLeft()) {
console_1.default.error(result.value.message);
return;
}
const volumes = result.value;
if (volumes.length === 0) {
console_1.default.log("No volumes found");
return;
}
const volume = await (0, prompts_1.search)({
message: "Select a volume to delete",
source: async (input, { signal }) => {
if (!input) {
return volumes.map((volume) => ({
name: printVolume(volume),
value: volume,
}));
}
return volumes
.filter((volume) => volume.name.toLowerCase().includes(input.toLowerCase()) ||
volume.region.name
.toLowerCase()
.includes(input.toLowerCase()) ||
volume.hourlyPrice.toFixed(2).includes(input) ||
volume.capacity.toString().includes(input) ||
volume.availabilityZone
.toLowerCase()
.includes(input.toLowerCase()))
.map((volume) => ({
name: printVolume(volume),
value: volume,
}));
},
});
volumeId = volume._id;
}
const result = await delete_volume_1.deleteGpuCloudVolume.execute(volumeId);
if (result.isLeft()) {
console_1.default.error(result.value.message);
return;
}
console_1.default.log("Volume deleted successfully");
});
}
//# sourceMappingURL=delete.js.map