@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
JavaScript
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]
};
}
}