#!/bin/bash echo "Check if folder 'Rosvita' with subfolders 'data', 'projects' and 'robot_parts' exist and create them otherwise..." cd ~ if [[ $(ls | grep -x Rosvita | wc -l) > 0 ]]; then cd Rosvita if [[ $(ls | grep -x data | wc -l) == 0 ]]; then echo "Creating subfolder 'data'." mkdir data fi if [[ $(ls | grep -x projects | wc -l) == 0 ]]; then echo "Creating subfolder 'projects'." mkdir projects fi if [[ $(ls | grep -x robot_parts | wc -l) == 0 ]]; then echo "Creating subfolder 'robot_parts'." mkdir robot_parts fi else echo "Creating folder 'Rosvita' with subfolders 'data', 'projects' and 'robot_parts'." mkdir Rosvita cd Rosvita mkdir data projects robot_parts fi echo "Check if ROSVITA is already running..." if [[ $(docker ps -a | grep rosvita | wc -l) > 0 ]]; then echo "YES" echo "ROSVITA is already running" else echo "NO" if [[ "$1" == "--debug" ]]; then echo "Starting debug mode of ROSVITA" echo "To start ROSVITA afterwards, simply type 'rosvita' after pressing 'Enter'." echo "Then open an internet browser and type 'http://localhost:5000/' in the adress bar." read -p "Press ENTER to continue" docker run -ti --net=host --rm --name=rosvita --user xamla --privileged -e DISPLAY=$DISPLAY -e host_uid=$(id -u) -e host_gid=$(id -g) -v /dev/bus/usb:/dev/bus/usb -v /tmp/.X11-unix:/tmp/.X11-unix -v ${HOME}/Rosvita/data:/home/xamla/Rosvita.Control/data -v ${HOME}/Rosvita/projects:/home/xamla/Rosvita.Control/projects -v ${HOME}/Rosvita/robot_parts:/home/xamla/Rosvita.Control/library/robot_parts/custom xamla/rosvita:latest bash else echo "Starting ROSVITA" docker run -dti --net=host --rm --name=rosvita --user xamla --privileged -e DISPLAY=$DISPLAY -e host_uid=$(id -u) -e host_gid=$(id -g) -v /dev/bus/usb:/dev/bus/usb -v /tmp/.X11-unix:/tmp/.X11-unix -v ${HOME}/Rosvita/data:/home/xamla/Rosvita.Control/data -v ${HOME}/Rosvita/projects:/home/xamla/Rosvita.Control/projects -v ${HOME}/Rosvita/robot_parts:/home/xamla/Rosvita.Control/library/robot_parts/custom xamla/rosvita:latest rosvita fi fi if [[ $(docker ps -a | grep rosvita | wc -l) > 0 ]]; then echo "Ok" echo "Use 'docker attach rosvita' to attach to the container. Use CTRL+P, CTRL+Q to detach from the container." else echo "Failed" exit 1 fi echo "Opening ROSVITA in your default web browser..." attempt_counter=0 max_attempts=40 until $(curl --output /dev/null --silent --fail http://localhost:5000/api/version); do if [[ ${attempt_counter} -eq ${max_attempts} ]]; then echo "Maximum number of attempts reached. Please try again." exit 1 fi printf '.' attempt_counter=$(($attempt_counter+1)) sleep 0.25 done printf '\n' xdg-open http://localhost:5000