diff --git a/README.md b/README.md index 6278969a..3f67239e 100644 --- a/README.md +++ b/README.md @@ -47,32 +47,26 @@ git clone https://github.com/SethBurkart123/EvenBetterSEQTA ``` -2. Install dependencies +### Windows +Open the `install.bat` file located inside the `scripts` folder. Then after that is finished, open the `dev.bat` file. + +### Mac & Linux + +1. `cd` into the folder ``` -npm install +cd EvenBetterSEQTA/scripts +``` +2. Make the scripts in the folder executable +``` +chmod a+x * +``` +3. Run the install and dev scripts +``` +sh install.sh +sh dev.sh ``` -3. Install webpack - -``` -npm install -g webpack -``` - -4. Run the dev script (it updates as you save files) - -``` -npm run dev -``` - -5. Install and run the dev script for the interface **at the same time** (all custom react components are a separate sub-repository) - -``` -cd interface - -npm install -npm run dev -``` ## Folder Structure diff --git a/scripts/build.bat b/scripts/build.bat new file mode 100755 index 00000000..1276a916 --- /dev/null +++ b/scripts/build.bat @@ -0,0 +1,24 @@ +@echo off + +REM Running install script +call install.bat + +cd .. + +REM Try to get the version of pnpm +pnpm --version > NUL 2>&1 + +REM Check the exit status of the previous command +IF %ERRORLEVEL% EQU 0 ( + REM Running pnpm run build in both directories + cd ./interface + pnpm run build + cd .. + pnpm run build +) ELSE ( + REM Running npm run build in both directories + cd ./interface + npm run build + cd .. + npm run build +) diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 00000000..470a7e9a --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Running install script +./install.sh + +cd .. + +# Try to get the version of pnpm +pnpm --version > /dev/null 2>&1 + +# Check the exit status of the previous command +if [ $? -eq 0 ]; then + # Running npm run dev in both directories + cd ./interface + pnpm run build + cd .. + pnpm run build +else + # Running npm run dev in both directories + cd ./interface + npm run build + cd .. + npm run build +fi \ No newline at end of file diff --git a/scripts/dev.bat b/scripts/dev.bat new file mode 100755 index 00000000..7964eacc --- /dev/null +++ b/scripts/dev.bat @@ -0,0 +1,21 @@ +@echo off + +cd .. + +REM Try to get the version of pnpm +pnpm --version >nul 2>&1 + +REM Check the exit status of the previous command +if %ERRORLEVEL% == 0 ( + REM Running pnpm run dev in both directories + cd interface + start /b pnpm run dev + cd .. + pnpm run dev +) else ( + REM Running npm run dev in both directories + cd interface + start /b npm run dev + cd .. + npm run dev +) diff --git a/scripts/dev.sh b/scripts/dev.sh new file mode 100755 index 00000000..5307018a --- /dev/null +++ b/scripts/dev.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +cd .. + +# Try to get the version of pnpm +pnpm --version > /dev/null 2>&1 + +# Check the exit status of the previous command +if [ $? -eq 0 ]; then + # Running npm run dev in both directories + cd ./interface + pnpm run dev & + cd .. + pnpm run dev +else + # Running npm run dev in both directories + cd ./interface + npm run dev & + cd .. + npm run dev +fi \ No newline at end of file diff --git a/scripts/install.bat b/scripts/install.bat new file mode 100755 index 00000000..1e701ed2 --- /dev/null +++ b/scripts/install.bat @@ -0,0 +1,34 @@ +@echo off +setlocal + +:: Function to check if a program exists +CALL :check_program_existence npm HAS_NPM +CALL :check_program_existence pnpm HAS_PNPM + +:: Checking and installing Node.js and npm if not present +IF "%HAS_NPM%"=="false" ( + ECHO npm is not detected. Please install Node.js from https://nodejs.org/ and rerun this script. + EXIT /B 1 +) + +:: Checking and installing pnpm if not present +IF "%HAS_PNPM%"=="false" ( + ECHO pnpm is not detected. Installing pnpm... + npm install -g pnpm +) + +:: Installing dependencies using pnpm +pnpm install +CD interface +pnpm install +CD .. + +ECHO Success! All dependencies installed. +GOTO :EOF + +:: Function to check if a program exists +:check_program_existence +SET "program=%~1" +FOR /F "tokens=*" %%i IN ('where %program% 2^>NUL') DO (SET "%~2=true" & GOTO :EOF) +SET "%~2=false" +GOTO :EOF diff --git a/scripts/install.sh b/scripts/install.sh new file mode 100755 index 00000000..774d522e --- /dev/null +++ b/scripts/install.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# Function to install pnpm +install_pnpm() { + if ! command -v pnpm >/dev/null 2>&1; then + npm install -g pnpm + fi + pnpm_install +} + +# Function to install Node.js and npm +install_npm() { + # Detecting OS + OS="unknown" + case "$(uname -s)" in + Darwin) OS="mac" ;; + Linux) OS="linux" ;; + esac + + # Downloading and installing Node.js + if [ "$OS" = "mac" ]; then + # Install NVM (Node Version Manager) and Node.js + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + nvm install node + elif [ "$OS" = "linux" ]; then + # Using NodeSource Node.js Binary Distributions script for Linux + curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - + sudo apt-get install -y nodejs + fi +} + +# Function to install packages using pnpm +pnpm_install() { + pnpm install + cd ./interface + pnpm install + cd .. +} + +# Function to install packages using npm +npm_install() { + npm install + cd ./interface + npm install + cd .. +} + +cd .. + +# Check for npm installation +if ! command -v npm >/dev/null 2>&1; then + echo "npm is not installed. Installing npm and Node.js..." + install_npm +fi + +# Ask user for package manager preference +echo "npm is installed." +read -p "Do you wish to use pnpm? (y/n) " yn +case $yn in + [Yy]* ) install_pnpm;; + [Nn]* ) npm_install;; + * ) echo "Please answer yes or no."; exit 1;; +esac + +echo "Success! All dependencies installed."