add auth, drizzle, prisma setup logic with template

This commit is contained in:
Aman Varshney
2025-03-04 09:33:31 +05:30
parent 54d63823bb
commit 792885b9c4
68 changed files with 2692 additions and 921 deletions

View File

@@ -27,6 +27,12 @@ export function displayConfig(config: Partial<ProjectConfig>) {
`${pc.blue("Package Manager:")} ${config.packageManager}`,
);
}
if (config.noInstall !== undefined) {
configDisplay.push(`${pc.blue("Skip Install:")} ${config.noInstall}`);
}
if (config.turso !== undefined) {
configDisplay.push(`${pc.blue("Turso Setup:")} ${config.turso}`);
}
return configDisplay.join("\n");
}

View File

@@ -1,48 +1,52 @@
import { DEFAULT_CONFIG } from "../constants";
import type { ProjectConfig } from "../types";
export function generateReproducibleCommand(config: ProjectConfig): string {
const flags: string[] = [];
const isMainlyDefault = Object.entries(config).every(([key, value]) => {
if (key === "projectName") return true;
if (key === "features" && Array.isArray(value)) return value.length === 0;
return value === DEFAULT_CONFIG[key as keyof ProjectConfig];
});
if (isMainlyDefault) {
flags.push("-y");
if (config.database === "none") {
flags.push("--no-database");
} else if (config.database === "sqlite") {
flags.push("--sqlite");
} else if (config.database === "postgres") {
flags.push("--postgres");
}
if (config.database !== DEFAULT_CONFIG.database) {
if (config.database === "none") {
flags.push("--no-database");
} else {
flags.push(config.database === "sqlite" ? "--sqlite" : "--postgres");
if (config.database !== "none") {
if (config.orm === "drizzle") {
flags.push("--drizzle");
} else if (config.orm === "prisma") {
flags.push("--prisma");
}
}
if (config.database !== "none" && config.orm !== DEFAULT_CONFIG.orm) {
flags.push(config.orm === "drizzle" ? "--drizzle" : "--prisma");
}
if (config.auth !== DEFAULT_CONFIG.auth) {
if (config.auth) {
flags.push("--auth");
} else {
flags.push("--no-auth");
}
if (!config.git) {
if (config.git) {
flags.push("--git");
} else {
flags.push("--no-git");
}
if (
config.packageManager &&
config.packageManager !== DEFAULT_CONFIG.packageManager
) {
if (config.noInstall) {
flags.push("--no-install");
} else {
flags.push("--install");
}
if (config.packageManager) {
flags.push(`--${config.packageManager}`);
}
for (const feature of config.features) {
flags.push(`--${feature}`);
if (config.features.length > 0) {
for (const feature of config.features) {
flags.push(`--${feature}`);
}
} else {
flags.push("--no-features");
}
const baseCommand = "npx create-better-t-stack";

View File

@@ -1,19 +0,0 @@
import { $ } from "execa";
export async function isTursoInstalled() {
try {
await $`turso --version`;
return true;
} catch {
return false;
}
}
export async function isTursoLoggedIn() {
try {
const output = await $`turso auth whoami`;
return !output.stdout.includes("You are not logged in");
} catch {
return false;
}
}