From 17e62065a34170942816a4abcbad8c28af03e2b4 Mon Sep 17 00:00:00 2001 From: Tim Smart Date: Fri, 22 Apr 2022 12:15:40 +1200 Subject: [PATCH] feat: helper for parsing bundle yaml --- packages/k8s/src/bundles.ts | 19 +++++++++++++++++++ packages/k8s/src/index.ts | 1 + 2 files changed, 20 insertions(+) create mode 100644 packages/k8s/src/bundles.ts diff --git a/packages/k8s/src/bundles.ts b/packages/k8s/src/bundles.ts new file mode 100644 index 0000000..e9e43de --- /dev/null +++ b/packages/k8s/src/bundles.ts @@ -0,0 +1,19 @@ +import { loadAll } from "js-yaml"; +import { readFileSync } from "fs"; +import { IResource } from "./resources"; + +export const bundleFromFile = (file: string, prefix = 10) => { + const content = readFileSync(file, { encoding: "utf8" }); + const decoded = loadAll(content) as IResource[]; + let counter = prefix; + + return decoded.reduce((acc, resource) => { + const suffix = resource.kind?.toLowerCase() ?? "bundle"; + const name = `${counter++}-${suffix}`; + + return { + ...acc, + [name]: resource, + }; + }, {} as Record); +}; diff --git a/packages/k8s/src/index.ts b/packages/k8s/src/index.ts index 19b83eb..4de00d7 100644 --- a/packages/k8s/src/index.ts +++ b/packages/k8s/src/index.ts @@ -1,3 +1,4 @@ +export * from "./bundles"; export * from "./common"; export * from "./configmaps"; export * from "./containers";