import { defineCommand } from "citty"; import { Listr } from "listr2"; import { assertManagedNamespace } from "../lib/apply"; import { getProject, listManagedDeployments, scaleDeployment, } from "../lib/shared"; export const stop = defineCommand({ meta: { name: "stop", description: "Scale managed deployments to zero", }, async run() { await assertManagedNamespace(getProject()); const deployments = await listManagedDeployments(); if (deployments.length === 0) return; await new Listr([ { title: "Scale deployments", task: (_ctx, task) => { task.output = `${deployments.length} deployments queued`; return task.newListr( deployments.map((deployment) => ({ title: `Deployment ${deployment.metadata?.name}`, task: () => scaleDeployment(deployment.metadata!.name!, 0), })), { concurrent: false, exitOnError: true }, ); }, }, ]).run(); }, });