Merge pull request #44 from jordanruthe/master

Add KlipperScreen to kiauh
This commit is contained in:
th33xitus
2020-11-28 16:45:47 +01:00
committed by GitHub
12 changed files with 287 additions and 35 deletions

View File

@@ -43,6 +43,9 @@ OCTOPRINT_DIR=${HOME}/OctoPrint
OCTOPRINT_CFG_DIR=${HOME}/.octoprint
OCTOPRINT_SERVICE1=/etc/init.d/octoprint
OCTOPRINT_SERVICE2=/etc/default/octoprint
#KlipperScreen
KLIPPERSCREEN_DIR=${HOME}/KlipperScreen
KLIPPERSCREEN_ENV_DIR=${HOME}/.KlipperScreen-env
#misc
INI_FILE=${SRCDIR}/kiauh/kiauh.ini
BACKUP_DIR=${HOME}/kiauh-backups
@@ -53,6 +56,7 @@ ARKSINE_REPO=https://github.com/Arksine/klipper.git
DMBUTYUGIN_REPO=https://github.com/dmbutyugin/klipper.git
DWC2FK_REPO=https://github.com/Stephan3/dwc2-for-klipper-socket.git
MOONRAKER_REPO=https://github.com/Arksine/moonraker.git
KLIPPERSCREEN_REPO=https://github.com/jordanruthe/KlipperScreen.git
#branches
BRANCH_SCURVE_SMOOTHING=dmbutyugin/scurve-smoothing
BRANCH_SCURVE_SHAPING=dmbutyugin/scurve-shaping
@@ -102,4 +106,4 @@ clear_msg(){
check_euid
init_ini
kiauh_status
main_menu
main_menu

View File

@@ -122,4 +122,18 @@ backup_octoprint(){
else
ERROR_MSG=" Can't backup OctoPrint and/or .octoprint directory!\n Not found!"
fi
}
}
backup_klipperscreen(){
if [ -d $KLIPPERSCREEN_DIR ] ; then
status_msg "Creating KlipperScreen backup ..."
check_for_backup_dir
get_date
status_msg "Timestamp: $current_date"
mkdir -p $BACKUP_DIR/klipperscreen-backups/"$current_date"
cp -r $KLIPPERSCREEN_DIR $_
ok_msg "Backup complete!"
else
ERROR_MSG=" Can't backup KlipperScreen directory!\n Not found!"
fi
}

View File

@@ -138,6 +138,21 @@ read_octoprint_service_status(){
fi
}
start_klipperscreen(){
status_msg "Starting KlipperScreen Service ..."
sudo systemctl start KlipperScreen && ok_msg "KlipperScreen Service started!"
}
stop_klipperscreen(){
status_msg "Stopping KlipperScreen Service ..."
sudo systemctl stop KlipperScreen && ok_msg "KlipperScreen Service stopped!"
}
restart_klipperscreen(){
status_msg "Restarting KlipperScreen Service ..."
sudo systemctl restart KlipperScreen && ok_msg "KlipperScreen Service restarted!"
}
restart_nginx(){
if [ "$(systemctl list-units --full -all -t service --no-legend | grep -F "nginx.service")" ]; then
status_msg "Restarting Nginx Service ..."
@@ -359,4 +374,4 @@ init_ini(){
if [ ! $(grep -E "^logupload_accepted=." $INI_FILE) ]; then
echo -e "\nlogupload_accepted=false\c" >> $INI_FILE
fi
}
}

View File

@@ -0,0 +1,79 @@
install_klipperscreen(){
python3_check
if [ $py_chk_ok = "true" ]; then
system_check_klipperscreen
#ask user for customization
get_user_selections_klipperscreen
#KlipperScreen main installation
klipperscreen_setup
#execute customizations
symlinks_klipperscreen
#after install actions
restart_klipperscreen
else
ERROR_MSG="Python 3.7 or above required!\n Please upgrade your Python version first."
print_msg && clear_msg
fi
}
python3_check(){
status_msg "Your Python 3 version is: $(python3 --version)"
major=$(python3 --version | cut -d" " -f2 | cut -d"." -f1)
minor=$(python3 --version | cut -d"." -f2)
if [ $major -ge 3 ] && [ $minor -ge 7 ]; then
ok_msg "Python version ok!"
py_chk_ok="true"
else
py_chk_ok="false"
fi
}
system_check_klipperscreen(){
[ ! -e ${HOME}/klipper_config/KlipperScreen.log ] && KLIPPERSCREEN_SL_FOUND="false"
}
get_user_selections_klipperscreen(){
#user selection for KlipperScreen.log symlink
if [ "$KLIPPERSCREEN_SL_FOUND" = "false" ]; then
while true; do
echo
read -p "${cyan}###### Create KlipperScreen.log symlink? (y/N):${default} " yn
case "$yn" in
Y|y|Yes|yes)
echo -e "###### > Yes"
SEL_KSLOG_SL="true"
break;;
N|n|No|no|"")
echo -e "###### > No"
SEL_KSLOG_SL="false"
break;;
*)
print_unkown_cmd
print_msg && clear_msg;;
esac
done
fi
}
klipperscreen_setup(){
dep=(wget curl unzip dfu-util)
dependency_check
status_msg "Downloading KlipperScreen ..."
#force remove existing KlipperScreen dir
[ -d $KLIPPERSCREEN_DIR ] && rm -rf $KLIPPERSCREEN_DIR
#clone into fresh KlipperScreen dir
cd ${HOME} && git clone $KLIPPERSCREEN_REPO
ok_msg "Download complete!"
status_msg "Installing KlipperScreen ..."
$KLIPPERSCREEN_DIR/scripts/KlipperScreen-install.sh
echo; ok_msg "KlipperScreen successfully installed!"
}
symlinks_klipperscreen(){
#create a KlipperScreen.log symlink in klipper_config-dir just for convenience
if [ "$SEL_KSLOG_SL" = "true" ] && [ ! -e ${HOME}/klipper_config/KlipperScreen.log ]; then
status_msg "Creating KlipperScreen.log symlink ..."
ln -s /tmp/KlipperScreen.log ${HOME}/klipper_config
ok_msg "Symlink created!"
fi
}

View File

@@ -302,3 +302,29 @@ remove_nginx(){
ERROR_MSG=" Looks like Nginx was already removed!\n Skipping..."
fi
}
remove_klipperscreen(){
data_arr=(
$KLIPPERSCREEN_DIR
$KLIPPERSCREEN_ENV_DIR
/etc/systemd/system/KlipperScreen.service
)
print_error "KlipperScreen" && data_count=()
if [ "$ERROR_MSG" = "" ]; then
#remove KlipperScreen dir
if [ -d $KLIPPERSCREEN_DIR ]; then
status_msg "Removing KlipperScreen directory ..."
rm -rf $KLIPPERSCREEN_DIR && ok_msg "Directory removed!"
fi
if [ -d $KLIPPERSCREEN_ENV_DIR ]; then
status_msg "Removing KlipperScreen VENV directory ..."
rm -rf $KLIPPERSCREEN_ENV_DIR && ok_msg "Directory removed!"
fi
#remove KlipperScreen systemd file
if [ -e /etc/systemd/system/KlipperScreen.service ]; then
status_msg "Removing KlipperScreen configuration for Nginx ..."
sudo rm /etc/systemd/system/KlipperScreen.service && ok_msg "File removed!"
fi
CONFIRM_MSG="KlipperScreen successfully removed!"
fi
}

View File

@@ -27,11 +27,11 @@ klipper_status(){
fi
done
if [ "$kcount" == "${#klipper_data[*]}" ]; then
KLIPPER_STATUS="${green}Installed!${default} "
KLIPPER_STATUS="${green}Installed!${default} "
elif [ "$kcount" == 0 ]; then
KLIPPER_STATUS="${red}Not installed!${default} "
KLIPPER_STATUS="${red}Not installed!${default} "
else
KLIPPER_STATUS="${yellow}Incomplete!${default} "
KLIPPER_STATUS="${yellow}Incomplete!${default} "
fi
}
@@ -50,11 +50,11 @@ dwc2_status(){
fi
done
if [ "$dcount" == "${#dwc2_data[*]}" ]; then
DWC2_STATUS="${green}Installed!${default} "
DWC2_STATUS="${green}Installed!${default} "
elif [ "$dcount" == 0 ]; then
DWC2_STATUS="${red}Not installed!${default} "
DWC2_STATUS="${red}Not installed!${default} "
else
DWC2_STATUS="${yellow}Incomplete!${default} "
DWC2_STATUS="${yellow}Incomplete!${default} "
fi
}
@@ -77,11 +77,11 @@ moonraker_status(){
fi
done
if [ "$mrcount" == "${#moonraker_data[*]}" ]; then
MOONRAKER_STATUS="${green}Installed!${default} "
MOONRAKER_STATUS="${green}Installed!${default} "
elif [ "$mrcount" == 0 ]; then
MOONRAKER_STATUS="${red}Not installed!${default} "
MOONRAKER_STATUS="${red}Not installed!${default} "
else
MOONRAKER_STATUS="${yellow}Incomplete!${default} "
MOONRAKER_STATUS="${yellow}Incomplete!${default} "
fi
}
@@ -100,11 +100,11 @@ mainsail_status(){
fi
done
if [ "$mcount" == "${#mainsail_data[*]}" ]; then
MAINSAIL_STATUS="${green}Installed!${default} "
MAINSAIL_STATUS="${green}Installed!${default} "
elif [ "$mcount" == 0 ]; then
MAINSAIL_STATUS="${red}Not installed!${default} "
MAINSAIL_STATUS="${red}Not installed!${default} "
else
MAINSAIL_STATUS="${yellow}Incomplete!${default} "
MAINSAIL_STATUS="${yellow}Incomplete!${default} "
fi
}
@@ -123,11 +123,11 @@ fluidd_status(){
fi
done
if [ "$fcount" == "${#fluidd_data[*]}" ]; then
FLUIDD_STATUS="${green}Installed!${default} "
FLUIDD_STATUS="${green}Installed!${default} "
elif [ "$fcount" == 0 ]; then
FLUIDD_STATUS="${red}Not installed!${default} "
FLUIDD_STATUS="${red}Not installed!${default} "
else
FLUIDD_STATUS="${yellow}Incomplete!${default} "
FLUIDD_STATUS="${yellow}Incomplete!${default} "
fi
}
@@ -147,11 +147,36 @@ octoprint_status(){
fi
done
if [ "$ocount" == "${#octoprint_data[*]}" ]; then
OCTOPRINT_STATUS="${green}Installed!${default} "
OCTOPRINT_STATUS="${green}Installed!${default} "
elif [ "$ocount" == 0 ]; then
OCTOPRINT_STATUS="${red}Not installed!${default} "
OCTOPRINT_STATUS="${red}Not installed!${default} "
else
OCTOPRINT_STATUS="${yellow}Incomplete!${default} "
OCTOPRINT_STATUS="${yellow}Incomplete!${default} "
fi
}
klipperscreen_status(){
mrcount=0
klipperscreen_data=(
SERVICE
$KLIPPERSCREEN_DIR
$KLIPPERSCREEN_ENV_DIR
)
#remove the "SERVICE" entry from the klipperscreen_data array if a klipperscreen service is installed
[ "$(systemctl list-units --full -all -t service --no-legend | grep -F "KlipperScreen.service")" ] && unset klipperscreen_data[0]
#count+1 for each found data-item from array
for mrd in "${klipperscreen_data[@]}"
do
if [ -e $mrd ]; then
mrcount=$(expr $mrcount + 1)
fi
done
if [ "$mrcount" == "${#klipperscreen_data[*]}" ]; then
KLIPPERSCREEN_STATUS="${green}Installed!${default} "
elif [ "$mrcount" == 0 ]; then
KLIPPERSCREEN_STATUS="${red}Not installed!${default} "
else
KLIPPERSCREEN_STATUS="${yellow}Incomplete!${default} "
fi
}
@@ -175,19 +200,19 @@ read_branch(){
print_branch(){
read_branch
if [ "$GET_BRANCH" == "origin/master" ]; then
PRINT_BRANCH="$GET_BRANCH "
PRINT_BRANCH="$GET_BRANCH "
elif [ "$GET_BRANCH" == "origin" ]; then
PRINT_BRANCH="origin/master "
PRINT_BRANCH="origin/master "
elif [ "$GET_BRANCH" == "master" ]; then
PRINT_BRANCH="origin/master "
PRINT_BRANCH="origin/master "
elif [ "$GET_BRANCH" == "dmbutyugin/scurve-shaping" ]; then
PRINT_BRANCH="scurve-shaping "
PRINT_BRANCH="scurve-shaping "
elif [ "$GET_BRANCH" == "dmbutyugin/scurve-smoothing" ]; then
PRINT_BRANCH="scurve-smoothing "
PRINT_BRANCH="scurve-smoothing"
elif [ "$GET_BRANCH" == "Arksine/dev-moonraker-testing" ]; then
PRINT_BRANCH="moonraker "
PRINT_BRANCH="moonraker "
else
PRINT_BRANCH="${red}----${default} "
PRINT_BRANCH="${red}----${default} "
fi
}
@@ -407,6 +432,35 @@ compare_fluidd_versions(){
fi
}
read_klipperscreen_versions(){
if [ -d $KLIPPERSCREEN_DIR ] && [ -d $KLIPPERSCREEN_DIR/.git ]; then
cd $KLIPPERSCREEN_DIR
git fetch origin master -q
LOCAL_KLIPPERSCREEN_COMMIT=$(git describe HEAD --always --tags | cut -d "-" -f 1,2)
LOCAL_KLIPPERSCREEN_COMMIT=$LOCAL_KLIPPERSCREEN_COMMIT$(printf "%$[12-${#LOCAL_KLIPPERSCREEN_COMMIT}]s")
REMOTE_KLIPPERSCREEN_COMMIT=$(git describe origin/master --always --tags | cut -d "-" -f 1,2)
REMOTE_KLIPPERSCREEN_COMMIT=$REMOTE_KLIPPERSCREEN_COMMIT$(printf "%$[12-${#REMOTE_KLIPPERSCREEN_COMMIT}]s")
else
LOCAL_KLIPPERSCREEN_COMMIT="${red}--------${default}"
REMOTE_KLIPPERSCREEN_COMMIT="${red}--------${default}"
fi
}
compare_klipperscreen_versions(){
unset KLIPPERSCREEN_UPDATE_AVAIL
read_klipperscreen_versions
if [ "$LOCAL_KLIPPERSCREEN_COMMIT" != "$REMOTE_KLIPPERSCREEN_COMMIT" ]; then
LOCAL_KLIPPERSCREEN_COMMIT="${yellow}$LOCAL_KLIPPERSCREEN_COMMIT${default}"
REMOTE_KLIPPERSCREEN_COMMIT="${green}$REMOTE_KLIPPERSCREEN_COMMIT${default}"
KLIPPERSCREEN_UPDATE_AVAIL="true"
update_arr+=(update_klipperscreen)
else
LOCAL_KLIPPERSCREEN_COMMIT="${green}$LOCAL_KLIPPERSCREEN_COMMIT${default}"
REMOTE_KLIPPERSCREEN_COMMIT="${green}$REMOTE_KLIPPERSCREEN_COMMIT${default}"
KLIPPERSCREEN_UPDATE_AVAIL="false"
fi
}
#############################################################
#############################################################
@@ -418,4 +472,5 @@ ui_print_versions(){
compare_moonraker_versions
compare_mainsail_versions
compare_fluidd_versions
compare_klipperscreen_versions
}

View File

@@ -15,6 +15,9 @@ backup_ui(){
echo -e "| | "
echo -e "| 5) [OctoPrint] | "
echo -e "| | "
echo -e "| HDMI Screen: | "
echo -e "| 6) [KlipperScreen] | "
echo -e "| | "
quit_footer
}
@@ -55,6 +58,12 @@ backup_menu(){
backup_octoprint
print_msg && clear_msg
backup_ui;;
6)
clear
print_header
backup_klipperscreen
print_msg && clear_msg
backup_ui;;
Q|q)
clear; main_menu; break;;
*)

View File

@@ -11,6 +11,9 @@ install_ui(){
echo -e "| | 4) [Mainsail] | "
echo -e "| Klipper API: | 5) [Fluidd] | "
echo -e "| 2) [Moonraker] | 6) [Octoprint] | "
echo -e "| | | "
echo -e "| | HDMI Screen | "
echo -e "| | 7) [KlipperScreen] | "
quit_footer
}
@@ -56,6 +59,12 @@ install_menu(){
install_octoprint
print_msg && clear_msg
install_ui;;
7)
clear
print_header
install_klipperscreen
print_msg && clear_msg
install_ui;;
Q|q)
clear; main_menu; break;;
*)

View File

@@ -2,15 +2,17 @@ main_ui(){
top_border
echo -e "| $(title_msg "~~~~~~~~~~~~~~~ [ Main Menu ] ~~~~~~~~~~~~~~~") |"
hr
echo -e "| 0) [Upload Log] | Klipper: $KLIPPER_STATUS|"
echo -e "| | Branch: ${cyan}$PRINT_BRANCH${default}|"
echo -e "| 0) [Upload Log] | Klipper: $KLIPPER_STATUS|"
echo -e "| | Branch: ${cyan}$PRINT_BRANCH${default}|"
echo -e "| 1) [Install] | |"
echo -e "| 2) [Update] | Moonraker: $MOONRAKER_STATUS|"
echo -e "| 2) [Update] | Moonraker: $MOONRAKER_STATUS|"
echo -e "| 3) [Remove] | |"
echo -e "| | DWC2: $DWC2_STATUS|"
echo -e "| 4) [Advanced] | Fluidd: $FLUIDD_STATUS|"
echo -e "| 5) [Backup] | Mainsail: $MAINSAIL_STATUS|"
echo -e "| | Octoprint: $OCTOPRINT_STATUS|"
echo -e "| | DWC2: $DWC2_STATUS|"
echo -e "| 4) [Advanced] | Fluidd: $FLUIDD_STATUS|"
echo -e "| 5) [Backup] | Mainsail: $MAINSAIL_STATUS|"
echo -e "| | Octoprint: $OCTOPRINT_STATUS|"
echo -e "| | |"
echo -e "| | KlipperScreen: $KLIPPERSCREEN_STATUS|"
quit_footer
}
@@ -27,6 +29,7 @@ main_menu(){
fluidd_status
mainsail_status
octoprint_status
klipperscreen_status
print_branch
print_msg && clear_msg
main_ui

View File

@@ -16,6 +16,9 @@ remove_ui(){
echo -e "| | | "
echo -e "| | Webserver: | "
echo -e "| | 7) [Nginx] | "
echo -e "| | | "
echo -e "| | HDMI Screen: | "
echo -e "| | 8) KlipperScreen | "
quit_footer
}
@@ -67,6 +70,12 @@ remove_menu(){
remove_nginx
print_msg && clear_msg
remove_ui;;
8)
clear
print_header
remove_klipperscreen
print_msg && clear_msg
remove_ui;;
Q|q)
clear; main_menu; break;;
*)

View File

@@ -22,6 +22,9 @@ update_ui(){
echo -e "| 4) [Moonraker] | $LOCAL_MOONRAKER_COMMIT | $REMOTE_MOONRAKER_COMMIT | "
echo -e "| 5) [Mainsail] | $MAINSAIL_LOCAL_VER | $MAINSAIL_REMOTE_VER | "
echo -e "| 6) [Fluidd] | $FLUIDD_LOCAL_VER | $FLUIDD_REMOTE_VER | "
echo -e "| | | | "
echo -e "| HDMI Screen: |---------------|--------------| "
echo -e "| 7) [KlipperScreen] | $LOCAL_KLIPPERSCREEN_COMMIT | $REMOTE_KLIPPERSCREEN_COMMIT | "
quit_footer
}
@@ -77,6 +80,12 @@ update_menu(){
update_fluidd && ui_print_versions
print_msg && clear_msg
update_ui;;
7)
clear
print_header
update_klipperscreen && ui_print_versions
print_msg && clear_msg
update_ui;;
a)
clear
print_header

View File

@@ -34,6 +34,9 @@ update_all(){
if [ "$FLUIDD_UPDATE_AVAIL" = "true" ]; then
echo -e "| ${cyan}● Fluidd${default} |"
fi
if [ "$KLIPPERSCREEN_UPDATE_AVAIL" = "true" ]; then
echo -e "| ${cyan}● KlipperScreen${default} |"
fi
bottom_border
if [ "${#update_arr[@]}" != "0" ]; then
read -p "${cyan}###### Do you want to proceed? (Y/n):${default} " yn
@@ -166,3 +169,20 @@ update_moonraker(){
ok_msg "Update complete!"
start_moonraker
}
update_klipperscreen(){
stop_klipperscreen
cd $KLIPPERSCREEN_DIR
KLIPPERSCREEN_OLDREQ_MD5SUM=$(md5sum $KLIPPERSCREEN_DIR/scripts/KlipperScreen-requirements.txt | cut -d " " -f1)
git pull origin master -q && ok_msg "Fetch successfull!"
git checkout -f origin/master && ok_msg "Checkout successfull"
#KLIPPERSCREEN_NEWREQ_MD5SUM=$(md5sum $KLIPPERSCREEN_DIR/scripts/KlipperScreen-requirements.txt)
if [[ $(md5sum $KLIPPERSCREEN_DIR/scripts/KlipperScreen-requirements.txt | cut -d " " -f1) != $KLIPPERSCREEN_OLDREQ_MD5SUM ]]; then
status_msg "New dependecies detected..."
PYTHONDIR="${HOME}/.KlipperScreen-env"
$PYTHONDIR/bin/pip install -r $KLIPPERSCREEN_DIR/scripts/KlipperScreen-requirements.txt
ok_msg "Dependencies have been installed!"
fi
ok_msg "Update complete!"
start_klipperscreen
}