1 Commits

Author SHA1 Message Date
Ruben P
d190a60ff7 add an option to terminate or not subprocess
default is true (same behavior as now)
2022-08-29 23:17:51 +02:00
7 changed files with 75 additions and 102 deletions

View File

@@ -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:

View File

@@ -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

View File

@@ -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
@@ -423,4 +423,4 @@ MOONRAKER_CONF
if [[ ${patched} == "true" ]]; then if [[ ${patched} == "true" ]]; then
do_action_service "restart" "moonraker" do_action_service "restart" "moonraker"
fi fi
} }

View File

@@ -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

View File

@@ -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() {
@@ -598,4 +597,4 @@ MOONRAKER_CONF
if [[ ${patched} == "true" ]]; then if [[ ${patched} == "true" ]]; then
do_action_service "restart" "moonraker" do_action_service "restart" "moonraker"
fi fi
} }

View File

@@ -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"

View File

@@ -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
} }