Compare commits
1 Commits
v4
...
ruben-poda
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d190a60ff7 |
@@ -18,6 +18,7 @@ class ShellCommand:
|
|||||||
self.command = shlex.split(cmd)
|
self.command = shlex.split(cmd)
|
||||||
self.timeout = config.getfloat('timeout', 2., above=0.)
|
self.timeout = config.getfloat('timeout', 2., above=0.)
|
||||||
self.verbose = config.getboolean('verbose', True)
|
self.verbose = config.getboolean('verbose', True)
|
||||||
|
self.terminate = config.getboolean('terminate', True)
|
||||||
self.proc_fd = None
|
self.proc_fd = None
|
||||||
self.partial_output = ""
|
self.partial_output = ""
|
||||||
self.gcode.register_mux_command(
|
self.gcode.register_mux_command(
|
||||||
@@ -68,7 +69,7 @@ class ShellCommand:
|
|||||||
if proc.poll() is not None:
|
if proc.poll() is not None:
|
||||||
complete = True
|
complete = True
|
||||||
break
|
break
|
||||||
if not complete:
|
if not complete and self.terminate:
|
||||||
proc.terminate()
|
proc.terminate()
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
if self.partial_output:
|
if self.partial_output:
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ function print_detected_mcu_to_screen() {
|
|||||||
local i=1
|
local i=1
|
||||||
|
|
||||||
if (( ${#mcu_list[@]} < 1 )); then
|
if (( ${#mcu_list[@]} < 1 )); then
|
||||||
print_error "No MCU found!\n MCU either not connected or not detected!"
|
print_error "No MCU found!\n MCU eihter not connected or not detected!"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ function select_mcu_id() {
|
|||||||
local i=0 sel_index=0 method=${1}
|
local i=0 sel_index=0 method=${1}
|
||||||
|
|
||||||
if (( ${#mcu_list[@]} < 1 )); then
|
if (( ${#mcu_list[@]} < 1 )); then
|
||||||
print_error "No MCU found!\n MCU either not connected or not detected!"
|
print_error "No MCU found!\n MCU eihter not connected or not detected!"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ function install_fluidd() {
|
|||||||
while true; do
|
while true; do
|
||||||
echo
|
echo
|
||||||
top_border
|
top_border
|
||||||
echo -e "| Install MJPG-Streamer for webcam support? |"
|
echo -e "| Install MJGP-Streamer for webcam support? |"
|
||||||
bottom_border
|
bottom_border
|
||||||
read -p "${cyan}###### Please select (y/N):${white} " yn
|
read -p "${cyan}###### Please select (y/N):${white} " yn
|
||||||
case "${yn}" in
|
case "${yn}" in
|
||||||
|
|||||||
@@ -28,34 +28,32 @@ function klipper_systemd() {
|
|||||||
echo "${services}"
|
echo "${services}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function klipper_exists() {
|
||||||
|
local services
|
||||||
|
[[ -n $(klipper_initd) ]] && services+="$(klipper_initd) "
|
||||||
|
[[ -n $(klipper_systemd) ]] && services+="$(klipper_systemd)"
|
||||||
|
echo "${services}"
|
||||||
|
}
|
||||||
|
|
||||||
function klipper_setup_dialog() {
|
function klipper_setup_dialog() {
|
||||||
status_msg "Initializing Klipper installation ..."
|
status_msg "Initializing Klipper installation ..."
|
||||||
|
|
||||||
local klipper_initd_service
|
local klipper_services
|
||||||
local klipper_systemd_services
|
|
||||||
local python_version="${1}" user_input=()
|
local python_version="${1}" user_input=()
|
||||||
local error
|
klipper_services=$(klipper_exists)
|
||||||
|
|
||||||
klipper_initd_service=$(klipper_initd)
|
|
||||||
klipper_systemd_services=$(klipper_systemd)
|
|
||||||
user_input+=("${python_version}")
|
user_input+=("${python_version}")
|
||||||
|
|
||||||
### return early if klipper already exists
|
### return early if klipper already exists
|
||||||
if [[ -n ${klipper_initd_service} ]]; then
|
if [[ -n ${klipper_services} ]]; then
|
||||||
error="Unsupported Klipper SysVinit service detected:"
|
local error="At least one Klipper service is already installed:"
|
||||||
error="${error}\n ➔ ${klipper_initd_service}"
|
|
||||||
error="${error}\n Please re-install Klipper with KIAUH!"
|
|
||||||
log_info "Unsupported Klipper SysVinit service detected: ${klipper_initd_service}"
|
|
||||||
elif [[ -n ${klipper_systemd_services} ]]; then
|
|
||||||
error="At least one Klipper service is already installed:"
|
|
||||||
|
|
||||||
for s in ${klipper_systemd_services}; do
|
for s in ${klipper_services}; do
|
||||||
log_info "Found Klipper service: ${s}"
|
log_info "Found Klipper service: ${s}"
|
||||||
error="${error}\n ➔ ${s}"
|
error="${error}\n ➔ ${s}"
|
||||||
done
|
done
|
||||||
fi
|
|
||||||
|
|
||||||
[[ -n ${error} ]] && print_error "${error}" && return
|
print_error "${error}" && return
|
||||||
|
fi
|
||||||
|
|
||||||
### ask for amount of instances to create
|
### ask for amount of instances to create
|
||||||
top_border
|
top_border
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ function install_mainsail() {
|
|||||||
while true; do
|
while true; do
|
||||||
echo
|
echo
|
||||||
top_border
|
top_border
|
||||||
echo -e "| Install MJPG-Streamer for webcam support? |"
|
echo -e "| Install MJGP-Streamer for webcam support? |"
|
||||||
bottom_border
|
bottom_border
|
||||||
read -p "${cyan}###### Please select (y/N):${white} " yn
|
read -p "${cyan}###### Please select (y/N):${white} " yn
|
||||||
case "${yn}" in
|
case "${yn}" in
|
||||||
@@ -564,9 +564,8 @@ function select_mainsail_port() {
|
|||||||
function enable_mainsail_remotemode() {
|
function enable_mainsail_remotemode() {
|
||||||
[[ ! -f "${MAINSAIL_DIR}/config.json" ]] && return
|
[[ ! -f "${MAINSAIL_DIR}/config.json" ]] && return
|
||||||
|
|
||||||
status_msg "Setting instance storage location to 'browser' ..."
|
rm -f "${MAINSAIL_DIR}/config.json"
|
||||||
sed -i 's|"instancesDB": "moonraker"|"instancesDB": "browser"|' "${MAINSAIL_DIR}/config.json"
|
echo -e "{\n \"remoteMode\":true\n}" >> "${MAINSAIL_DIR}/config.json"
|
||||||
ok_msg "Done!"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function patch_mainsail_update_manager() {
|
function patch_mainsail_update_manager() {
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ function moonraker_setup() {
|
|||||||
create_moonraker_service "${instance_arr[@]}"
|
create_moonraker_service "${instance_arr[@]}"
|
||||||
|
|
||||||
### step 5: create polkit rules for moonraker
|
### step 5: create polkit rules for moonraker
|
||||||
install_moonraker_polkit || true
|
moonraker_polkit || true
|
||||||
|
|
||||||
### step 6: enable and start all instances
|
### step 6: enable and start all instances
|
||||||
do_action_service "enable" "moonraker"
|
do_action_service "enable" "moonraker"
|
||||||
@@ -340,7 +340,9 @@ function create_moonraker_service() {
|
|||||||
|
|
||||||
### enable mainsails remoteMode if mainsail is found
|
### enable mainsails remoteMode if mainsail is found
|
||||||
if [[ -d ${MAINSAIL_DIR} ]]; then
|
if [[ -d ${MAINSAIL_DIR} ]]; then
|
||||||
|
status_msg "Mainsail installation found! Enabling Mainsail remote mode ..."
|
||||||
enable_mainsail_remotemode
|
enable_mainsail_remotemode
|
||||||
|
ok_msg "Mainsails remote mode enabled!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -377,20 +379,8 @@ function print_mr_ip_list() {
|
|||||||
### introduced due to
|
### introduced due to
|
||||||
### https://github.com/Arksine/moonraker/issues/349
|
### https://github.com/Arksine/moonraker/issues/349
|
||||||
### https://github.com/Arksine/moonraker/pull/346
|
### https://github.com/Arksine/moonraker/pull/346
|
||||||
function install_moonraker_polkit() {
|
function moonraker_polkit() {
|
||||||
local POLKIT_LEGACY_FILE="/etc/polkit-1/localauthority/50-local.d/10-moonraker.pkla"
|
|
||||||
local POLKIT_FILE="/etc/polkit-1/rules.d/moonraker.rules"
|
|
||||||
local POLKIT_USR_FILE="/usr/share/polkit-1/rules.d/moonraker.rules"
|
|
||||||
local legacy_file_exists
|
|
||||||
local file_exists
|
|
||||||
local usr_file_exists
|
|
||||||
|
|
||||||
local has_sup
|
local has_sup
|
||||||
local require_daemon_reload="false"
|
|
||||||
|
|
||||||
legacy_file_exists=$(sudo find "${POLKIT_LEGACY_FILE}" 2> /dev/null)
|
|
||||||
file_exists=$(sudo find "${POLKIT_FILE}" 2> /dev/null)
|
|
||||||
usr_file_exists=$(sudo find "${POLKIT_USR_FILE}" 2> /dev/null)
|
|
||||||
|
|
||||||
### check for required SupplementaryGroups entry in service files
|
### check for required SupplementaryGroups entry in service files
|
||||||
### write it to the service if it doesn't exist
|
### write it to the service if it doesn't exist
|
||||||
@@ -399,25 +389,14 @@ function install_moonraker_polkit() {
|
|||||||
if [[ -z ${has_sup} ]]; then
|
if [[ -z ${has_sup} ]]; then
|
||||||
status_msg "Adding moonraker-admin supplementary group to ${service} ..."
|
status_msg "Adding moonraker-admin supplementary group to ${service} ..."
|
||||||
sudo sed -i "/^Type=simple$/a SupplementaryGroups=moonraker-admin" "${service}"
|
sudo sed -i "/^Type=simple$/a SupplementaryGroups=moonraker-admin" "${service}"
|
||||||
require_daemon_reload="true"
|
|
||||||
ok_msg "Adding moonraker-admin supplementary group successfull!"
|
ok_msg "Adding moonraker-admin supplementary group successfull!"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ ${require_daemon_reload} == "true" ]]; then
|
[[ -z ${has_sup} ]] && echo "reloading services!!!" && sudo systemctl daemon-reload
|
||||||
status_msg "Reloading unit files ..."
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
ok_msg "Unit files reloaded!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
### execute moonrakers policykit-rules script only if rule files do not already exist
|
### execute moonrakers policykit-rules script
|
||||||
if [[ -z ${legacy_file_exists} && ( -z ${file_exists} || -z ${usr_file_exists} ) ]]; then
|
"${HOME}"/moonraker/scripts/set-policykit-rules.sh
|
||||||
status_msg "Installing Moonraker policykit rules ..."
|
|
||||||
"${HOME}"/moonraker/scripts/set-policykit-rules.sh
|
|
||||||
ok_msg "Moonraker policykit rules installed!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#==================================================#
|
#==================================================#
|
||||||
@@ -539,7 +518,7 @@ function update_moonraker() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
### required due to https://github.com/Arksine/moonraker/issues/349
|
### required due to https://github.com/Arksine/moonraker/issues/349
|
||||||
install_moonraker_polkit || true
|
moonraker_polkit
|
||||||
|
|
||||||
ok_msg "Update complete!"
|
ok_msg "Update complete!"
|
||||||
do_action_service "restart" "moonraker"
|
do_action_service "restart" "moonraker"
|
||||||
|
|||||||
@@ -43,57 +43,53 @@ function change_klipper_repo_menu() {
|
|||||||
back_help_footer
|
back_help_footer
|
||||||
|
|
||||||
local option
|
local option
|
||||||
local num="^[0-9]+$"
|
|
||||||
local back="^(B|b)$"
|
|
||||||
local help="^(H|h)$"
|
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
read -p "${cyan}###### Perform action:${white} " option
|
read -p "${cyan}###### Perform action:${white} " option
|
||||||
|
case "${option}" in
|
||||||
|
0 | "$(( option < ${#repos[@]} ))")
|
||||||
|
select_msg "Repo: ${repos[option]} Branch: ${branches[option]}"
|
||||||
|
if [[ -d ${KLIPPER_DIR} ]]; then
|
||||||
|
top_border
|
||||||
|
echo -e "| ${red}!!! ATTENTION !!!${white} |"
|
||||||
|
echo -e "| Existing Klipper folder found! Proceeding will remove | "
|
||||||
|
echo -e "| the existing Klipper folder and replace it with a | "
|
||||||
|
echo -e "| clean copy of the previously selected source repo! | "
|
||||||
|
bottom_border
|
||||||
|
|
||||||
if [[ ${option} =~ ${num} && ${option} -lt ${#repos[@]} ]]; then
|
local yn
|
||||||
select_msg "Repo: ${repos[option]} Branch: ${branches[option]}"
|
while true; do
|
||||||
|
read -p "${cyan}###### Proceed? (Y/n):${white} " yn
|
||||||
if [[ -d ${KLIPPER_DIR} ]]; then
|
case "${yn}" in
|
||||||
top_border
|
Y|y|Yes|yes|"")
|
||||||
echo -e "| ${red}!!! ATTENTION !!!${white} |"
|
select_msg "Yes"
|
||||||
echo -e "| Existing Klipper folder found! Proceeding will remove | "
|
switch_klipper_repo "${repos[${option}]}" "${branches[${option}]}"
|
||||||
echo -e "| the existing Klipper folder and replace it with a | "
|
set_custom_klipper_repo "${repos[${option}]}" "${branches[${option}]}"
|
||||||
echo -e "| clean copy of the previously selected source repo! | "
|
break;;
|
||||||
bottom_border
|
N|n|No|no)
|
||||||
|
select_msg "No"
|
||||||
local yn
|
break;;
|
||||||
while true; do
|
*)
|
||||||
read -p "${cyan}###### Proceed? (Y/n):${white} " yn
|
error_msg "Invalid command!";;
|
||||||
case "${yn}" in
|
esac
|
||||||
Y|y|Yes|yes|"")
|
done
|
||||||
select_msg "Yes"
|
else
|
||||||
switch_klipper_repo "${repos[${option}]}" "${branches[${option}]}"
|
status_msg "Set custom Klipper repository to:\n ● Repository: ${repos[${option}]}\n ● Branch: ${branches[${option}]}"
|
||||||
set_custom_klipper_repo "${repos[${option}]}" "${branches[${option}]}"
|
set_custom_klipper_repo "${repos[${option}]}" "${branches[${option}]}"
|
||||||
break;;
|
ok_msg "This repo will now be used for new Klipper installations!\n"
|
||||||
N|n|No|no)
|
fi
|
||||||
select_msg "No"
|
break;;
|
||||||
break;;
|
B|b)
|
||||||
*)
|
clear && print_header
|
||||||
error_msg "Invalid command!";;
|
settings_menu
|
||||||
esac
|
break;;
|
||||||
done
|
H|h)
|
||||||
else
|
clear && print_header
|
||||||
status_msg "Set custom Klipper repository to:\n ● Repository: ${repos[${option}]}\n ● Branch: ${branches[${option}]}"
|
show_custom_klipper_repo_help
|
||||||
set_custom_klipper_repo "${repos[${option}]}" "${branches[${option}]}"
|
break;;
|
||||||
ok_msg "This repo will now be used for new Klipper installations!\n"
|
*)
|
||||||
fi
|
error_msg "Invalid command!";;
|
||||||
|
esac
|
||||||
elif [[ ${option} =~ ${back} ]]; then
|
|
||||||
clear && print_header
|
|
||||||
settings_menu
|
|
||||||
elif [[ ${option} =~ ${help} ]]; then
|
|
||||||
clear && print_header
|
|
||||||
show_custom_klipper_repo_help
|
|
||||||
else
|
|
||||||
error_msg "Invalid command!"
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
change_klipper_repo_menu
|
change_klipper_repo_menu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user