summaryrefslogtreecommitdiff
path: root/setup/selectscript.sh
diff options
context:
space:
mode:
Diffstat (limited to 'setup/selectscript.sh')
-rw-r--r--setup/selectscript.sh395
1 files changed, 395 insertions, 0 deletions
diff --git a/setup/selectscript.sh b/setup/selectscript.sh
new file mode 100644
index 0000000..0baf3df
--- /dev/null
+++ b/setup/selectscript.sh
@@ -0,0 +1,395 @@
+#! /bin/bash
+echo 'Welkom to the robosoccer guided installment script!'
+
+#check sudo
+if [ `whoami` != root ]; then
+ echo Please run this script as root or using sudo
+ exit
+fi
+#check internet connection
+wget -q --spider https://github.com
+if [ $? -eq 0 ]; then
+ echo 'Internet connection found'
+else
+ echo 'Error, either your device is off-line or https://github.com is off-line.'
+ exit
+fi
+
+#installation options
+echo "Please enter the username of the user it must be installed for."
+read -p "Username: " user
+if id -u "$user" >/dev/null 2>&1; then
+ echo " "
+else
+ echo "$user"' does not exist'
+ while true; do
+ read -p "Do you wich to create this user? [Y]es or [N]o: " inp1
+ case $inp1 in
+ y*|Y*)
+ echo 'creating user'
+ break
+ ;;
+ n*|N*)
+ echo 'No, exiting'
+ exit
+ ;;
+ *)
+ echo 'Unrecognised input, please try again'
+ ;;
+ esac
+ done
+ useradd $user
+fi
+echo 'You will now need to select what this script should configure.'
+while true; do
+ read -p 'Do you want to install a desktop enviorment(grapical display support)? [Y]es or [N]o: ' DE
+ case $DE in
+ Y*|y*)
+ break
+ ;;
+ n*|N*)
+ break
+ ;;
+ *)
+ echo "Did not recognize input please retry"
+ ;;
+ esac
+done
+while true; do
+ read -p 'Do you want to install xscreesaver? [Y]es or [N]o: ' xscr
+ case $xscr in
+ Y*|y*)
+ break
+ ;;
+ n*|N*)
+ break
+ ;;
+ *)
+ echo "Did not recognize input please retry"
+ ;;
+ esac
+done
+while true; do
+ read -p 'Do you want to install arduino IDE version one and two? [Y]es or [N]o: ' ard
+ case $ard in
+ Y*|y*)
+ break
+ ;;
+ n*|N*)
+ break
+ ;;
+ *)
+ echo "Did not recognize input please retry"
+ ;;
+ esac
+done
+while true; do
+ read -p 'Do you want to install openMV IDE? [Y]es or [N]o: ' omv
+ case $omv in
+ Y*|y*)
+ break
+ ;;
+ n*|N*)
+ break
+ ;;
+ *)
+ echo "Did not recognize input please retry"
+ ;;
+ esac
+done
+while true; do
+ read -p 'Do you want to install and configure git? [Y]es [N]o: ' git
+ case $git in
+ Y*|y*)
+ read -p 'Please enter location of the secret file (secrets.tar.gz.gpg): ' secloc
+ if [ -f $secloc ]; then
+ echo "File found!"
+ break
+ fi
+ echo "File $secloc not found!"
+ read -p "Is the file on an external drive? [Y]es or [N]o: " inp4
+ case $inp4 in
+ Y*|y*)
+ fdisk -l
+ read -p "Please enter the drive where the secrets are located.[/dev/sdXN](where x is an letter and N an number): " drv
+ mkdir /mnt/secdrive
+ mount $drv /mnt/secdrive
+ echo "The external drive is now mounted at /mnt/secdrive, please cd into it and locate where the secrets.tar.gz.gpg file is located. After this you can rerun the script."
+ exit
+ ;;
+ n*|N*)
+ echo "In that case i can not help you."
+ read -p "Do you still wich to configure git? [Y]es [N]o: " git
+ ;;
+ *)
+ echo "Did not recognize input please retry"
+ ;;
+ esac
+ ;;
+ n*|N*)
+ break
+ ;;
+ *)
+ echo "Did not recognize input please retry"
+ ;;
+ esac
+done
+while true; do
+ read -p 'Do you want to clone the robosoccer git repository? [Y]es or [N]o' gitrep
+ case $gitrep in
+ y*|Y*)
+ while true; do
+ read -p "Where do you wish to install the robosoccer repository? (Default: /home/$user/Documents/): " gitreploc
+ case $gitreploc in
+ "")
+ echo 'Left empty, using default folder.'
+ gitreploc="/home/$user/Documents/"
+ if [ -d "/home/$user/Documents/" ]; then
+ break
+ fi
+ read -p "/home/$user/Documents/ does not exist or is an file, do you wish to create this folder? [Y]es or [N]o: " inp3
+ case $inp3 in
+ y*|Y*)
+ mkdir "$gitreploc"
+ if [ -d "$gitreploc" ]; then
+ echo "Somthing went wrong with the creation of the directory, exiting"
+ exit
+ fi
+ break
+ ;;
+ n*|N*)
+ echo "Will not clone git repository"
+ gitrep=N
+ break
+ ;;
+ *)
+ echo "Did not recognize input please retry"
+ ;;
+ esac
+ ;;
+ *)
+ if [ -d "$gitreploc" ]; then
+ echo "Using $gitreploc."
+ break
+ fi
+ read -p "$gitreploc does not exist or is an file, do you wish to create this folder?" inp2
+ case $inp2 in
+ y*|Y*)
+ mkdir "$gitreploc"
+ if [ -d "$gitreploc" ]; then
+ echo "Somthing went wrong with the creation of the directory, exiting"
+ exit
+ fi
+ ;;
+ n*|N*)
+ echo "Will not clone git repository"
+ gitrep=N
+ break
+ ;;
+ *)
+ echo "Did not recognize input please retry"
+ ;;
+ esac
+ ;;
+ esac
+ done
+ break
+ ;;
+ n*|N*)
+ echo 'Selected no.'
+ break
+ ;;
+ *)
+ echo 'Unrecognised input, please try again'
+ ;;
+ esac
+done
+
+apt install cowsay sl lolcat fortune -y
+
+#setup DE
+case $DE in
+ Y*|y*)
+ apt install xfce4-goodies xfce4 lightdm -y
+ ;;
+esac
+#setup xscreensaver
+case $xscr in
+ Y*|y*)
+ apt install xscreensaver xscreensaver-data xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra xscreensaver-screensaver-bsod xscreensaver-screensaver-dizzy xscreensaver-screensaver-webcollage supertuxkart -y
+ wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/xscreensaver.desktop -O /etc/xdg/autostart/xscreensaver.desktop
+ apt remove gnome-screensaver
+ wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/.xscreensaver -O "/home/$user/.xscreensaver"
+ ;;
+esac
+
+#install arduino ide
+case $DE in
+ Y*|y*)
+ apt install arduino usbutils unzip wget -y
+ wget https://downloads.arduino.cc/arduino-ide/nightly/arduino-ide_nightly-20250529_Linux_64bit.zip -O /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip
+ unzip /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip -d /usr/share/arduino-ide_nightly-20250529_Linux_64bit
+ rm /usr/share/arduino-ide_nightly-20250529_Linux_64bit.zip
+ wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/arduino2.desktop -O /usr/share/applications/arduino2.desktop
+ ;;
+esac
+
+#install openMV IDE
+case $omv in
+ Y*|y*)
+ apt install usbutils -y
+ wget https://github.com/openmv/openmv-ide/releases/download/development/openmv-ide-linux-x86_64-4.6.1.tar.gz -O /tmp/openmv.tar.gz
+ tar -xzf /tmp/openmv.tar.gz --directory /tmp/
+ sh /tmp/openmv-ide/setup.sh
+ rm /tmp/openmv.tar.gz
+ rm -rf /tmp/openmv-ide/
+ ;;
+esac
+
+#setup GIT
+case $git in
+ Y*|y*)
+ apt install git wget gnupg-utils fdisk -y
+ gpg --output /tmp/secrets.tar.gz --decrypt $secloc
+ tar -xzf /tmp/secrets.tar.gz /tmp/
+ gpg --import /tmp/secrets/public.key
+ gpg --import /tmp/secrets/private.key
+ mkdir -p "/home/$user/.ssh/"
+ cp ./secrets/ssh-robosoccer "/home/$user/.ssh/ssh-robosoccer"
+ cp ./secrets/ssh-robosoccer.pub "/home/$user/.ssh/ssh-robosoccer.pub"
+ sudo -u $user "git config --global user.signingkey 08242B7544C76B9E9B4EFB91C6C9DC589850AB7D"
+ wget https://github.com/mendelcollege-robotics/robotica/blob/main/setup/.gitmessage.txt -O /home/$user/.gitmessage.txt
+ sudo -u $user "git config --global commit.template ~/.gitmessage.txt"
+ ;;
+esac
+
+#download git repo
+case $gitrep in
+ Y*|y*)
+ sudo -u $user "git clone git@github.com:mendelcollege-robotics/robotica.git $gitreploc"
+ ;;
+esac
+
+sl -1 -F -a | lolcat
+cat << "EOF"
+
+
+
+
+
+
+ ________________
+ / \
+ | Setup complete |
+ | see you |
+ | next time! |
+ \_____ _______/
+ | /
+ | /
+ |/
+ \|/
+ -----------
+ | |
+ | ~ 0 |
+ | |
+ | \_____/ |
+ -----------
+ __/ \__
+ / \ / \
+ / |[] | | \
+ / /| | |\ \
+ | | | | | | |
+ | | | | | | |
+ |__| | | |__|
+ { } ==={}=== { }
+ /||\ | || | /||\
+ | || |
+ | || |
+ | || |
+ | || |
+ /--- || ---\
+ /______/ \______\
+EOF
+sleep 2
+
+cat << "EOF"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+EOF
+fortune -a | cowsay -f tux | lolcat