From a2a079510c0a9f5cd0471b37fbca206fbf42bc90 Mon Sep 17 00:00:00 2001
From: Shakker Nerd <shakkerdroid@gmail.com>
Date: Tue, 17 Dec 2024 09:06:49 +0000
Subject: [PATCH] feat: make script dash compatible

---
 scripts/start.sh | 58 ++++++++++++++++++++++++++++--------------------
 1 file changed, 34 insertions(+), 24 deletions(-)

diff --git a/scripts/start.sh b/scripts/start.sh
index 86a51a6323d..f3a817a27e4 100644
--- a/scripts/start.sh
+++ b/scripts/start.sh
@@ -1,55 +1,65 @@
-#!/bin/bash
-# Check Node.js version
+#!/bin/sh
+
+# Node.js version check
 REQUIRED_NODE_VERSION=22
 CURRENT_NODE_VERSION=$(node -v | cut -d'.' -f1 | sed 's/v//')
 
-if (( CURRENT_NODE_VERSION < REQUIRED_NODE_VERSION && CURRENT_NODE_VERSION < 23 )); then
-    echo "Error: Node.js version must be $REQUIRED_NODE_VERSION or 23 or higher. Current version is $CURRENT_NODE_VERSION."
+# Compare Node versions
+if [ "$(expr "$CURRENT_NODE_VERSION" \< "$REQUIRED_NODE_VERSION")" -eq 1 ]; then
+    echo "\033[1;31mError: Node.js version must be $REQUIRED_NODE_VERSION or higher. Current version is $CURRENT_NODE_VERSION.\033[0m"
+    exit 1
+fi
+
+# Check if pnpm is installed
+if ! command -v pnpm >/dev/null 2>&1; then
+    echo "\033[1;31mError: pnpm is not installed. Please install pnpm before running the script.\033[0m"
     exit 1
 fi
 
 # Navigate to project root
-cd "$(dirname "$0")"/..
+cd "$(dirname "$0")"/.. || exit 1
 
-# clean cache
-echo -e "\033[1mCleaning cache...\033[0m"
+# Clean cache
+echo "\033[1mCleaning cache...\033[0m"
 if ! pnpm clean; then
-    echo -e "\033[1;31mFailed to clean cache\033[0m"
+    echo "\033[1;31mFailed to clean cache.\033[0m"
     exit 1
 fi
 
-
 # Install dependencies
-echo -e "\033[1mInstalling dependencies...\033[0m"
-if ! pnpm i ; then
-    echo -e "\033[1;31mFailed to install dependencies\033[0m"
+echo "\033[1mInstalling dependencies...\033[0m"
+if ! pnpm install; then
+    echo "\033[1;31mFailed to install dependencies.\033[0m"
     exit 1
 fi
 
 # Build project
-echo -e "\033[1mBuilding project...\033[0m"
+echo "\033[1mBuilding project...\033[0m"
 if ! pnpm build; then
-    echo -e "\033[1;31mFailed to build project\033[0m"
+    echo "\033[1;31mFailed to build project.\033[0m"
     exit 1
 fi
 
 # Start project
-echo -e "\033[1mStarting project...\033[0m"
+echo "\033[1mStarting project...\033[0m"
 if ! pnpm start; then
-    echo -e "\033[1;31mFailed to start project\033[0m"
+    echo "\033[1;31mFailed to start project.\033[0m"
     exit 1
 fi
 
 # Start client
-echo -e "\033[1mStarting client...\033[0m"
-pnpm start:client
+echo "\033[1mStarting client...\033[0m"
+if ! pnpm start:client; then
+    echo "\033[1;31mFailed to start client.\033[0m"
+    exit 1
+fi
 
 # Open webpage
-echo -e "\033[1mOpening webpage...\033[0m"
-if command -v xdg-open &> /dev/null; then
-    xdg-open http://localhost:5173
-elif command -v open &> /dev/null; then
-    open http://localhost:5173
+echo "\033[1mOpening webpage at http://localhost:5173...\033[0m"
+if command -v xdg-open >/dev/null 2>&1; then
+    xdg-open "http://localhost:5173"
+elif command -v open >/dev/null 2>&1; then
+    open "http://localhost:5173"
 else
-    echo -e "\033[1;33mPlease open http://localhost:5173 in your browser\033[0m"
+    echo "\033[1;33mPlease open http://localhost:5173 in your browser.\033[0m"
 fi