cli for setting up better-t-stack

This commit is contained in:
fgrreloaded
2025-02-10 22:37:40 +05:30
commit a73630b6ee
7 changed files with 4115 additions and 0 deletions

56
src/create-project.ts Normal file
View File

@@ -0,0 +1,56 @@
import { execa } from 'execa';
import fs from 'fs-extra';
import ora from 'ora';
import path from 'path';
interface ProjectOptions {
projectName: string;
typescript: boolean;
git: boolean;
database: 'libsql' | 'postgres';
auth: boolean;
features: string[];
}
export async function createProject(options: ProjectOptions) {
const spinner = ora('Creating project directory...').start();
const projectDir = path.resolve(process.cwd(), options.projectName);
try {
await fs.ensureDir(projectDir);
spinner.succeed();
spinner.start('Cloning template repository...');
await execa('git', ['clone', '--depth', '1', 'https://github.com/AmanVarshney01/Better-T-Stack.git', projectDir]);
spinner.succeed();
spinner.start('Removing template .git folder...');
await fs.remove(path.join(projectDir, '.git'));
spinner.succeed();
if (options.git) {
spinner.start('Initializing git repository...');
await execa('git', ['init'], { cwd: projectDir });
spinner.succeed();
}
spinner.start('Installing dependencies...');
await execa('bun', ['install'], { cwd: projectDir });
spinner.succeed();
spinner.start('Setting up database...');
if (options.database === 'libsql') {
await execa('bun', ['run', 'db:local'], { cwd: projectDir });
await execa('bun', ['run', 'db:push'], { cwd: projectDir });
}
spinner.succeed();
console.log('\n✨ Project created successfully!\n');
console.log('Next steps:');
console.log(` cd ${options.projectName}`);
console.log(' bun dev');
} catch (error) {
spinner.fail('Failed to create project');
console.error(error);
process.exit(1);
}
}