1import { envHToA } from "../../k8sF/envHToAF.mts";2import { deployTmpl } from "../../k8sF/genericDeploymentF.mts";3import { pvcVolumeMounts } from '../../k8sF/pvcVolumeMountsF.mts'4import * as mcActions from "./actionsF.mts";5import * as _ from 'lodash-es'6import { getKlusterCtx } from "../../k8sF/ctxF/klusterCtxF.mts";7import { getAction } from '../../ctxF/actionCtxF.mts'8import { genericNodePortTmpl } from '../../k8sF/generic1NodePortTmplF.mts'9import { appCfgCtx, getAppCfg} from "../../k8sF/ctxF/appCfgCtxF.mts";10import { kubeActionPvc } from '../../k8sF/pvcF/kubeActionPvcF.mts'11import { resourcesActionLite } from '../../k8sF/resourcesActionLiteF.mts'12import { cliHelp } from '../../cliF/cliHelpF.mts'13import { resourcesActionsH } from '../../k8sF/isActionSupportedF.mts'14import { isDirectlyRun } from '../../../serverF/isDirectlyRunF.mts'16const image = 'itzg/minecraft-server'17const name = 'minecraft'18const portNo = 3041120export const eptMinecraftSync = async ({importMetaUrl, hostname}: {importMetaUrl?: string, hostname?: string}={}) => {21 if (importMetaUrl && !isDirectlyRun(importMetaUrl)) return {importMetaUrl, epName: 'minecraft'}22 const {volumeMounts, volumes} = pvcVolumeMounts({name, mountPath: '/data'})24 const resources = [25 deployTmpl({26 volumes, name,27 strategy: {28 type: 'Recreate'29 },30 initContainers: [{31 name: 'fix-permissions',32 image: 'busybox',33 command: ['sh', '-c', 'chown -R 1000:1000 /data/world || true'],34 volumeMounts35 }],36 containers: [{37 name, image,38 volumeMounts,40 EULA: 'TRUE',41 VERSION: '1.21.11',42 })43 }],44 }),45 genericNodePortTmpl({name, nodePort: portNo, svcPort: 25565})46 ]49 await kubeActionPvc({name, sizeGb: 500})52 // Handle mcActions without epscope commands from ptDeployActionsF53 const resActionsH = resourcesActionsH() as Record<string, unknown>54 if (!resActionsH[action]) {55 const matchedAction = (mcActions as Record<string, (() => Promise<void>) | undefined>)[action]56 if (matchedAction) {57 await matchedAction()58 return59 }61 return62 }64 const resA = await resourcesActionLite({resources, noDelPvcs: true}) 65 if (_.includes(['apply', 'info'], action) && !_.includes(resA, undefined)) {66 console.log(`should be hosted @ ${hostname}:${portNo}`) 67 }69}