🌳
pt0/deployF/dockerF/imageFromDfA.mts
3import type { AppCfg } from "../k8sF/ctxF/appCfgCtxF.mts"
5const dfFromAppCfg = ({dockerFilesA}: Pick<AppCfg, 'dockerFilesA'>) => {
6 const a = Array.isArray(dockerFilesA) ? dockerFilesA : dockerFilesA ? [dockerFilesA] : []
7 return a.at(-1)
8}
10const getAppCfgRnt = async (appConfig: AppCfg) => {
11 const lastDf = dfFromAppCfg(appConfig)
12 if (!lastDf) return {} as Record<string, unknown>
13 return await (lastDf as {getRnt: () => Promise<Record<string, unknown>>}).getRnt()
16export const imageFromAppCfg = async (appConfig: AppCfg & Record<string, unknown>) => {
17 const {action, dockerFilesA, dockerBuilder} = appConfig
18 if (!dockerFilesA && dockerBuilder) {
19 const built = await dockerBuilder()
20 appConfig.dockerFilesA = built
21 const ctx = getAppCfg()
22 if (ctx) (ctx as Record<string, unknown>).dockerFilesA = built
23 }
24 if ((appConfig.dockerFilesA as Record<string, unknown> | undefined)?.imageReused) {
25 ;(appConfig as Record<string, unknown>).imageReused = true
26 const ctx = getAppCfg()
27 if (ctx) (ctx as Record<string, unknown>).imageReused = true
28 }
29 const rnt = await getAppCfgRnt(appConfig)
30 const {repo_name_tag: image} = rnt as {repo_name_tag?: string}
31 throwIf(() => action == 'apply' && !image)
32 return {image}