UNPKG

skeet

Version:

Full-stack TypeScript Serverless Framework

80 lines (76 loc) 2.61 kB
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}`) } }