2024-10-12 19:18:53 -04:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
PORT=3000
|
|
|
|
SETUP_FILE=".setup_complete"
|
2024-10-15 16:36:22 -04:00
|
|
|
COLOR_RESET="\033[0m"
|
|
|
|
COLOR_GREEN="\033[1;32m"
|
|
|
|
COLOR_RED="\033[1;31m"
|
|
|
|
COLOR_YELLOW="\033[1;33m"
|
|
|
|
COLOR_BLUE="\033[1;34m"
|
|
|
|
COLOR_CYAN="\033[1;36m"
|
2024-10-12 19:18:53 -04:00
|
|
|
|
2024-10-15 17:35:59 -04:00
|
|
|
check_db() {
|
|
|
|
nc -z "$DB_HOST" "$DB_PORT"
|
|
|
|
}
|
|
|
|
|
2024-10-19 19:33:31 -04:00
|
|
|
function install_docker() {
|
|
|
|
echo -e "${COLOR_BLUE}Docker is not installed. Installing now...${COLOR_RESET}"
|
|
|
|
echo -e "${COLOR_YELLOW}You may need to enter your sudo password.${COLOR_RESET}"
|
|
|
|
echo
|
|
|
|
sudo apt-get install ca-certificates curl
|
|
|
|
sudo install -m 0755 -d /etc/apt/keyrings
|
|
|
|
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
|
|
|
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
|
|
|
echo \
|
|
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
|
|
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
|
|
|
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
|
|
sudo apt-get update
|
|
|
|
echo
|
|
|
|
echo -e "${COLOR_GREEN}Docker installed successfully.${COLOR_RESET}"
|
|
|
|
echo -e "${COLOR_BLUE}Adding user to the Docker group...${COLOR_RESET}"
|
|
|
|
if [ ! -d "./docker-compose.yml" ]; then
|
|
|
|
if [ ! -d "./docker-compose.yml.example" ]; then
|
|
|
|
echo "Couldn't find example Docker Compose file"
|
|
|
|
else
|
|
|
|
sudo cp docker-compose.yml.example docker-compose.yml
|
|
|
|
echo -e "${COLOR_GREEN}Done!${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo -e "${COLOR_GREEN}Docker Compose file already exists, skipping.${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
echo -e "${COLOR_BLUE}Creating Docker network...${COLOR_RESET}"
|
|
|
|
sudo docker network create --subnet=10.5.0.0/16 aidxnfun-n
|
|
|
|
echo -e "${COLOR_GREEN}Done!${COLOR_RESET}"
|
|
|
|
sudo usermod -aG docker $USER
|
|
|
|
echo -e "${COLOR_GREEN}User added to Docker group. Please log out and back in for the changes to take effect.${COLOR_RESET}"
|
|
|
|
}
|
|
|
|
|
2024-10-12 19:18:53 -04:00
|
|
|
function install_tools() {
|
2024-10-15 16:36:22 -04:00
|
|
|
if ! command -v node &> /dev/null; then
|
|
|
|
echo -e "${COLOR_RED}NodeJS is not installed. Installing now...${COLOR_RESET}"
|
|
|
|
echo -e "${COLOR_YELLOW}You may need to enter your sudo password.${COLOR_RESET}"
|
|
|
|
echo
|
|
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
|
|
|
|
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
|
|
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
|
|
nvm install 20.18.0
|
|
|
|
echo
|
|
|
|
echo -e "${COLOR_GREEN}NodeJS installed successfully.${COLOR_RESET}"
|
|
|
|
echo
|
|
|
|
else
|
|
|
|
echo -e "${COLOR_GREEN}NodeJS is installed. Version: $(node -v)${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
|
2024-10-15 17:35:59 -04:00
|
|
|
if ! command -h nc &> /dev/null; then
|
|
|
|
echo -e "${COLOR_RED}Netcat is not installed. Installing now...${COLOR_RESET}"
|
|
|
|
echo -e "${COLOR_YELLOW}You may need to enter your sudo password.${COLOR_RESET}"
|
|
|
|
echo
|
|
|
|
sudo apt-get install netcat-traditional
|
|
|
|
echo
|
|
|
|
echo -e "${COLOR_GREEN}Netcat installed successfully.${COLOR_RESET}"
|
|
|
|
echo
|
|
|
|
else
|
|
|
|
echo -e "${COLOR_GREEN}Netcat is installed. Version: $(nc -h | grep -oP '\[v[0-9.]+\-[0-9]+\]' | tr -d '[]')${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
|
2024-10-19 19:33:31 -04:00
|
|
|
if ! command -h docker &> /dev/null; then
|
|
|
|
echo -e "${COLOR_RED}Docker is not installed. Installing now...${COLOR_RESET}"
|
|
|
|
echo -e "${COLOR_YELLOW}You may need to enter your sudo password.${COLOR_RESET}"
|
|
|
|
echo
|
|
|
|
install_docker
|
|
|
|
echo
|
|
|
|
echo -e "${COLOR_GREEN}Docker installed successfully.${COLOR_RESET}"
|
|
|
|
echo
|
|
|
|
else
|
|
|
|
echo -e "${COLOR_GREEN}Docker is installed. Version: $(nc -h | grep -oP '\[v[0-9.]+\-[0-9]+\]' | tr -d '[]')${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
if ! command -v npm &> /dev/null; then
|
|
|
|
echo -e "${COLOR_RED}NPM is not installed. Installing now...${COLOR_RESET}"
|
|
|
|
echo -e "${COLOR_YELLOW}You may need to enter your sudo password.${COLOR_RESET}"
|
|
|
|
echo
|
|
|
|
sudo apt-get update
|
|
|
|
sudo apt-get install npm
|
2024-10-15 19:34:38 -04:00
|
|
|
if [ ! -d "./config.json" ]; then
|
|
|
|
echo -e "${COLOR_BLUE}Copying config file...${COLOR_RESET}"
|
|
|
|
if [ ! -d "./config.json.example" ]; then
|
|
|
|
echo "Couldn't find example config file"
|
2024-10-15 16:36:22 -04:00
|
|
|
else
|
2024-10-15 19:34:38 -04:00
|
|
|
sudo cp config.json.example config.json
|
2024-10-15 16:36:22 -04:00
|
|
|
fi
|
|
|
|
else
|
2024-10-15 19:34:38 -04:00
|
|
|
echo -e "${COLOR_GREEN}config file already exists, skipping.${COLOR_RESET}"
|
2024-10-15 16:36:22 -04:00
|
|
|
fi
|
|
|
|
echo -e "${COLOR_BLUE}Installing NPM deps...${COLOR_RESET}"
|
|
|
|
npm install > node.log 2>&1
|
|
|
|
echo
|
|
|
|
echo -e "${COLOR_GREEN}NPM installed successfully.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
echo
|
|
|
|
touch $SETUP_FILE
|
|
|
|
else
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}NPM is installed. Version: $(npm -v)${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
touch $SETUP_FILE
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function show_help() {
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Usage:${COLOR_RESET} ./manage [command] [options]"
|
|
|
|
echo
|
|
|
|
echo -e "${COLOR_YELLOW}Commands:${COLOR_RESET}"
|
|
|
|
echo -e " ${COLOR_CYAN}help, -h, --help${COLOR_RESET} Shows this help message."
|
|
|
|
echo -e " ${COLOR_CYAN}up${COLOR_RESET} Builds the project and starts the server."
|
|
|
|
echo -e " ${COLOR_CYAN}down${COLOR_RESET} Stops the server."
|
|
|
|
echo -e " ${COLOR_CYAN}restart${COLOR_RESET} Restarts the server."
|
|
|
|
echo -e " ${COLOR_CYAN}status, -s, --status${COLOR_RESET} Checks if the server is running."
|
|
|
|
echo
|
|
|
|
echo -e "${COLOR_YELLOW}Options:${COLOR_RESET}"
|
|
|
|
echo -e " ${COLOR_CYAN}--db-alive${COLOR_RESET} Do not restart Docker services."
|
2024-10-12 19:18:53 -04:00
|
|
|
echo ""
|
|
|
|
}
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
function check_docker() {
|
|
|
|
if command -v docker &> /dev/null; then
|
|
|
|
echo -e "${COLOR_GREEN}Docker is installed. Version: $(docker --version)${COLOR_RESET}"
|
|
|
|
else
|
|
|
|
echo -e "${COLOR_RED}Docker is not installed.${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2024-10-12 19:18:53 -04:00
|
|
|
function check_dirs() {
|
2024-10-15 16:36:22 -04:00
|
|
|
local action=$1
|
|
|
|
local created_count=0
|
|
|
|
local deleted_count=0
|
2024-10-12 19:18:53 -04:00
|
|
|
|
|
|
|
if [ "$action" == "create" ]; then
|
|
|
|
for dir in "./public" "./public/js" "./public/css" "./src" "./src/css" "./src/img" "./src/js"; do
|
|
|
|
if [ ! -d "$dir" ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Creating $dir...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
mkdir -p "$dir"
|
|
|
|
created_count=$((created_count + 1))
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if [ "$created_count" -gt 0 ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-15 17:14:05 -04:00
|
|
|
else
|
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
|
|
|
|
elif [ "$action" == "delete" ]; then
|
|
|
|
if [ -d "./public" ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Deleting public directory...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
rm -rf "./public"
|
|
|
|
deleted_count=$((deleted_count + 1))
|
|
|
|
fi
|
|
|
|
if [ "$deleted_count" -gt 0 ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-15 17:14:05 -04:00
|
|
|
else
|
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
else
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_RED}Invalid action: $action. Use 'create' or 'delete'.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function restart_server() {
|
|
|
|
check_setup
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
if [ "$DB_ALIVE" == "true" ]; then
|
|
|
|
echo -e "${COLOR_YELLOW}Database services will not be restarted. Skipping Docker operations.${COLOR_RESET}"
|
|
|
|
else
|
|
|
|
if [ -d './public' ]; then
|
|
|
|
echo -e "${COLOR_BLUE}Deleting public directories...${COLOR_RESET}"
|
|
|
|
check_dirs "delete"
|
|
|
|
fi
|
2024-10-12 19:18:53 -04:00
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
if [ -f './src/css/main.css' ]; then
|
|
|
|
echo -e "${COLOR_BLUE}Deleting old Tailwind CSS...${COLOR_RESET}"
|
|
|
|
rm ./src/css/main.css
|
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
|
|
|
fi
|
2024-10-12 19:18:53 -04:00
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
PIDS=$(lsof -t -i:$PORT)
|
2024-10-12 19:18:53 -04:00
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
if [ -n "$PIDS" ]; then
|
|
|
|
echo -e "${COLOR_BLUE}Stopping server...${COLOR_RESET}"
|
|
|
|
for PID in $PIDS; do
|
|
|
|
kill "$PID" || echo -e "${COLOR_RED}Failed to kill PID: $PID${COLOR_RESET}"
|
|
|
|
done
|
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
|
|
|
else
|
|
|
|
echo -e "${COLOR_YELLOW}No process found on port $PORT.${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo -e "${COLOR_BLUE}Stopping database...${COLOR_RESET}"
|
|
|
|
echo "This may require your sudo password"
|
|
|
|
sudo docker compose down
|
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Creating public directories...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
check_dirs "create"
|
2024-10-15 16:36:22 -04:00
|
|
|
|
|
|
|
echo -e "${COLOR_BLUE}Starting database...${COLOR_RESET}"
|
|
|
|
echo "This may require your sudo password"
|
|
|
|
sudo docker compose up -d
|
2024-10-15 18:14:09 -04:00
|
|
|
echo -e "${COLOR_BLUE}Waiting 30 seconds for database startup...${COLOR_RESET}"
|
|
|
|
sleep 30
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Building project...${COLOR_RESET}"
|
|
|
|
if ! npm run build > node.log 2>&1; then
|
|
|
|
echo -e "${COLOR_RED}Build failed. Please check for errors above.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
exit 1
|
2024-10-15 17:06:26 -04:00
|
|
|
else
|
|
|
|
echo -e "${COLOR_GREEN}Done!${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -f './public/css/base.css' ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Cleaning up base Tailwind CSS file...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
rm ./public/css/base.css
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -f './node.log' ]; then
|
|
|
|
echo -e "${COLOR_BLUE}Deleting node log...${COLOR_RESET}"
|
|
|
|
rm ./node.log
|
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Starting server...${COLOR_RESET}"
|
|
|
|
npm start > node.log 2>&1 &
|
|
|
|
echo -e "${COLOR_GREEN}Done. Server up and running on port $PORT!${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
function start_server() {
|
|
|
|
check_setup
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
if [ "$DB_ALIVE" == "true" ]; then
|
|
|
|
echo -e "${COLOR_YELLOW}Database services will not be restarted. Skipping Docker operations.${COLOR_RESET}"
|
|
|
|
else
|
|
|
|
echo -e "${COLOR_BLUE}Starting database...${COLOR_RESET}"
|
|
|
|
echo "This may require your sudo password"
|
|
|
|
sudo docker compose up -d
|
2024-10-15 18:14:09 -04:00
|
|
|
echo -e "${COLOR_BLUE}Waiting 30 seconds for database startup...${COLOR_RESET}"
|
|
|
|
sleep 30
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
|
2024-10-12 19:18:53 -04:00
|
|
|
PID=$(lsof -t -i:$PORT)
|
|
|
|
|
|
|
|
if [ -n "$PID" ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_YELLOW}Server process already running on port $PORT. Skipping server start.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
return
|
|
|
|
fi
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Creating public directories...${COLOR_RESET}"
|
|
|
|
check_dirs "create"
|
2024-10-12 19:18:53 -04:00
|
|
|
|
|
|
|
if [ -f './src/css/main.css' ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Deleting old Tailwind CSS...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
rm ./src/css/main.css
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -f './node.log' ]; then
|
|
|
|
echo -e "${COLOR_BLUE}Deleting node log...${COLOR_RESET}"
|
|
|
|
rm ./node.log
|
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Building project...${COLOR_RESET}"
|
|
|
|
if ! npm run build > node.log 2>&1; then
|
|
|
|
echo -e "${COLOR_RED}Build failed. Please check for errors above.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
exit 1
|
2024-10-15 17:06:26 -04:00
|
|
|
else
|
|
|
|
echo -e "${COLOR_GREEN}Done!${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -f './public/css/base.css' ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Cleaning up base Tailwind CSS file...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
rm ./public/css/base.css
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Starting server...${COLOR_RESET}"
|
|
|
|
npm start > node.log 2>&1 &
|
|
|
|
echo -e "${COLOR_GREEN}Done. Server up and running on port $PORT!${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
function stop_server() {
|
|
|
|
check_setup
|
|
|
|
PID=$(lsof -t -i:$PORT)
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
if [ "$DB_ALIVE" == "true" ]; then
|
|
|
|
echo -e "${COLOR_YELLOW}Database services will not be stopped. Skipping Docker operations.${COLOR_RESET}"
|
|
|
|
else
|
|
|
|
echo -e "${COLOR_BLUE}Stopping database...${COLOR_RESET}"
|
|
|
|
echo "This may require your sudo password"
|
|
|
|
sudo docker compose down
|
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -d './public' ]; then
|
|
|
|
echo -e "${COLOR_BLUE}Deleting public directories...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
check_dirs "delete"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -f './src/css/main.css' ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Deleting Tailwind CSS...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
rm ./src/css/main.css
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -f './node.log' ]; then
|
|
|
|
echo -e "${COLOR_BLUE}Deleting node log...${COLOR_RESET}"
|
|
|
|
rm ./node.log
|
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
|
|
|
|
PIDS=$(lsof -t -i:$PORT)
|
|
|
|
|
|
|
|
if [ -n "$PIDS" ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Stopping server...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
for PID in $PIDS; do
|
2024-10-15 16:36:22 -04:00
|
|
|
kill "$PID" || echo -e "${COLOR_RED}Failed to kill PID: $PID${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
done
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Done.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
else
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_YELLOW}No process found on port $PORT.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function check_status() {
|
|
|
|
check_setup
|
|
|
|
PID=$(lsof -t -i:$PORT)
|
|
|
|
|
|
|
|
if [ -n "$PID" ]; then
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}Server running with PID: $PID${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
else
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_RED}Server not running.${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2024-10-13 11:29:03 -04:00
|
|
|
function setup() {
|
2024-10-12 19:18:53 -04:00
|
|
|
clear
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_BLUE}Welcome to the aidxnFUNbeta 'manage' script setup!${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
echo
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "${COLOR_GREEN}A custom script built by ihatenodejs${COLOR_RESET}"
|
|
|
|
echo -e "${COLOR_YELLOW}and presented by forkers like you...${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
echo
|
|
|
|
read -n 1 -s -r -p "Press any key to continue..."
|
|
|
|
clear
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "\n\nThis script requires Node.js, NPM, and Docker to be installed on your system."
|
|
|
|
echo "Please ensure you have these tools installed before proceeding."
|
|
|
|
echo -e "\nPress any key to continue with tool installation..."
|
|
|
|
read -n 1 -s -r -p ""
|
2024-10-12 21:43:41 -04:00
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
check_docker
|
2024-10-12 19:18:53 -04:00
|
|
|
install_tools
|
2024-10-12 21:43:41 -04:00
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
echo -e "\n\nSetup complete! Press any key to exit."
|
|
|
|
echo -e "You should disconnect your SSH session/logout, and reconnect/login for best results."
|
|
|
|
read -n 1 -s -r -p ""
|
|
|
|
exit 0
|
2024-10-12 19:18:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
function check_setup() {
|
2024-10-15 16:36:22 -04:00
|
|
|
if [ ! -f "$SETUP_FILE" ]; then
|
|
|
|
setup
|
2024-10-12 19:18:53 -04:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2024-10-15 16:36:22 -04:00
|
|
|
DB_ALIVE="false"
|
|
|
|
if [[ $# -eq 0 ]]; then
|
|
|
|
show_help
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
for arg in "$@"; do
|
|
|
|
if [[ "$arg" == "--db-alive" ]]; then
|
|
|
|
DB_ALIVE="true"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2024-10-12 19:18:53 -04:00
|
|
|
case $1 in
|
|
|
|
up)
|
2024-10-15 16:36:22 -04:00
|
|
|
check_setup
|
2024-10-12 19:18:53 -04:00
|
|
|
start_server
|
|
|
|
;;
|
|
|
|
down)
|
2024-10-15 16:36:22 -04:00
|
|
|
check_setup
|
2024-10-12 19:18:53 -04:00
|
|
|
stop_server
|
|
|
|
;;
|
|
|
|
restart)
|
2024-10-15 16:36:22 -04:00
|
|
|
check_setup
|
2024-10-12 19:18:53 -04:00
|
|
|
restart_server
|
|
|
|
;;
|
|
|
|
setup)
|
2024-10-15 16:36:22 -04:00
|
|
|
check_setup
|
|
|
|
;;
|
|
|
|
-h|--help|help)
|
|
|
|
check_setup
|
|
|
|
show_help
|
|
|
|
;;
|
|
|
|
-s|--status|status)
|
|
|
|
check_setup
|
|
|
|
check_status
|
2024-10-12 19:18:53 -04:00
|
|
|
;;
|
|
|
|
*)
|
2024-10-15 16:36:22 -04:00
|
|
|
check_setup
|
|
|
|
echo -e "${COLOR_RED}Invalid command: $1${COLOR_RESET}"
|
2024-10-12 19:18:53 -04:00
|
|
|
show_help
|
|
|
|
;;
|
|
|
|
esac
|