UNPKG

@reliverse/rse

Version:

@reliverse/rse is your all-in-one companion for bootstrapping and improving any kind of projects (especially web apps built with frameworks like Next.js) — whether you're kicking off something new or upgrading an existing app. It is also a little AI-power

92 lines (91 loc) 2.71 kB
import { re } from "@reliverse/relico"; import { relinka } from "@reliverse/relinka"; import { selectPrompt } from "@reliverse/rempts"; import { prepareVercelProjectCreation } from "./vercel/vercel-create.js"; export async function selectDeploymentService(config) { if (config.projectDeployService !== void 0 && config.projectDeployService !== "none") { const deployService = config.projectDeployService; relinka("verbose", `Using configured deployment service: ${deployService}`); return deployService; } return await selectPrompt({ title: "Select deployment service", options: [ { label: "Vercel", value: "vercel", hint: "recommended" }, { label: "None", value: "none", hint: "skip deployment" }, { label: "...", value: "deno", hint: re.dim("coming soon"), disabled: true } ], defaultValue: "vercel" }); } export async function deployProject(githubInstance, vercelInstance, vercelToken, githubToken, skipPrompts, projectName, config, projectPath, primaryDomain, memory, deployMode, githubUsername) { relinka("verbose", `Preparing deployment for ${projectName} project...`); try { const deployService = await selectDeploymentService(config); if (deployService === "none") { relinka("info", "Skipping deployment..."); return { primaryDomain, deployService: "none", isDeployed: false, allDomains: [primaryDomain] }; } if (deployService !== "vercel") { relinka("info", `Deployment to ${deployService} is not yet implemented`); return { primaryDomain, deployService: "none", isDeployed: false, allDomains: [primaryDomain] }; } const success = await prepareVercelProjectCreation( githubInstance, vercelInstance, vercelToken, githubToken, skipPrompts, projectName, projectPath, primaryDomain, memory, deployMode, githubUsername ); if (success) { relinka("verbose", "Deployment completed!"); return { primaryDomain, deployService, isDeployed: true, allDomains: [primaryDomain] }; } else { relinka("error", "Failed to deploy project"); return { primaryDomain, deployService: "none", isDeployed: false, allDomains: [primaryDomain] }; } } catch (error) { relinka( "error", "Error during deployment:", error instanceof Error ? error.message : String(error) ); return { primaryDomain, deployService: "none", isDeployed: false, allDomains: [primaryDomain] }; } }