Files
kuber/command/export.ts
T
2026-08-28 21:19:50 +07:00

35 lines
1.0 KiB
TypeScript

import { defineCommand } from "citty";
import { resolve } from "node:path";
import { YAML } from "bun";
import { sortResources } from "../lib/apply";
import { ctx } from "../lib/context";
import { renderResources } from "../lib/render";
function toDocumentYaml(resources: Parameters<typeof sortResources>[0]): string {
return `${sortResources(resources)
.map((resource) => YAML.stringify(resource, null, 2).trimEnd())
.join("\n---\n")}\n`;
}
export const exportCommand = defineCommand({
meta: {
name: "export",
description: "Write rendered manifests to a YAML file",
},
args: {
output: {
type: "string",
alias: "o",
description: "Output YAML file path",
},
},
async run({ args }) {
const { project, compose, cwd } = ctx();
const resources = await renderResources(project, await compose(), cwd);
const outputPath = resolve(cwd, args.output || `${project}.yaml`);
await Bun.write(outputPath, toDocumentYaml(resources));
console.log(outputPath);
},
});