diff --git a/kiauh.sh b/kiauh.sh index f25bfeb..200b427 100755 --- a/kiauh.sh +++ b/kiauh.sh @@ -34,7 +34,6 @@ OCTOPRINT_SERVICE2=/etc/default/octoprint #misc INI_FILE=${HOME}/kiauh/kiauh.ini BACKUP_DIR=${HOME}/kiauh-backups -PRINTER_CFG=${HOME}/printer.cfg ### set github repos KLIPPER_REPO=https://github.com/KevinOConnor/klipper.git diff --git a/scripts/functions.sh b/scripts/functions.sh index 7919aa3..713e332 100755 --- a/scripts/functions.sh +++ b/scripts/functions.sh @@ -11,6 +11,20 @@ check_euid(){ 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(){ source ${HOME}/kiauh/kiauh.ini } @@ -316,4 +330,4 @@ remove_branding(){ N|n|No|no) break;; esac done -} \ No newline at end of file +} diff --git a/scripts/install_dwc2.sh b/scripts/install_dwc2.sh index fcc1080..dd1e07c 100755 --- a/scripts/install_dwc2.sh +++ b/scripts/install_dwc2.sh @@ -4,9 +4,7 @@ install_dwc2(){ #ask user for customization get_user_selections_dwc2 #dwc2 main installation - check_for_folder_dwc2 tornado_setup - dwc2fk_setup dwc2_setup #setup config write_printer_cfg_dwc2 @@ -25,10 +23,11 @@ install_dwc2(){ system_check_dwc2(){ status_msg "Initializing DWC2 installation ..." stop_klipper + check_for_folder_dwc2 #check for existing printer.cfg - if [ -e ${HOME}/printer.cfg ]; then + locate_printer_cfg + if [ ! -z $PRINTER_CFG ]; then PRINTER_CFG_FOUND="true" - PRINTER_CFG_LOC="${HOME}/printer.cfg" else PRINTER_CFG_FOUND="false" fi @@ -59,8 +58,8 @@ get_user_selections_dwc2(){ echo -e "| option or error will prevent DWC2 from loading and |" echo -e "| you need to check klippy.log to resolve the error. |" echo -e "| |" - echo -e "| Neither option 1 or 2 of this script will create a |" - echo -e "| fully working printer.cfg for you! |" + echo -e "| ${red}Neither option 1 or 2 of this script will create a |" + echo -e "| fully working printer.cfg for you!${default} |" hr echo -e "| 1) [Create default configuration] |" echo -e "| 2) [Create custom configuration] |" @@ -142,32 +141,40 @@ tornado_setup(){ fi } -dwc2fk_setup(){ +dwc2_setup(){ + #check dependencies + dep=(git wget gzip tar curl) + dependency_check + #get dwc2-for-klipper cd ${HOME} status_msg "Cloning DWC2-for-Klipper repository ..." - git clone $DWC2FK_REPO && ok_msg "DWC2-for-Klipper successfully cloned!" + git clone $DWC2FK_REPO + ok_msg "DWC2-for-Klipper successfully cloned!" #create a web_dwc2.py symlink if not already existing if [ -d $KLIPPER_DIR/klippy/extras ] && [ ! -e $KLIPPER_DIR/klippy/extras/web_dwc2.py ]; then status_msg "Creating web_dwc2.py Symlink ..." - ln -s $DWC2FK_DIR/web_dwc2.py $KLIPPER_DIR/klippy/extras/web_dwc2.py && ok_msg "Symlink created!" + ln -s $DWC2FK_DIR/web_dwc2.py $KLIPPER_DIR/klippy/extras/web_dwc2.py + ok_msg "Symlink created!" fi -} - -dwc2_setup(){ - #check dependencies - dep=(wget gzip tar curl) - dependency_check - #execute operation + #get Duet Web Control GET_DWC2_URL=`curl -s https://api.github.com/repositories/28820678/releases/latest | grep browser_download_url | cut -d'"' -f4` cd $DWC2_DIR/web status_msg "Downloading DWC2 Web UI ..." - wget -q $GET_DWC2_URL && ok_msg "Download complete!" + wget -q $GET_DWC2_URL + ok_msg "Download complete!" status_msg "Unzipping archive ..." - unzip -q -o *.zip && for f_ in $(find . | grep '.gz');do gunzip -f ${f_};done && ok_msg "Done!" - status_msg "Writing version to file ..." - echo $GET_DWC2_URL | cut -d/ -f8 > $DWC2_DIR/web/version && ok_msg "Done!" + unzip -q -o *.zip + for f_ in $(find . | grep '.gz') + do + gunzip -f ${f_} + done + ok_msg "Done!" + status_msg "Writing DWC version to file ..." + echo $GET_DWC2_URL | cut -d/ -f8 > $DWC2_DIR/web/version + ok_msg "Done!" status_msg "Do a little cleanup ..." - rm -rf DuetWebControl-SD.zip && ok_msg "Done!" + rm -rf DuetWebControl-SD.zip + ok_msg "Done!" ok_msg "DWC2 Web UI installed!" } @@ -182,27 +189,31 @@ setup_printer_config_dwc2(){ fi if [ "$SEL_DEF_CFG" = "true" ]; then create_default_dwc2_printer_cfg + locate_printer_cfg fi if [ "$SEL_CUS_CFG" = "true" ]; then #get user input for custom config create_custom_dwc2_printer_cfg + locate_printer_cfg fi } read_printer_cfg_dwc2(){ unset SC_ENTRY SC="#*# <---------------------- SAVE_CONFIG ---------------------->" - if [ ! $(grep '^\[virtual_sdcard\]$' ${HOME}/printer.cfg) ]; then + if [ ! $(grep '^\[virtual_sdcard\]$' $PRINTER_CFG) ]; then VSD="false" fi - if [ ! $(grep '^\[web_dwc2\]$' ${HOME}/printer.cfg) ]; then + if [ ! $(grep '^\[web_dwc2\]$' $PRINTER_CFG) ]; then WEB_DWC2="false" fi #check for a SAVE_CONFIG entry - if [[ $(grep "$SC" ${HOME}/printer.cfg) ]]; then - SC_LINE=$(grep -n "$SC" ${HOME}/printer.cfg | cut -d ":" -f1) + if [[ $(grep "$SC" $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 } @@ -224,30 +235,32 @@ write_printer_cfg_dwc2(){ PRE_SC_LINE="$(expr $SC_LINE - 1)a" for entry in "${write_entries[@]}" do - sed -i "$PRE_SC_LINE $entry" ${HOME}/printer.cfg + sed -i "$PRE_SC_LINE $entry" $PRINTER_CFG done fi if [ "$SC_ENTRY" = "false" ]; then - LINE_COUNT="$(wc -l < ${HOME}/printer.cfg)a" + LINE_COUNT="$(wc -l < $PRINTER_CFG)a" for entry in "${write_entries[@]}" do - sed -i "$LINE_COUNT $entry" ${HOME}/printer.cfg + sed -i "$LINE_COUNT $entry" $PRINTER_CFG done fi ok_msg "Done!" } write_custom_printer_cfg_dwc2(){ - if [ "$CONFIRM_CUSTOM_CFG" = "true" ]; then - echo -e "$DWC2_CFG" >> ${HOME}/printer.cfg + #create custom config + if [ "$PRINTER_CFG_FOUND" = "false" ] && [ "$CONFIRM_CUSTOM_CFG" = "true" ]; then + touch $PRINTER_CFG + echo -e "$DWC2_CFG" >> $PRINTER_CFG fi } create_default_dwc2_printer_cfg(){ -#create default config -touch ${HOME}/printer.cfg -cat <> ${HOME}/printer.cfg - + #create default config + if [ "$PRINTER_CFG_FOUND" = "false" ] && [ "$SEL_CUS_CFG" = "true" ]; then + touch $PRINTER_CFG + cat <> $PRINTER_CFG ########################## ### CREATED WITH KIAUH ### ########################## @@ -267,8 +280,8 @@ listen_adress: 0.0.0.0 listen_port: 4750 web_path: dwc2/web ########################## -########################## DEFAULT_DWC2_CFG + fi } ############################################################# @@ -288,7 +301,6 @@ create_custom_dwc2_printer_cfg(){ read -e -p "Web path: " -i "dwc2/web" WEB_PATH echo -e "${default}" DWC2_CFG=$(cat < Yes" + SEL_KLIPPYLOG_SL="true";; + N|n|No|no) + echo -e "###### > No" + SEL_KLIPPYLOG_SL="false";; + esac + break + done + fi + #user selection for moonraker.log symlink if [ "$MOONRAKER_SL_FOUND" = "false" ]; then while true; do echo @@ -142,10 +167,10 @@ get_user_selections_moonraker(){ case "$yn" in Y|y|Yes|yes|"") echo -e "###### > Yes" - ADD_MAINSAIL_MACROS="true";; + ADD_MS_MCAROS="true";; N|n|No|no) echo -e "###### > No" - ADD_MAINSAIL_MACROS="false";; + ADD_MS_MCAROS="false";; esac break done @@ -211,17 +236,14 @@ check_for_folder_moonraker(){ setup_printer_config_mainsail(){ if [ "$PRINTER_CFG_FOUND" = "true" ]; then backup_printer_cfg - if [ "$PRINTER_CFG_LOC" != "${HOME}/klipper_config/printer.cfg" ]; then - status_msg "Moving printer.cfg to ~/klipper_config ..." - mv $PRINTER_CFG_LOC ${HOME}/klipper_config + #create a printer.cfg symlink to make it accessible + #in the mainsail config editor if the printer.cfg is not + #located in klipper_config by default + if [ "$PRINTER_CFG" != "${HOME}/klipper_config/printer.cfg" ] && [ ! -f ${HOME}/klipper_config/printer.cfg ]; then + status_msg "Create printer.cfg symlink ..." + ln -s $PRINTER_CFG ${HOME}/klipper_config ok_msg "Done!" fi - status_msg "Create symlink in home directory ..." - if [ -f ${HOME}/printer.cfg ]; then - mv ${HOME}/printer.cfg ${HOME}/printer_old.cfg - fi - ln -s ${HOME}/klipper_config/printer.cfg ${HOME} - ok_msg "Done!" #check printer.cfg for necessary mainsail entries read_printer_cfg_mainsail write_printer_cfg_mainsail @@ -233,7 +255,7 @@ setup_printer_config_mainsail(){ ok_msg "Done!" fi #copy mainsail_macro.cfg - if [ "$ADD_MAINSAIL_MACROS" = "true" ]; then + if [ "$ADD_MS_MCAROS" = "true" ]; then status_msg "Create mainsail_macros.cfg ..." if [ ! -f ${HOME}/klipper_config/mainsail_macros.cfg ]; then cp ${HOME}/kiauh/resources/mainsail_macros.cfg ${HOME}/klipper_config @@ -246,26 +268,31 @@ setup_printer_config_mainsail(){ read_printer_cfg_mainsail(){ SC="#*# <---------------------- SAVE_CONFIG ---------------------->" - if [ ! $(grep '^\[virtual_sdcard\]$' ${HOME}/klipper_config/printer.cfg) ]; then + if [ ! $(grep '^\[virtual_sdcard\]$' $PRINTER_CFG) ]; then VSD="false" fi - if [ ! $(grep '^\[pause_resume\]$' ${HOME}/klipper_config/printer.cfg) ]; then + if [ ! $(grep '^\[pause_resume\]$' $PRINTER_CFG) ]; then PAUSE_RESUME="false" fi - if [ ! $(grep '^\[display_status\]$' ${HOME}/klipper_config/printer.cfg) ]; then + if [ ! $(grep '^\[display_status\]$' $PRINTER_CFG) ]; then DISPLAY_STATUS="false" fi + if [ ! "$(grep '^\[include klipper_config\/mainsail_macros\.cfg\]$' $PRINTER_CFG)" ]; then + MS_MACRO="false" + fi #check for a SAVE_CONFIG entry - if [[ $(grep "$SC" ${HOME}/klipper_config/printer.cfg) ]]; then - SC_LINE=$(grep -n "$SC" ${HOME}/klipper_config/printer.cfg | cut -d ":" -f1) + if [[ $(grep "$SC" $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 } write_printer_cfg_mainsail(){ unset write_entries - if [ "$ADD_MAINSAIL_MACROS" = "true" ]; then + if [ "$MS_MACRO" = "false" ] && [ "$ADD_MS_MCAROS" = "true" ]; then write_entries+=("[include klipper_config/mainsail_macros.cfg]") fi if [ "$PAUSE_RESUME" = "false" ]; then @@ -287,14 +314,14 @@ write_printer_cfg_mainsail(){ PRE_SC_LINE="$(expr $SC_LINE - 1)a" for entry in "${write_entries[@]}" do - sed -i "$PRE_SC_LINE $entry" ${HOME}/klipper_config/printer.cfg + sed -i "$PRE_SC_LINE $entry" $PRINTER_CFG done fi if [ "$SC_ENTRY" = "false" ]; then - LINE_COUNT="$(wc -l < ${HOME}/klipper_config/printer.cfg)a" + LINE_COUNT="$(wc -l < $PRINTER_CFG)a" for entry in "${write_entries[@]}" do - sed -i "$LINE_COUNT $entry" ${HOME}/klipper_config/printer.cfg + sed -i "$LINE_COUNT $entry" $PRINTER_CFG done fi ok_msg "Done!" @@ -358,7 +385,7 @@ write_default_trusted_clients(){ #write the ip range in the first line below "trusted clients" #example: 192.168.1.0/24 sed -i "/trusted_clients\:/a \ \ \ \ $DEFAULT_IP_RANGE" ${HOME}/moonraker.conf - ok_msg "IP range of ${cyan}$DEFAULT_IP_RANGE${default} written to moonraker.conf!" + ok_msg "IP range of ● $DEFAULT_IP_RANGE written to moonraker.conf!" } ############################################################# @@ -431,11 +458,17 @@ write_custom_trusted_clients(){ fi } -symlink_moonraker_log(){ - #create a moonraker.log symlink in klipper_config-dir just for convenience - if [ "$SEL_MRLOG_SL" = "true" ]; then +symlinks_moonraker(){ + #create a klippy.log/moonraker.log symlink in + #klipper_config-dir just for convenience + if [ "$SEL_KLIPPYLOG_SL" = "true" ] && [ ! -e ${HOME}/klipper_config/klippy.log ]; then + status_msg "Creating klippy.log symlink ..." + ln -s /tmp/klippy.log ${HOME}/klipper_config + ok_msg "Symlink created!" + fi + if [ "$SEL_MRLOG_SL" = "true" ] && [ ! -e ${HOME}/klipper_config/moonraker.log ]; then status_msg "Creating moonraker.log symlink ..." - ln -s /tmp/moonraker.log ${HOME}/klipper_config/moonraker.log + ln -s /tmp/moonraker.log ${HOME}/klipper_config ok_msg "Symlink created!" fi } @@ -454,4 +487,4 @@ test_api(){ else echo; warn_msg "Klipper API not working correctly!"; echo fi -} \ No newline at end of file +} diff --git a/scripts/remove.sh b/scripts/remove.sh index 50392b9..6f9a9f4 100755 --- a/scripts/remove.sh +++ b/scripts/remove.sh @@ -67,6 +67,7 @@ remove_moonraker(){ ${HOME}/moonraker.conf ${HOME}/moonraker.log ${HOME}/klipper_config/moonraker.log + ${HOME}/klipper_config/klippy.log ${HOME}/.klippy_api_key ${HOME}/.moonraker_api_key ) @@ -89,17 +90,10 @@ remove_moonraker(){ status_msg "Removing moonraker.conf ..." rm -rf ${HOME}/moonraker.conf && ok_msg "File removed!" fi - #remove printer.cfg symlink, copy printer.cfg back into home dir - if [ -L ${HOME}/printer.cfg ]; then - status_msg "Removing printer.cfg symlink ..." - rm -rf ${HOME}/printer.cfg && ok_msg "Symlink removed!" - status_msg "Copy printer.cfg back into '${HOME}' ..." - cp ${HOME}/klipper_config/printer.cfg ${HOME} && ok_msg "File copied!" - fi #remove moonraker.log and symlink - if [[ -L ${HOME}/moonraker.log || -L ${HOME}/klipper_config/moonraker.log || -e /tmp/moonraker.log ]]; then - status_msg "Removing moonraker.log and Symlink ..." - rm -rf ${HOME}/moonraker.log ${HOME}/klipper_config/moonraker.log /tmp/moonraker.log + if [[ -L ${HOME}/moonraker.log || -L ${HOME}/klipper_config/moonraker.log || -L ${HOME}/klipper_config/klippy.log || -e /tmp/moonraker.log ]]; then + status_msg "Removing Logs and Symlinks ..." + rm -rf ${HOME}/moonraker.log ${HOME}/klipper_config/moonraker.log ${HOME}/klipper_config/klippy.log /tmp/moonraker.log ok_msg "Files removed!" fi #remove legacy api key