| 
					
				 | 
			
			
				@@ -0,0 +1,290 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#!/bin/bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+CYAN='\033[33;36m'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+RED='\033[0;31m' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+YELLOW='\033[0;93m' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+GREEN='\033[0;32m' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+NC='\033[0m' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+handleServices() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    validServices=(backend frontend mongo redis) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    services=() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    invalidServices=false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for x in $@; do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ ${validServices[@]} =~ (^|[[:space:]])"$x"($|[[:space:]]) ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ! [[ ${services[@]} =~ (^|[[:space:]])"$x"($|[[:space:]]) ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                services+=("${x}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ $invalidServices == false ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                invalidServices="${x}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                invalidServices="${invalidServices} ${x}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if [[ $invalidServices == false && ${#services[@]} > 0 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "1|${services[@]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif [[ $invalidServices == false ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "1|all" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo "0|Invalid Service(s): ${invalidServices}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [[ -x "$(command -v docker)" && -x "$(command -v docker-compose)" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    case $1 in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    start) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Start Services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        services=$(handleServices "${@:2}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ ${services:0:1} == 1 && ${services:2:4} == "all" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose up -d 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif [[ ${services:0:1} == 1 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose up -d ${services:2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${RED}${services:2}\n${YELLOW}Usage: $(basename $0) start [backend, frontend, mongo, redis]${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stop) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Stop Services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        services=$(handleServices "${@:2}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ ${services:0:1} == 1 && ${services:2:4} == "all" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose stop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif [[ ${services:0:1} == 1 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose stop ${services:2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${RED}${services:2}\n${YELLOW}Usage: $(basename $0) stop [backend, frontend, mongo, redis]${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    restart) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Restart Services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        services=$(handleServices "${@:2}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ ${services:0:1} == 1 && ${services:2:4} == "all" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose restart 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif [[ ${services:0:1} == 1 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose restart ${services:2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${RED}${services:2}\n${YELLOW}Usage: $(basename $0) restart [backend, frontend, mongo, redis]${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    build) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Build Services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        services=$(handleServices "${@:2}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ ${services:0:1} == 1 && ${services:2:4} == "all" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif [[ ${services:0:1} == 1 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose build ${services:2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${RED}${services:2}\n${YELLOW}Usage: $(basename $0) build [backend, frontend, mongo, redis]${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    reset) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Reset Services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        services=$(handleServices "${@:2}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ ${services:0:1} == 1 && ${services:2:4} == "all" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${GREEN}Are you sure you want to reset all data? ${YELLOW}[y,n]: ${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            read confirm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ "${confirm}" == y* ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker-compose stop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker-compose rm -v --force 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [[ -d ".redis" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rm -rf .redis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [[ -d ".db" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rm -rf .db 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "${RED}Cancelled reset${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif [[ ${services:0:1} == 1 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${GREEN}Are you sure you want to reset all data for $(echo ${services:2} | tr ' ' ',')? ${YELLOW}[y,n]: ${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            read confirm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ "${confirm}" == y* ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker-compose stop ${services:2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker-compose rm -v --force ${services:2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [[ "${services:2}" == *redis* && -d ".redis" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rm -rf .redis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [[ "${services:2}" == *mongo* && -d ".db" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rm -rf .db 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "${RED}Cancelled reset${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${RED}${services:2}\n${YELLOW}Usage: $(basename $0) build [backend, frontend, mongo, redis]${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    attach) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Attach${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ $2 == "backend" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            containerId=$(docker-compose ps -q backend) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ -z $containerId ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "${RED}Error: Backend offline, please start to attach.${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker attach $containerId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${RED}Invalid service $2\n${YELLOW}Usage: $(basename $0) attach backend${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    eslint) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | ESLint${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fix="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ $2 == "fix" || $3 == "fix" || $2 == "--fix" || $3 == "--fix" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fix="--fix" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        case $2 in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            frontend) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker-compose exec frontend npx eslint app/src --ext .js,.vue $fix 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            backend) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker-compose exec backend npx eslint app/logic $fix 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker-compose exec frontend npx eslint app/src --ext .js,.vue $fix 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker-compose exec backend npx eslint app/logic $fix 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            *) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "${RED}Invalid service $2\n${YELLOW}Usage: $(basename $0) eslint [backend, frontend] [fix]${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        esac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    update) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Update${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        git fetch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ $(git rev-parse HEAD) == $(git rev-parse @{u}) ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${GREEN}Already up to date${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            git pull 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose up -d 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Logs${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        docker-compose logs ${@:2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    backup) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Backup${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ -f .env ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            source .env 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${YELLOW}Creating backup at ${PWD}/musare-$(date +"%Y-%m-%d-%s").dump${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            docker-compose exec -T mongo sh -c "mongodump --authenticationDatabase musare -u ${MONGO_USER_USERNAME} -p ${MONGO_USER_PASSWORD} -d musare --archive" > musare-$(date +"%Y-%m-%d-%s").dump 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${RED}Error: .env does not exist${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    restore) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Restore${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ -f .env ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            source .env 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ -z $2 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "${GREEN}Please enter the full path of the dump you wish to restore: ${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                read restoreFile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                restoreFile=$2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ -z ${restoreFile} ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "${RED}Error: no restore path given, cancelled restoration.${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            elif [[ -d ${restoreFile} ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "${RED}Error: restore path given is a directory, cancelled restoration.${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            elif [[ ! -f ${restoreFile} ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "${RED}Error: no file at restore path given, cancelled restoration.${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                docker-compose exec -T mongo sh -c "mongorestore --authenticationDatabase musare -u ${MONGO_USER_USERNAME} -p ${MONGO_USER_PASSWORD} --archive" < ${restoreFile} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${RED}Error: .env does not exist${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    admin) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Add Admin${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if [[ -f .env ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            source .env 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if [[ $2 == "add" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [[ -z $3 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    echo -e "${GREEN}Please enter the username of the user you wish to make an admin: ${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    read adminUser 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    adminUser=$3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [[ -z $adminUser ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    echo -e "${RED}Error: Username for new admin not provided.${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    docker-compose exec mongo mongo musare -u ${MONGO_USER_USERNAME} -p ${MONGO_USER_PASSWORD} --eval "db.users.update({username: '${adminUser}'}, {\$set: {role: 'admin'}})" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            elif [[ $2 == "remove" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [[ -z $3 ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    echo -e "${GREEN}Please enter the username of the user you wish to remove as admin: ${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    read adminUser 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    adminUser=$3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if [[ -z $adminUser ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    echo -e "${RED}Error: Username for new admin not provided.${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    docker-compose exec mongo mongo musare -u ${MONGO_USER_USERNAME} -p ${MONGO_USER_PASSWORD} --eval "db.users.update({username: '${adminUser}'}, {\$set: {role: 'default'}})" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                echo -e "${RED}Invalid command $2\n${YELLOW}Usage: $(basename $0) admin [add,remove] username${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            echo -e "${RED}Error: .env does not exist${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare | Available Commands${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}start - Start services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}stop - Stop services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}restart - Restart services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}logs - View logs for services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}update - Update Musare${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}attach backend - Attach to backend service${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}build - Build services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}eslint - Run eslint on frontend and/or backend${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}backup - Backup database data to file${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}restore - Restore database data from backup file${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}reset - Reset service Data${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}admin [add,remove] - Assign/unassign admin role to/from a user${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    *) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Musare${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${RED}Error: Invalid Command $1${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${CYAN}Available Commands:${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}start - Start services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}stop - Stop services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}restart - Restart services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}logs - View logs for services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}update - Update Musare${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}attach backend - Attach to backend service${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}build - Build services${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}eslint - Run eslint on frontend and/or backend${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}backup - Backup database data to file${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}restore - Restore database data from backup file${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}reset - Reset service Data${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        echo -e "${YELLOW}admin [add,remove] - Assign/unassign admin role to/from a user${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    esac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+elif [[ -x "$(command -v docker)" && ! -x "$(command -v docker-compose)" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "${RED}Error: docker-compose not installed.${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+elif [[ ! -x "$(command -v docker)" && -x "$(command -v docker-compose)" ]]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "${RED}Error: docker not installed.${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    echo -e "${RED}Error: docker and docker-compose not installed.${NC}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 |