skeet
Version:
Full-stack TypeScript Serverless Framework
80 lines (76 loc) • 2.61 kB
text/typescript
import * as Skeet from '@/cli'
import { importConfig } from '@/index'
import { SkeetCloudConfig, WorkerConfig } from '@/types/skeetTypes'
import {
API_ENV_PRODUCTION_PATH,
getActionsEnvString,
getWorkerName,
} from '@/lib/getNetworkConfig'
import { Logger } from '@/lib/logger'
import fs from 'fs'
export const setupActions = async () => {
try {
const skeetConfig: SkeetCloudConfig = await importConfig()
const envString = await getActionsEnvString(API_ENV_PRODUCTION_PATH)
const result = await Skeet.apiYml(
envString,
skeetConfig.api.cloudRun.memory,
String(skeetConfig.api.cloudRun.cpu),
String(skeetConfig.api.cloudRun.maxConcurrency),
String(skeetConfig.api.cloudRun.maxInstances),
String(skeetConfig.api.cloudRun.minInstances),
skeetConfig.api.hasLoadBalancer
)
fs.writeFileSync(result.filePath, result.body, { flag: 'w' })
await Logger.success(`Successfully updated ${result.filePath}!`)
const workerNames = await Skeet.getWorkers()
if (workerNames.length !== 0) {
for await (const workerName of workerNames) {
const workerConf: WorkerConfig = await getWorkerConfig(workerName)
if (!workerConf) return []
const result = await Skeet.workerYml(
workerName,
envString,
workerConf.cloudRun.memory,
String(workerConf.cloudRun.cpu),
String(workerConf.cloudRun.maxConcurrency),
String(workerConf.cloudRun.maxInstances),
String(workerConf.cloudRun.minInstances)
)
fs.writeFileSync(result.filePath, result.body, { flag: 'w' })
await Logger.success(`Successfully updated ${result.filePath}!`)
}
}
return true
} catch (error) {
console.log(`setupActions: ${error}`)
throw new Error(`error:${error}`)
}
}
export const getWorkerConfig = async (workerName: string) => {
try {
const skeetConfig: SkeetCloudConfig = await importConfig()
const name = await getWorkerName(skeetConfig.api.appName, workerName)
const workerConf = {
workerName,
cloudRun: {
name,
url: '',
cpu: 1,
memory: '1Gi',
maxConcurrency: 80,
maxInstances: 100,
minInstances: 0,
},
}
if (!skeetConfig.workers || skeetConfig.workers.length === 0)
return workerConf
const workerConfig = skeetConfig.workers.find(
(item) => item.workerName === workerName
)
if (!workerConfig) throw new Error('empty!')
return workerConfig
} catch (error) {
throw new Error(`setupActions:${error}`)
}
}