🌳
pt0/deployF/staticSiteF/eptEnsStaticSiteAI.mts
14export const eptEnsStaticSite = async ({importMetaUrl, publicDir = 'public', svcPortNo = 3000, ensName, getWallet, ipfsApiUrl, ipfsGatewayUrl, ...props}: {importMetaUrl: string, publicDir?: string, svcPortNo?: number, ensName?: string, getWallet?: () => any, ipfsApiUrl?: string, ipfsGatewayUrl?: string, [k: string]: any}) => {
15 const isEns = Boolean(ensName)
16 const isK8s = Boolean(props.kube_extHostname)
17 throwIf(() => isEns && isK8s, {ensName, kube_extHostname: props.kube_extHostname})
18 throwIf(() => !isEns && !isK8s, {ensName, kube_extHostname: props.kube_extHostname})
20 const fullConfig = {importMetaUrl, publicDir, svcPortNo, ensName, getWallet, ipfsApiUrl, ipfsGatewayUrl, ...props}
21 if (shouldReturnConfig(importMetaUrl)) return fullConfig
23 const {publicDir: root} = setupStaticSiteCtx({importMetaUrl, publicDir, svcPortNo, ...props})
25 const action = props.action ?? getAction()
27 if (isEns) {
28 const ensInfo = async () => doEnsInfo({ensName: ensName!})
29 ensInfo.cliDescript = 'show current ENS contenthash'
30 const ensApply = async () => doEnsApply({uploadDir: root, ensName: ensName!, getWallet: getWallet!, ipfsApiUrl, ipfsGatewayUrl})
31 ensApply.cliDescript = 'upload to IPFS and set ENS contenthash'
32 const actionsH: Record<string, (...args: any[]) => Promise<void>> = {devserver: staticSiteDevserver, info: ensInfo, apply: ensApply}
33 availActionsCtx.enterWith({...availActionsCtx.getStore(), ...actionsH})
35 const wantsHelp = action === 'help' || !action || cliFlag('--help')
36 if (wantsHelp || !actionsH[action!]) {
37 cliBase({actionNames: Object.keys(actionsH), actionsH})
38 return
39 }
40 if (await tryDispatchAction()) return
41 await ensApply()
42 } else {
43 availActionsCtx.enterWith({...availActionsCtx.getStore(), ...getDeployActions(), devserver: staticSiteDevserver})
44 if (await tryDispatchAction()) return
45 await doStaticSiteK8sApply({...props, importMetaUrl, svcPortNo, publicDir: root, action})
46 }
49export const doStaticSiteK8sApply = async (props: Record<string, any>) => {
50 const { publicDir, svcPortNo } = props
51 const copyPathsA = [{src: ptDynamicPath(absPathToPtPath(publicDir)), dest: '/app'}]
52 nextContCtx.enterWith({
53 command: ['http-server', '/app', '-p', String(svcPortNo), '-a', '0.0.0.0', '-c-1'],
54 ports: [{containerPort: svcPortNo}],
55 })
56 await eptSimpleDfDeploy({...props, svcPortNo, copyPathsA})