From 57432efc4559d60c3e4f0447c10bc7d8f1e8e18d Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 16 Oct 2022 18:47:21 +0200 Subject: [PATCH] refactor: rework folder structure for multi instance setups Signed-off-by: Dominik Willner --- scripts/globals.sh | 3 --- scripts/klipper.sh | 30 +++++++++++++-------------- scripts/moonraker.sh | 48 ++++++++++++++++++++++---------------------- scripts/utilities.sh | 16 +++++++-------- 4 files changed, 47 insertions(+), 50 deletions(-) diff --git a/scripts/globals.sh b/scripts/globals.sh index 65fe42a..56b3cd5 100644 --- a/scripts/globals.sh +++ b/scripts/globals.sh @@ -17,7 +17,6 @@ function set_globals() { SYSTEMD="/etc/systemd/system" INITD="/etc/init.d" ETCDEF="/etc/default" - PRINTER_DATA="${HOME}/printer_data" #=================== KIAUH ====================# green=$(echo -en "\e[92m") @@ -35,8 +34,6 @@ function set_globals() { KLIPPY_ENV="${HOME}/klippy-env" KLIPPER_DIR="${HOME}/klipper" KLIPPER_REPO="https://github.com/Klipper3d/klipper.git" - KLIPPER_LOGS="${HOME}/klipper_logs" - KLIPPER_CONFIG="$(get_klipper_cfg_dir)" # default: ${HOME}/klipper_config #================= MOONRAKER ==================# MOONRAKER_ENV="${HOME}/moonraker-env" diff --git a/scripts/klipper.sh b/scripts/klipper.sh index 3c56c12..64fe777 100644 --- a/scripts/klipper.sh +++ b/scripts/klipper.sh @@ -288,20 +288,20 @@ function configure_klipper_service() { local input=("${@}") local klipper_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local pdata_dir cfg_dir cfg log printer uds service env_file + local printer_data cfg_dir cfg log printer uds service env_file if (( klipper_count == 1 )) && [[ ${#names[@]} -eq 0 ]]; then - pdata_dir="${PRINTER_DATA}" - cfg_dir="${pdata_dir}/config" + printer_data="${HOME}/printer_data" + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" log="${HOME}/printer_data/logs/klippy.log" printer="/tmp/printer" uds="/tmp/klippy_uds" service="${SYSTEMD}/klipper.service" - env_file="${pdata_dir}/systemd/klipper.env" + env_file="${printer_data}/systemd/klipper.env" ### create required folder structure - create_required_folders "${pdata_dir}" + create_required_folders "${printer_data}" ### write single instance service write_klipper_service "" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" @@ -314,21 +314,21 @@ function configure_klipper_service() { for (( i=1; i <= klipper_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - pdata_dir="${PRINTER_DATA}/printer_${names[${j}]}" + printer_data="${HOME}/printer_${names[${j}]}_data" else - pdata_dir="${PRINTER_DATA}/${names[${j}]}" + printer_data="${HOME}/${names[${j}]}_data" fi - cfg_dir="${pdata_dir}/config" + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/printer.cfg" - log="${pdata_dir}/logs/klippy.log" + log="${printer_data}/logs/klippy.log" printer="/tmp/printer-${names[${j}]}" uds="/tmp/klippy_uds-${names[${j}]}" service="${SYSTEMD}/klipper-${names[${j}]}.service" - env_file="${pdata_dir}/systemd/klipper.env" + env_file="${printer_data}/systemd/klipper.env" ### create required folder structure - create_required_folders "${pdata_dir}" + create_required_folders "${printer_data}" ### write multi instance service write_klipper_service "${names[${j}]}" "${cfg}" "${log}" "${printer}" "${uds}" "${service}" "${env_file}" @@ -409,8 +409,8 @@ function remove_klipper_systemd() { } function remove_klipper_env_file() { - local files name="klipper.env" - files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/systemd\/klipper\.env" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -422,8 +422,8 @@ function remove_klipper_env_file() { } function remove_klipper_logs() { - local files name="klippy.log*" - files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/klippy\.log*" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then for file in ${files}; do diff --git a/scripts/moonraker.sh b/scripts/moonraker.sh index ee72675..a745b5c 100644 --- a/scripts/moonraker.sh +++ b/scripts/moonraker.sh @@ -240,14 +240,14 @@ function create_moonraker_conf() { local input=("${@}") local moonraker_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local port lan pdata_dir cfg_dir cfg uds + local port lan printer_data cfg_dir cfg uds port=7125 lan="$(hostname -I | cut -d" " -f1 | cut -d"." -f1-2).0.0/16" if (( moonraker_count == 1 )); then - pdata_dir="${PRINTER_DATA}" - cfg_dir="${pdata_dir}/config" + printer_data="${HOME}/printer_data" + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/moonraker.conf" uds="/tmp/klippy_uds" @@ -260,12 +260,12 @@ function create_moonraker_conf() { for (( i=1; i <= moonraker_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - pdata_dir="${PRINTER_DATA}/printer_${names[${j}]}" + printer_data="${HOME}/printer_${names[${j}]}_data" else - pdata_dir="${PRINTER_DATA}/${names[${j}]}" + printer_data="${HOME}/${names[${j}]}_data" fi - cfg_dir="${pdata_dir}/config" + cfg_dir="${printer_data}/config" cfg="${cfg_dir}/moonraker.conf" uds="/tmp/klippy_uds-${names[${j}]}" @@ -307,20 +307,20 @@ function configure_moonraker_service() { local input=("${@}") local moonraker_count=${input[0]} && unset "input[0]" local names=("${input[@]}") && unset "input[@]" - local pdata_dir cfg_dir service env_file + local printer_data cfg_dir service env_file if (( moonraker_count == 1 )) && [[ ${#names[@]} -eq 0 ]]; then i="" - pdata_dir="${PRINTER_DATA}" - cfg_dir="${pdata_dir}/config" + printer_data="${HOME}/printer_data" + cfg_dir="${printer_data}/config" service="${SYSTEMD}/moonraker.service" - env_file="${pdata_dir}/systemd/moonraker.env" + env_file="${printer_data}/systemd/moonraker.env" ### create required folder structure - create_required_folders "${pdata_dir}" + create_required_folders "${printer_data}" ### write single instance service - write_moonraker_service "" "${pdata_dir}" "${service}" "${env_file}" + write_moonraker_service "" "${printer_data}" "${service}" "${env_file}" ok_msg "Moonraker instance created!" elif (( moonraker_count > 1 )) && [[ ${#names[@]} -gt 0 ]]; then @@ -329,20 +329,20 @@ function configure_moonraker_service() { for (( i=1; i <= moonraker_count; i++ )); do ### overwrite config folder if name is only a number if [[ ${names[j]} =~ ${re} ]]; then - pdata_dir="${PRINTER_DATA}/printer_${names[${j}]}" + printer_data="${HOME}/printer_${names[${j}]}_data" else - pdata_dir="${PRINTER_DATA}/${names[${j}]}" + printer_data="${HOME}/${names[${j}]}_data" fi - cfg_dir="${pdata_dir}/config" + cfg_dir="${printer_data}/config" service="${SYSTEMD}/moonraker-${names[${j}]}.service" - env_file="${pdata_dir}/systemd/moonraker.env" + env_file="${printer_data}/systemd/moonraker.env" ### create required folder structure - create_required_folders "${pdata_dir}" + create_required_folders "${printer_data}" ### write multi instance service - write_moonraker_service "${names[${j}]}" "${pdata_dir}" "${service}" "${env_file}" + write_moonraker_service "${names[${j}]}" "${printer_data}" "${service}" "${env_file}" ok_msg "Moonraker instance 'moonraker-${names[${j}]}' created!" j=$(( j + 1 )) done && unset i @@ -358,7 +358,7 @@ function configure_moonraker_service() { } function write_moonraker_service() { - local i=${1} pdata_dir=${2} service=${3} env_file=${4} + local i=${1} printer_data=${2} service=${3} env_file=${4} local service_template="${KIAUH_SRCDIR}/resources/moonraker.service" local env_template="${KIAUH_SRCDIR}/resources/moonraker.env" @@ -371,7 +371,7 @@ function write_moonraker_service() { [[ -z ${i} ]] && sudo sed -i "s| %INST%||" "${service}" [[ -n ${i} ]] && sudo sed -i "s|%INST%|${i}|" "${service}" sudo sed -i "s|%USER%|${USER}|g; s|%ENV%|${MOONRAKER_ENV}|; s|%ENV_FILE%|${env_file}|" "${service}" - sudo sed -i "s|%USER%|${USER}|; s|%PRINTER_DATA%|${pdata_dir}|" "${env_file}" + sudo sed -i "s|%USER%|${USER}|; s|%PRINTER_DATA%|${printer_data}|" "${env_file}" fi } @@ -465,8 +465,8 @@ function remove_moonraker_systemd() { } function remove_moonraker_env_file() { - local files name="moonraker.env" - files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/systemd\/moonraker\.env" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then for file in ${files}; do @@ -478,8 +478,8 @@ function remove_moonraker_env_file() { } function remove_moonraker_logs() { - local files name="moonraker.log*" - files=$(find "${PRINTER_DATA}" -name "${name}" 2> /dev/null | sort) + local files regex="\/home\/${USER}\/([A-Za-z0-9_]+)\/logs\/moonraker\.log*" + files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort) if [[ -n ${files} ]]; then for file in ${files}; do diff --git a/scripts/utilities.sh b/scripts/utilities.sh index c533f5e..cec0210 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -506,15 +506,15 @@ function find_klipper_systemd() { } function create_required_folders() { - local pdata_dir=${1} + local printer_data=${1} - [[ ! -d "${pdata_dir}/backup" ]] && mkdir -p "${pdata_dir}/backup" - [[ ! -d "${pdata_dir}/certs" ]] && mkdir -p "${pdata_dir}/certs" - [[ ! -d "${pdata_dir}/config" ]] && mkdir -p "${pdata_dir}/config" - [[ ! -d "${pdata_dir}/database" ]] && mkdir -p "${pdata_dir}/database" - [[ ! -d "${pdata_dir}/gcodes" ]] && mkdir -p "${pdata_dir}/gcodes" - [[ ! -d "${pdata_dir}/logs" ]] && mkdir -p "${pdata_dir}/logs" - [[ ! -d "${pdata_dir}/systemd" ]] && mkdir -p "${pdata_dir}/systemd" + [[ ! -d "${printer_data}/backup" ]] && mkdir -p "${printer_data}/backup" + [[ ! -d "${printer_data}/certs" ]] && mkdir -p "${printer_data}/certs" + [[ ! -d "${printer_data}/config" ]] && mkdir -p "${printer_data}/config" + [[ ! -d "${printer_data}/database" ]] && mkdir -p "${printer_data}/database" + [[ ! -d "${printer_data}/gcodes" ]] && mkdir -p "${printer_data}/gcodes" + [[ ! -d "${printer_data}/logs" ]] && mkdir -p "${printer_data}/logs" + [[ ! -d "${printer_data}/systemd" ]] && mkdir -p "${printer_data}/systemd" } function check_system_updates() {