Files
create-better-t-stack/apps/cli/src/prompts/package-manager.ts
Aman Varshney 036c62cf0b Enhance authentication setup and improve documentation
Adds automatic auth secret generation, improves environment file handling,
creates client env files, adds trusted origins configuration, enhances
README generation with better structure and instructions, and updates
post-installation guidance with clearer steps.
2025-03-16 01:48:45 +05:30

53 lines
1.3 KiB
TypeScript

import { cancel, confirm, isCancel, select } from "@clack/prompts";
import pc from "picocolors";
import type { PackageManager } from "../types";
import { getUserPkgManager } from "../utils/get-package-manager";
export async function getPackageManagerChoice(
packageManager?: PackageManager,
): Promise<PackageManager> {
if (packageManager !== undefined) return packageManager;
const detectedPackageManager = getUserPkgManager();
const useDetected = await confirm({
message: `Use ${detectedPackageManager} as your package manager?`,
});
if (isCancel(useDetected)) {
cancel(pc.red("Operation cancelled"));
process.exit(0);
}
if (useDetected) return detectedPackageManager;
const response = await select<PackageManager>({
message: "Which package manager would you like to use?",
options: [
{ value: "npm", label: "npm", hint: "Node Package Manager" },
{
value: "pnpm",
label: "pnpm",
hint: "Fast, disk space efficient package manager",
},
{
value: "yarn",
label: "yarn",
hint: "Fast, reliable, and secure dependency management",
},
{
value: "bun",
label: "bun",
hint: "All-in-one JavaScript runtime & toolkit",
},
],
initialValue: "bun",
});
if (isCancel(response)) {
cancel(pc.red("Operation cancelled"));
process.exit(0);
}
return response;
}