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 d4d9f971c6 - Show all commits

View File

@@ -36,20 +36,22 @@ function klipper_exists() {
}
function klipper_setup_dialog(){
local python_version="${1}" user_input=()
user_input+=("${python_version}")
status_msg "Initializing Klipper installation ..."
### return early if klipper already exists
local klipper_services
local python_version="${1}" user_input=()
klipper_services=$(klipper_exists)
user_input+=("${python_version}")
### return early if klipper already exists
if [[ -n ${klipper_services} ]]; then
local error="At least one Klipper service is already installed:"
for s in ${klipper_services}; do
log_info "Found Klipper service: ${s}"
error="${error}\n ➔ ${s}"
done
print_error "${error}" && return
fi
@@ -72,6 +74,7 @@ function klipper_setup_dialog(){
### error messages on invalid input
error_msg "Input not a number"
done && select_msg "${klipper_count}"
user_input+=("${klipper_count}")
### confirm instance amount
@@ -118,7 +121,7 @@ function klipper_setup_dialog(){
done
### get user input for custom names
if [[ "${custom_names}" == "true" ]]; then
if [[ ${custom_names} == "true" ]]; then
local i=1 name="" re="^[0-9a-zA-Z]+$"
while [[ ! ${name} =~ ${re} && ${i} -le ${klipper_count} ]]; do
read -p "${cyan}###### Name for instance #${i}:${white} " name
@@ -132,15 +135,15 @@ function klipper_setup_dialog(){
done
else
### if no custom names are used, add the respective amount of indices to the user_input array
for ((i=1; i <= klipper_count; i++)); do
for (( i=1; i <= klipper_count; i++ )); do
user_input+=("${i}")
done
fi
fi
((klipper_count > 1)) && status_msg "Installing ${klipper_count} Klipper instances ..."
((klipper_count == 1)) && status_msg "Installing single Klipper instance ..."
(( klipper_count > 1 )) && status_msg "Installing ${klipper_count} Klipper instances ..."
(( klipper_count == 1 )) && status_msg "Installing single Klipper instance ..."
klipper_setup "${user_input[@]}"
}
@@ -157,7 +160,7 @@ function install_klipper_packages(){
### add dbus requirement for DietPi distro
[[ -e "/boot/dietpi/.version" ]] && packages+=" dbus"
if [[ "${python_version}" == "python3" ]]; then
if [[ ${python_version} == "python3" ]]; then
### replace python-dev with python3-dev if python3 was selected
packages="${packages//python-dev/python3-dev}"
else
@@ -231,6 +234,7 @@ function klipper_setup(){
### step 1: clone klipper
### force remove existing klipper dir and clone into fresh klipper dir
[[ -d ${KLIPPER_DIR} ]] && rm -rf "${KLIPPER_DIR}"
if [[ -z ${custom_repo} ]]; then
status_msg "Downloading Klipper ..."
cd "${HOME}" && git clone "${KLIPPER_REPO}"
@@ -265,12 +269,14 @@ function klipper_setup(){
local confirm=""
(( instance_arr[0] == 1)) && confirm="Klipper has been set up!"
(( instance_arr[0] > 1)) && confirm="${instance_arr[0]} Klipper instances have been set up!"
print_confirm "${confirm}" && return
}
function write_klipper_service(){
local i=${1} cfg=${2} log=${3} printer=${4} uds=${5} service=${6}
local service_template="${KIAUH_SRCDIR}/resources/klipper.service"
### replace all placeholders
if [[ ! -f ${service} ]]; then
status_msg "Creating Klipper Service ${i} ..."
@@ -287,13 +293,13 @@ function write_example_printer_cfg(){
local cfg_template="${KIAUH_SRCDIR}/resources/printer.cfg"
### create a config directory if it doesn't exist
if [[ ! -d "${cfg_dir}" ]]; then
if [[ ! -d ${cfg_dir} ]]; then
status_msg "Creating '${cfg_dir}' ..."
mkdir -p "${cfg_dir}"
fi
### create a minimal config if there is no printer.cfg
if [[ ! -f "${cfg}" ]]; then
if [[ ! -f ${cfg} ]]; then
status_msg "Creating minimal example printer.cfg ..."
cp "${cfg_template}" "${cfg}"
fi
@@ -337,7 +343,7 @@ function create_klipper_service(){
write_klipper_service "${names[${j}]}" "${cfg}" "${log}" "${printer}" "${uds}" "${service}"
write_example_printer_cfg "${cfg_dir}" "${cfg}"
ok_msg "Klipper instance 'klipper-${names[${j}]} created!"
j=$((j+1))
j=$(( j + 1 ))
done && unset j
else
@@ -351,6 +357,7 @@ function create_klipper_service(){
function remove_klipper_sysvinit() {
[[ ! -e "${INITD}/klipper" ]] && return
status_msg "Removing Klipper SysVinit service ..."
sudo systemctl stop klipper
sudo update-rc.d -f klipper remove
@@ -360,15 +367,16 @@ function remove_klipper_sysvinit() {
function remove_klipper_systemd() {
[[ -z $(klipper_systemd) ]] && return
status_msg "Removing Klipper Systemd Services ..."
for service in $(klipper_systemd | cut -d"/" -f5)
do
for service in $(klipper_systemd | cut -d"/" -f5); do
status_msg "Removing ${service} ..."
sudo systemctl stop "${service}"
sudo systemctl disable "${service}"
sudo rm -f "${SYSTEMD}/${service}"
ok_msg "Done!"
done
### reloading units
sudo systemctl daemon-reload
sudo systemctl reset-failed
@@ -378,6 +386,7 @@ function remove_klipper_systemd() {
function remove_klipper_logs() {
local files regex="klippy(-[0-9a-zA-Z]+)?\.log(.*)?"
files=$(find "${KLIPPER_LOGS}" -maxdepth 1 -regextype posix-extended -regex "${KLIPPER_LOGS}/${regex}" 2> /dev/null | sort)
if [[ -n ${files} ]]; then
for file in ${files}; do
status_msg "Removing ${file} ..."
@@ -390,6 +399,7 @@ function remove_klipper_logs() {
function remove_klipper_uds() {
local files
files=$(find /tmp -maxdepth 1 -regextype posix-extended -regex "/tmp/klippy_uds(-[0-9a-zA-Z]+)?" | sort)
if [[ -n ${files} ]]; then
for file in ${files}; do
status_msg "Removing ${file} ..."
@@ -401,6 +411,7 @@ function remove_klipper_uds() {
function remove_klipper_printer() {
local files
files=$(find /tmp -maxdepth 1 -regextype posix-extended -regex "/tmp/printer(-[0-9a-zA-Z]+)?" | sort)
if [[ -n ${files} ]]; then
for file in ${files}; do
@@ -413,6 +424,7 @@ function remove_klipper_printer() {
function remove_klipper_dir() {
[[ ! -d ${KLIPPER_DIR} ]] && return
status_msg "Removing Klipper directory ..."
rm -rf "${KLIPPER_DIR}"
ok_msg "Directory removed!"
@@ -420,6 +432,7 @@ function remove_klipper_dir() {
function remove_klipper_env() {
[[ ! -d ${KLIPPY_ENV} ]] && return
status_msg "Removing klippy-env directory ..."
rm -rf "${KLIPPY_ENV}"
ok_msg "Directory removed!"
@@ -444,6 +457,7 @@ function remove_klipper(){
function update_klipper(){
do_action_service "stop" "klipper"
if [[ ! -d ${KLIPPER_DIR} ]]; then
cd "${HOME}" && git clone "${KLIPPER_REPO}"
else
@@ -455,6 +469,7 @@ function update_klipper(){
### install possible new python dependencies
"${KLIPPY_ENV}"/bin/pip install -r "${KLIPPER_DIR}/scripts/klippy-requirements.txt"
fi
ok_msg "Update complete!"
do_action_service "restart" "klipper"
}
@@ -466,6 +481,7 @@ function update_klipper(){
function get_klipper_status(){
local sf_count status py_ver
sf_count="$(klipper_systemd | wc -w)"
### detect an existing "legacy" klipper init.d installation
if [[ $(klipper_systemd | wc -w) -eq 0 ]] \
&& [[ $(klipper_initd | wc -w) -ge 1 ]]; then
@@ -495,20 +511,23 @@ function get_klipper_status(){
else
status="Incomplete!"
fi
echo "${status}"
}
function get_local_klipper_commit(){
local commit
[[ ! -d ${KLIPPER_DIR} || ! -d "${KLIPPER_DIR}/.git" ]] && return
local commit
cd "${KLIPPER_DIR}"
commit="$(git describe HEAD --always --tags | cut -d "-" -f 1,2)"
echo "${commit}"
}
function get_remote_klipper_commit(){
local commit
[[ ! -d ${KLIPPER_DIR} || ! -d "${KLIPPER_DIR}/.git" ]] && return
local commit
cd "${KLIPPER_DIR}" && git fetch origin -q
commit=$(git describe origin/master --always --tags | cut -d "-" -f 1,2)
echo "${commit}"
@@ -519,6 +538,7 @@ function compare_klipper_versions(){
local versions local_ver remote_ver
local_ver="$(get_local_klipper_commit)"
remote_ver="$(get_remote_klipper_commit)"
if [[ ${local_ver} != "${remote_ver}" ]]; then
versions="${yellow}$(printf " %-14s" "${local_ver}")${white}"
versions+="|${green}$(printf " %-13s" "${remote_ver}")${white}"
@@ -529,6 +549,7 @@ function compare_klipper_versions(){
versions+="|${green}$(printf " %-13s" "${remote_ver}")${white}"
KLIPPER_UPDATE_AVAIL="false"
fi
echo "${versions}"
}
@@ -539,11 +560,13 @@ function compare_klipper_versions(){
function get_klipper_cfg_dir() {
local cfg_dir
read_kiauh_ini "${FUNCNAME[0]}"
if [[ -z ${custom_klipper_cfg_loc} ]]; then
cfg_dir="${HOME}/klipper_config"
else
cfg_dir="${custom_klipper_cfg_loc}"
fi
echo "${cfg_dir}"
}