Files
kiauh/scripts/functions.sh

295 lines
8.6 KiB
Bash
Raw Normal View History

# setting up some frequently used functions
check_euid(){
if [ "$EUID" -eq 0 ]
then
echo -e "${red}"
2020-07-23 10:20:14 +02:00
top_border
echo -e "| !!! THIS SCRIPT MUST NOT RAN AS ROOT !!! |"
bottom_border
echo -e "${default}"
exit 1
fi
}
locate_printer_cfg(){
if [ -f $KLIPPER_SERVICE2 ]; then
#reads /etc/default/klipper and gets the default printer.cfg location
PRINTER_CFG_LOC=$(grep "KLIPPY_ARGS=" /etc/default/klipper | cut -d" " -f2)
if [ -e $PRINTER_CFG_LOC ]; then
PRINTER_CFG=$(readlink -e $PRINTER_CFG_LOC)
else
PRINTER_CFG=""
fi
else
PRINTER_CFG=""
fi
}
source_ini(){
2020-07-13 17:53:08 +02:00
source ${HOME}/kiauh/kiauh.ini
}
start_klipper(){
if [ -e /etc/init.d/klipper ]; then
2020-07-15 22:52:23 +02:00
status_msg "Starting Klipper Service ..."
sudo /etc/init.d/klipper start && sleep 2 && ok_msg "Klipper Service started!"
fi
}
2020-07-13 21:08:31 +02:00
stop_klipper(){
if [ -e /etc/init.d/klipper ]; then
2020-07-15 22:52:23 +02:00
status_msg "Stopping Klipper Service ..."
sudo /etc/init.d/klipper stop && sleep 2 && ok_msg "Klipper Service stopped!"
fi
}
2020-07-13 21:08:31 +02:00
restart_klipper(){
if [ -e /etc/init.d/klipper ]; then
2020-07-15 22:52:23 +02:00
status_msg "Restarting Klipper Service ..."
sudo /etc/init.d/klipper restart && sleep 2 && ok_msg "Klipper Service restarted!"
2020-07-13 21:08:31 +02:00
fi
}
start_moonraker(){
if [ -e /etc/init.d/moonraker ]; then
2020-07-15 22:52:23 +02:00
status_msg "Starting Moonraker Service ..."
sudo /etc/init.d/moonraker start && sleep 2 && ok_msg "Moonraker Service started!"
fi
}
stop_moonraker(){
if [ -e /etc/init.d/moonraker ]; then
2020-07-15 22:52:23 +02:00
status_msg "Stopping Moonraker Service ..."
sudo /etc/init.d/moonraker stop && sleep 2 && ok_msg "Moonraker Service stopped!"
fi
}
2020-07-13 21:08:31 +02:00
restart_moonraker(){
if [ -e /etc/init.d/moonraker ]; then
2020-07-15 22:52:23 +02:00
status_msg "Restarting Moonraker Service ..."
sudo /etc/init.d/moonraker restart && sleep 2 && ok_msg "Moonraker Service restarted!"
2020-07-13 21:08:31 +02:00
fi
}
2020-07-15 18:57:46 +02:00
start_octoprint(){
if [ -e /etc/init.d/octoprint ]; then
2020-07-15 22:52:23 +02:00
status_msg "Starting OctoPrint Service ..."
sudo /etc/init.d/octoprint start && sleep 2 && ok_msg "OctoPrint Service started!"
2020-07-15 18:57:46 +02:00
fi
}
stop_octoprint(){
if [ -e /etc/init.d/octoprint ]; then
2020-07-15 22:52:23 +02:00
status_msg "Stopping OctoPrint Service ..."
sudo /etc/init.d/octoprint stop && sleep 2 && ok_msg "OctoPrint Service stopped!"
2020-07-15 18:57:46 +02:00
fi
}
restart_octoprint(){
if [ -e /etc/init.d/octoprint ]; then
2020-07-15 22:52:23 +02:00
status_msg "Restarting OctoPrint Service ..."
sudo /etc/init.d/octoprint restart && sleep 2 && ok_msg "OctoPrint Service restarted!"
2020-07-15 18:57:46 +02:00
fi
}
2020-08-22 19:14:11 +02:00
enable_octoprint_service(){
if [[ -f $OCTOPRINT_SERVICE1 && -f $OCTOPRINT_SERVICE2 ]]; then
status_msg "OctoPrint Service is disabled! Enabling now ..."
sudo systemctl enable octoprint -q && sudo systemctl start octoprint
fi
}
disable_octoprint(){
if [ "$DISABLE_OPRINT" = "true" ]; then
disable_octoprint_service
fi
}
disable_octoprint_service(){
if [[ -f $OCTOPRINT_SERVICE1 && -f $OCTOPRINT_SERVICE2 ]]; then
status_msg "OctoPrint Service is enabled! Disabling now ..."
sudo systemctl stop octoprint && sudo systemctl disable octoprint -q
fi
}
toggle_octoprint_service(){
if [[ -f $OCTOPRINT_SERVICE1 && -f $OCTOPRINT_SERVICE2 ]]; then
if systemctl is-enabled octoprint.service -q; then
disable_octoprint_service
sleep 2
CONFIRM_MSG=" OctoPrint Service is now >>> DISABLED <<< !"
else
enable_octoprint_service
sleep 2
CONFIRM_MSG=" OctoPrint Service is now >>> ENABLED <<< !"
fi
else
ERROR_MSG=" You cannot activate a service that does not exist!"
fi
}
read_octoprint_service_status(){
if ! systemctl is-enabled octoprint.service -q &>/dev/null; then
OPRINT_SERVICE_STATUS="${green}[Enable]${default} OctoPrint Service "
else
OPRINT_SERVICE_STATUS="${red}[Disable]${default} OctoPrint Service "
fi
}
2020-07-19 22:38:21 +02:00
restart_nginx(){
if [ -e /etc/init.d/nginx ]; then
status_msg "Restarting Nginx Service ..."
sudo /etc/init.d/nginx restart && sleep 2 && ok_msg "Nginx Service restarted!"
fi
}
2020-07-23 10:20:14 +02:00
dependency_check(){
status_msg "Checking for the following dependencies:"
2020-07-23 10:20:14 +02:00
#check if package is installed, if not write name into array
for pkg in "${dep[@]}"
do
echo -e "${cyan}$pkg ${default}"
2020-07-23 10:20:14 +02:00
if [[ ! $(dpkg-query -f'${Status}' --show $pkg 2>/dev/null) = *\ installed ]]; then
inst+=($pkg)
fi
done
2020-07-23 10:20:14 +02:00
#if array is not empty, install packages from array elements
if [ "${#inst[@]}" != "0" ]; then
status_msg "Installing the following dependencies:"
for element in ${inst[@]}
do
echo -e "${cyan}$element ${default}"
done
echo
sudo apt-get install ${inst[@]} -y
ok_msg "Dependencies installed!"
#clearing the array
unset inst
else
ok_msg "Dependencies already met! Continue..."
fi
}
print_error(){
for data in "${data_arr[@]}"
do
if [ ! -e $data ]; then
data_count+=(0)
else
data_count+=(1)
fi
done
sum=$(IFS=+; echo "$((${data_count[*]}))")
if [ $sum -eq 0 ]; then
2020-08-20 17:38:24 +02:00
ERROR_MSG="Looks like $1 was already removed!\n Skipping..."
else
ERROR_MSG=""
fi
}
remove_branding(){
echo
top_border
echo -e "| This action will remove the Voron brandings from |"
echo -e "| your Mainsail installation. You have to perform |"
echo -e "| this action again, everytime you updated Mainsail. |"
bottom_border
while true; do
read -p "${cyan}###### Do you want to continue? (Y/n):${default} " yn
case "$yn" in
Y|y|Yes|yes|"")
cd $MAINSAIL_DIR/css
FILE=$(find -name "app.*.css" | cut -d"/" -f2)
status_msg "Patching file '$FILE' ..."
cp -n $KLIPPER_DIR/docs/img/klipper-logo-small.png $MAINSAIL_DIR/img/
#write extra lines to app.css
echo >> "$FILE"
cat < ${HOME}/kiauh/resources/app.css >> "$FILE"
ok_msg "File '$FILE' patched!"
status_msg "Setting new Favicon ..."
#backup old favicon
cp -n $MAINSAIL_DIR/favicon.ico $MAINSAIL_DIR/voron_favicon.ico
cp ${HOME}/kiauh/resources/favicon.ico $MAINSAIL_DIR/favicon.ico
ok_msg "Icon set!"
echo
ok_msg "Brandings removed!"
ok_msg "Clear browser cache and reload Mainsail (F5)!"
echo
break;;
N|n|No|no) break;;
esac
done
}
install_extension_shell_command(){
echo
top_border
echo -e "| You are about to install the shell command extension. |"
echo -e "| Please make sure to read the instructions before you |"
echo -e "| continue and remember that there are potential risks! |"
bottom_border
while true; do
read -p "${cyan}###### Do you want to continue? (Y/n):${default} " yn
case "$yn" in
Y|y|Yes|yes|"")
if [ -d $KLIPPER_DIR/klippy/extras ] && [ ! -f $KLIPPER_DIR/klippy/extras/shell_command.py ] ; then
status_msg "Installing shell command extension ..."
stop_klipper
cp ${HOME}/kiauh/resources/shell_command.py $KLIPPER_DIR/klippy/extras
status_msg "Creating example macro ..."
create_shell_command_example
ok_msg "Example macro created!"
ok_msg "Shell command extension installed!"
restart_klipper
else
if [ ! -d $KLIPPER_DIR/klippy/extras ]; then
ERROR_MSG="Folder ~/klipper/klippy/extras not found!"
fi
if [ -f $KLIPPER_DIR/klippy/extras/shell_command.py ]; then
ERROR_MSG="Extension already installed!"
fi
fi
break;;
N|n|No|no)
break;;
esac
done
}
create_shell_command_example(){
unset SC_ENTRY
unset write_entries
#check for a SAVE_CONFIG entry
SC="#*# <---------------------- SAVE_CONFIG ---------------------->"
if [[ $(grep "$SC" ${HOME}/printer.cfg) ]]; then
SC_LINE=$(grep -n "$SC" $PRINTER_CFG | cut -d ":" -f1)
PRE_SC_LINE=$(expr $SC_LINE - 1)
SC_ENTRY="true"
else
SC_ENTRY="false"
fi
#example shell command
write_entries+=("[shell_command hello_world]\ncommand: echo hello world\ntimeout: 2.\nverbose: True")
#example macro
write_entries+=("[gcode_macro HELLO_WORLD]\ngcode:\n RUN_SHELL_COMMAND CMD=hello_world")
if [ "${#write_entries[@]}" != "0" ]; then
write_entries+=("\\\n############################\n##### CREATED BY KIAUH #####\n############################")
write_entries=("############################\n" "${write_entries[@]}")
fi
#execute writing
status_msg "Writing to printer.cfg ..."
if [ "$SC_ENTRY" = "true" ]; then
PRE_SC_LINE="$(expr $SC_LINE - 1)a"
for entry in "${write_entries[@]}"
do
sed -i "$PRE_SC_LINE $entry" $PRINTER_CFG
done
fi
if [ "$SC_ENTRY" = "false" ]; then
LINE_COUNT="$(wc -l < $PRINTER_CFG)a"
for entry in "${write_entries[@]}"
do
sed -i "$LINE_COUNT $entry" $PRINTER_CFG
done
fi
}