UNPKG

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.

77 lines (68 loc) 2.54 kB
import { GpuCloudVolume } from "@/modules/gpu-cloud/domain/volume"; import { deleteGpuCloudVolume } from "@/modules/gpu-cloud/use-cases/delete-volume"; import { listGpuCloudVolumes } from "@/modules/gpu-cloud/use-cases/list-volumes"; import { search } from "@inquirer/prompts"; import { Command } from "commander"; import console from "console"; const printVolume = (volume: GpuCloudVolume) => { return `${volume.name} (${volume.capacity} GB) | ${volume.availabilityZone} | ${volume.region.name} | $${volume.hourlyPrice.toFixed(2)}/hour`; }; export function createGpuCloudVolumeDeleteCommand( gpuCloudVolumeCommand: Command ) { 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.log("Loading volumes..."); const result = await listGpuCloudVolumes.execute(); if (result.isLeft()) { console.error(result.value.message); return; } const volumes = result.value; if (volumes.length === 0) { console.log("No volumes found"); return; } const volume = await 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 deleteGpuCloudVolume.execute(volumeId); if (result.isLeft()) { console.error(result.value.message); return; } console.log("Volume deleted successfully"); }); }