import { execSync } from "child_process"; // check requirements to run TurboStarter void checkRequirements(); function checkRequirements() { validateNodeInstalled(); validatePnpmInstalled(); validatePathNotOneDrive(); } /** * Validates that pnpm is installed. * If pnpm is not installed, it exits the script with an error message. */ function validatePnpmInstalled() { const currentPnpmVersion = execSync("pnpm --version").toString().trim(); if (!currentPnpmVersion) { console.error( `\x1b[31m%s\x1b[0m`, `You are running TurboStarter from a directory that does not have pnpm installed. Please install pnpm and run "pnpm install" in your project directory.`, ); process.exit(1); } } /** * Validates that Node is installed. * If Node is not installed, it exits the script with an error message. */ function validateNodeInstalled() { const currentNodeVersion = process.versions.node; if (!currentNodeVersion) { console.error( `\x1b[31m%s\x1b[0m`, `You are running TurboStarter from a device that does not have Node installed. Please install Node (https://nodejs.org/en/download/) and try again.`, ); process.exit(1); } } /** * Checks if the current working directory is not OneDrive. * If the current working directory is OneDrive, it exits the script with an error message. */ function validatePathNotOneDrive() { const path = process.cwd(); if (path.includes("OneDrive")) { console.error( `\x1b[31m%s\x1b[0m`, `You are running TurboStarter from OneDrive. Please move your project to a local folder.`, ); process.exit(1); } }