feat: KIAUH v4.0.0 #191

Merged
dw-0 merged 453 commits from v4-rc into master 2022-05-29 20:11:16 +02:00
Showing only changes of commit c1cc1f0d19 - Show all commits

View File

@@ -32,10 +32,10 @@ function octoprint_setup_dialog(){
done
local octoprint_count
if ((klipper_count == 1)); then
if (( klipper_count == 1 )); then
ok_msg "Klipper installation found!\n"
octoprint_count=1
elif ((klipper_count > 1)); then
elif (( klipper_count > 1 )); then
top_border
printf "|${green}%-55s${white}|\n" " ${klipper_count} Klipper instances found!"
for name in "${klipper_names[@]}"; do
@@ -67,9 +67,10 @@ function octoprint_setup_dialog(){
user_input+=("${octoprint_count}")
### confirm instance amount
local yn
while true; do
((octoprint_count == 1)) && local question="Install OctoPrint?"
((octoprint_count > 1)) && local question="Install ${octoprint_count} OctoPrint instances?"
(( octoprint_count == 1 )) && local question="Install OctoPrint?"
(( octoprint_count > 1 )) && local question="Install ${octoprint_count} OctoPrint instances?"
read -p "${cyan}###### ${question} (Y/n):${white} " yn
case "${yn}" in
Y|y|Yes|yes|"")
@@ -91,8 +92,8 @@ function octoprint_setup_dialog(){
done
fi
((octoprint_count > 1)) && status_msg "Installing ${octoprint_count} OctoPrint instances ..."
((octoprint_count == 1)) && status_msg "Installing OctoPrint ..."
(( octoprint_count > 1 )) && status_msg "Installing ${octoprint_count} OctoPrint instances ..."
(( octoprint_count == 1 )) && status_msg "Installing OctoPrint ..."
octoprint_setup "${user_input[@]}"
}
@@ -127,8 +128,8 @@ function octoprint_setup(){
### confirm message
local confirm=""
(( instance_arr[0] == 1)) && confirm="OctoPrint has been set up!"
(( instance_arr[0] > 1)) && confirm="${instance_arr[0]} OctoPrint instances have been set up!"
(( instance_arr[0] == 1 )) && confirm="OctoPrint has been set up!"
(( instance_arr[0] > 1 )) && confirm="${instance_arr[0]} OctoPrint instances have been set up!"
print_confirm "${confirm}" && print_op_ip_list "${instance_arr[0]}" && return
}
@@ -139,7 +140,7 @@ function install_octoprint(){
### create and activate the virtualenv
status_msg "Installing python virtual environment..."
if [[ ! -d "${tmp}" ]]; then
if [[ ! -d ${tmp} ]]; then
mkdir -p "${tmp}"
else
error_msg "Cannot create temporary directory in ${HOME}!"
@@ -149,10 +150,12 @@ function install_octoprint(){
fi
cd "${tmp}" && virtualenv --python=python3 venv
### activate virtualenv
source venv/bin/activate
pip install pip --upgrade
pip install --no-cache-dir octoprint
### leave virtualenv
deactivate
cd "${HOME}"
@@ -165,13 +168,15 @@ function install_octoprint(){
local tmp="${HOME}/TMP_OCTO_ENV"
### handle single instance installs
if ((octoprint_count == 1)); then
if (( octoprint_count == 1 )); then
if install_octoprint_python_env "${tmp}"; then
status_msg "Installing OctoPrint ..."
octo_env="${HOME}/OctoPrint"
### rename the temporary directory to the correct name
[[ -d ${octo_env} ]] && rm -rf "${octo_env}"
mv "${tmp}" "${octo_env}"
### replace the temporary directory name with the actual one in ${octo_env}/venv/bin/python/octoprint
sed -i "s|${tmp}|${octo_env}|" "${octo_env}/venv/bin/octoprint"
else
@@ -183,15 +188,17 @@ function install_octoprint(){
### handle multi instance installs
if (( octoprint_count > 1 )); then
if install_octoprint_python_env "${tmp}"; then
for ((i=1; i <= octoprint_count; i++ )); do
for (( i=1; i <= octoprint_count; i++ )); do
status_msg "Installing OctoPrint instance ${i}(${names[${j}]}) ..."
octo_env="${HOME}/OctoPrint_${names[${j}]}"
### rename the temporary directory to the correct name
[[ -d ${octo_env} ]] && rm -rf "${octo_env}"
cp -r "${tmp}" "${octo_env}"
### replace the temporary directory name with the actual one in ${octo_env}/venv/bin/python/octoprint
sed -i "s|${tmp}|${octo_env}|" "${octo_env}/venv/bin/octoprint"
j=$((j+1))
j=$(( j + 1 ))
done && rm -rf "${tmp}"
else
error_msg "OctoPrint installation failed!"
@@ -207,7 +214,7 @@ function create_octoprint_service(){
local j=0 port=5000
local octo_env service basedir tmp_printer config_yaml restart_cmd
for ((i=1; i <= octoprint_count; i++)); do
for (( i=1; i <= octoprint_count; i++ )); do
if (( octoprint_count == 1 )); then
octo_env="${HOME}/OctoPrint"
service="${SYSTEMD}/octoprint.service"
@@ -223,8 +230,10 @@ function create_octoprint_service(){
config_yaml="${basedir}/config.yaml"
restart_cmd="sudo service octoprint-${names[${j}]} restart"
fi
(( octoprint_count == 1 )) && status_msg "Creating OctoPrint Service ..."
(( octoprint_count > 1 )) && status_msg "Creating OctoPrint Service ${i}(${names[${j}]}) ..."
sudo /bin/sh -c "cat > ${service}" << OCTOPRINT
[Unit]
Description=Starts OctoPrint on startup
@@ -241,15 +250,18 @@ ExecStart=${octo_env}/venv/bin/octoprint --basedir ${basedir} --config ${config_
[Install]
WantedBy=multi-user.target
OCTOPRINT
port=$((port+1))
j=$((j+1))
port=$(( port + 1 ))
j=$(( j + 1 ))
ok_msg "Ok!"
### create config.yaml
if [[ ! -f ${basedir}/config.yaml ]]; then
[[ ! -d ${basedir} ]] && mkdir "${basedir}"
(( octoprint_count == 1 )) && status_msg "Creating config.yaml ..."
(( octoprint_count > 1 )) && status_msg "Creating config.yaml for instance ${i}(${names[${j}]}) ..."
/bin/sh -c "cat > ${basedir}/config.yaml" << CONFIGYAML
serial:
additionalPorts:
@@ -272,6 +284,7 @@ function add_reboot_permission(){
if [[ -f /etc/sudoers.d/octoprint-shutdown ]]; then
sudo mv /etc/sudoers.d/octoprint-shutdown /etc/sudoers.d/octoprint-shutdown.old
fi
#create new permission file
status_msg "Add reboot permission to user '${USER}' ..."
cd "${HOME}" && echo "${USER} ALL=NOPASSWD: /sbin/shutdown" > octoprint-shutdown
@@ -283,9 +296,10 @@ function add_reboot_permission(){
function print_op_ip_list(){
local ip octoprint_count="${1}" port=5000
ip=$(hostname -I | cut -d" " -f1)
for ((i=1; i <= octoprint_count; i++)); do
for (( i=1; i <= octoprint_count; i++ )); do
echo -e " ${cyan}● Instance ${i}:${white} ${ip}:${port}"
port=$((port+1))
port=$(( port + 1 ))
done && echo
}
@@ -294,8 +308,9 @@ function print_op_ip_list(){
#=================================================#
function remove_octoprint_service(){
###remove all octoprint services
[[ -z "$(octoprint_systemd)" ]] && return
###remove all octoprint services
status_msg "Removing OctoPrint Systemd Services ..."
for service in $(octoprint_systemd | cut -d"/" -f5)
do
@@ -305,6 +320,7 @@ function remove_octoprint_service(){
sudo rm -f "${SYSTEMD}/${service}"
ok_msg "Done!"
done
### reloading units
sudo systemctl daemon-reload
sudo systemctl reset-failed
@@ -312,6 +328,7 @@ function remove_octoprint_service(){
function remove_octoprint_sudoers(){
[[ ! -f /etc/sudoers.d/octoprint-shutdown ]] && return
### remove sudoers file
sudo rm -f /etc/sudoers.d/octoprint-shutdown
}
@@ -365,10 +382,11 @@ function get_octoprint_status(){
if (( sf_count == 0 )) && (( env_count == 0 )) && (( dir_count == 0 )); then
status="Not installed!"
elif (( sf_count == env_count)) && (( sf_count == dir_count)); then
elif (( sf_count == env_count)) && (( sf_count == dir_count )); then
status="Installed: ${sf_count}"
else
status="Incomplete!"
fi
echo "${status}"
}