raspiblitz/home.admin/config.scripts/blitz.vm.sh

162 lines
No EOL
4.8 KiB
Bash
Executable file

#!/bin/bash
# This is for developing on your RaspiBlitz VM
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-help" ]; then
echo "FOR DEVELOPMENT USE ONLY!"
echo "RaspiBlitzVM Sync with repos in /mnt/vm_shared_folder"
echo "blitz.vm.sh sync -> syncs all available repos in shared folder"
echo "blitz.vm.sh sync code -> syncs only the raspiblitz repo"
echo "blitz.vm.sh sync api -> syncs only the raspiblitz API repo"
echo ""
exit 1
fi
# check runnig as sudo
if [ "$EUID" -ne 0 ]; then
echo "error='please run as root'"
exit 1
fi
# check if running in vm
isVM=$(grep -c 'hypervisor' /proc/cpuinfo)
if [ ${isVM} -eq 0 ]; then
echo "# This script is only for RaspiBlitz running in a VM"
echo "error='not a VM'"
exit 1
fi
# check if shared folder exists
if [ ! -d "/mnt/vm_shared_folder" ]; then
echo "# Creating shared folder /mnt/vm_shared_folder"
mkdir /mnt/vm_shared_folder
chmod 777 /mnt/vm_shared_folder
fi
# check if shared folder is mounted
isMounted=$(mount | grep '/mnt/vm_shared_folder')
if [ ${#isMounted} -eq 0 ]; then
echo "# Mounting shared folder /mnt/vm_shared_folder"
mount -t 9p -o trans=virtio share /mnt/vm_shared_folder
if [ $? -eq 0 ]; then
echo "# OK - shared folder mounted"
else
echo "# make sure to activate shared folder in VM settings (VirtFS)"
echo "error='mount failed'"
exit 1
fi
fi
# RASPIBLITZ MAIN REPO
if [ "$2" == "code" ] || [ "$2" == "" ]; then
echo
echo "# ##### RASPIBLITZ REPO"
#check if contains a raspiblitz MAIN repo
containsRaspiBlitzRepo=$(ls /mnt/vm_shared_folder | grep -wc 'raspiblitz')
if [ ${containsRaspiBlitzRepo} -eq 0 ]; then
echo "# /mnt/vm_shared_folder does not contain a raspiblitz repo"
echo "# make sure to share the directory that contains the raspiblitz repo - not the repo itself"
echo "# make sure its named 'raspiblitz' and not 'raspiblitz-main' or 'raspiblitz-v1.7'"
if [ "$2" != "" ]; then
echo "error='no raspiblitz main repo'"
exit 1
fi
else
cd /home/admin
echo "# COPYING from VM SHARED FOLDER to /home/admin/"
echo "# - basic admin files"
rm -f *.sh
su - admin -c 'cp /mnt/vm_shared_folder/raspiblitz/home.admin/.tmux.conf /home/admin'
su - admin -c 'cp /mnt/vm_shared_folder/raspiblitz/home.admin/*.* /home/admin 2>/dev/null'
su - admin -c 'chmod 755 *.sh'
echo "# - asset directory"
rm -rf assets
su - admin -c 'cp -R /mnt/vm_shared_folder/raspiblitz/home.admin/assets /home/admin/assets'
echo "# - config.scripts directory"
rm -rf /home/admin/config.scripts
su - admin -c 'cp -R /mnt/vm_shared_folder/raspiblitz/home.admin/config.scripts /home/admin/config.scripts'
su - admin -c 'chmod 755 /home/admin/config.scripts/*.sh'
su - admin -c 'chmod 755 /home/admin/config.scripts/*.py'
echo "# - setup.scripts directory"
rm -rf /home/admin/setup.scripts
su - admin -c 'cp -R /mnt/vm_shared_folder/raspiblitz/home.admin/setup.scripts /home/admin/setup.scripts'
su - admin -c 'chmod 755 /home/admin/setup.scripts/*.sh'
su - admin -c 'chmod 755 /home/admin/config.scripts/*.py'
echo "# ******************************************"
if [ "$2" != "" ]; then
exit 0
fi
fi
fi
# RASPIBLITZ API REPO
if [ "$2" == "api" ] || [ "$2" == "" ]; then
echo
echo "# ##### RASPIBLITZ API REPO"
# check if blitzapi service is enabled
systemctl is-enabled blitzapi 2>/dev/null
notInstalled=$?
#check if contains a raspiblitz API repo
containsApiRepo=$(ls /mnt/vm_shared_folder | grep -wc 'blitz_api')
if [ ${containsApiRepo} -eq 0 ]; then
echo "# /mnt/vm_shared_folder does not contain a api repo"
echo "# make sure to share the directory that contains the api repo - not the repo itself"
echo "# make sure its named 'blitz_api'"
if [ "$2" != "" ]; then
echo "error='no raspiblitz api repo'"
exit 1
fi
elif [ ${notInstalled} -gt 0 ]; then
echo "# blitzapi service is not installed or enabled - skipping"
if [ "$2" != "" ]; then
echo "error='blitzapi service not enabled'"
exit 1
fi
else
echo "# TODO: Not implemented yet - use /script/updateBlitzAPI.sh instead to sync from host to VM"
#echo "# Stopping blitzapi service"
#systemctl stop blitzapi
#echo "# COPYING from VM SHARED FOLDER to /home/blitzapi/"
#rm -rf /home/blitzapi/blitz_api
#cp -R /mnt/vm_shared_folder/blitz_api /home/blitzapi
#chown -R blitzapi:blitzapi /home/blitzapi/blitz_api
#cd /home/blitzapi/blitz_api || exit 1
#su - blitzapi -c './venv/bin/pip install -r requirements.txt'
#echo "# Starting blitzapi service"
#systemctl start blitzapi
if [ "$2" != "" ]; then
exit 0
fi
fi
fi
if [ "$1" == "sync" ]; then
exit 0
fi
# in case of unknown command
echo "error='unkown command'"
exit 1