36 Commits

Author SHA1 Message Date
Justin Otherguy
a374ac8fac fix: add unzip to dependencies for Mainsail and Fluidd 2024-05-09 20:56:16 +02:00
Christian Würthner
f2691f33d3 feat: add OctoApp support (#454)
* Add OctoApp support

* Update scripts/octoapp.sh

Co-authored-by: dw-0 <domwil1091+github@gmail.com>

* Remove duplicate clone function

* Update Readme link

* Use "OctoApp for Klipper" in install menu

---------

Co-authored-by: dw-0 <domwil1091+github@gmail.com>
2024-03-31 17:15:47 +02:00
dw-0
d800d356ca fix(backups): backup config folder only if it exists
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-03-24 19:45:02 +01:00
dw-0
b6c6edb622 refactor(Mobileraker): update companion install script (#431) (#433) 2024-02-24 14:53:41 +01:00
dw-0
099d47df2f fix: revert "refactor(Mobileraker): update companion install script (#431)" (#432)
This reverts commit ba1cdb3739.
2024-01-29 17:17:09 +01:00
Patrick Schmidt
ba1cdb3739 refactor(Mobileraker): update companion install script (#431) 2024-01-29 17:09:30 +01:00
Anna
8e7d4db988 fix: OctoPrint logo in README.md (#424)
* Fix OctoPrint logo in Readme

Fixed the broken link to the OctoPrint logo in the Readme under the Sources section. Now uses the logo present in the octoprint docs directory.

* Update OctoPrint logo to "raw" cdn link

* Changed ?raw=true link to raw.githubusercontent.com

---------

Co-authored-by: dw-0 <th33xitus@gmail.com>
2024-01-23 22:47:37 +01:00
jneilliii
8f960495ba fix: OctoPrint logo in README.md (#423) 2024-01-22 17:57:37 +01:00
dw-0
095823bf28 chore(kiauh): update FUNDING.yml
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-01-01 20:02:29 +01:00
dw-0
397038e43e chore(kiauh): add .idea to .gitignore
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-01-01 19:55:47 +01:00
dw-0
061e222664 chore(kiauh): update copyright
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-01-01 19:54:13 +01:00
dw-0
3f5ff50d69 refactor(kiauh): use sudo true instead of sudo -v to prevent password prompts
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-01-01 19:51:56 +01:00
dw-0
5ebe941125 readme: don't recommend a specific architecture anymore
Fixes #403 

Both 32bit and 64bit images were reported to work fine. So we don't need a strict 32bit recommendation anymore which may confuses users, why they should pick 32bit over 64bit.

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-12-17 12:18:04 +01:00
dw-0
f5eb9486cc refactor(kiauh): use sudo true instead of sudo -v to prevent password prompts
Fixes #395 

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-12-17 12:10:36 +01:00
Stefan Dej
7a9e752f9c fix: fix typo in example.printer.cfg (#412)
rename virtual_sd_card to virtual_sdcard

Signed-off-by: Stefan Dej <meteyou@gmail.com>
2023-12-12 08:21:51 +01:00
CODeRUS
30bc56b198 feat(advanced): add selection between flash/serialflash methods (#410) 2023-12-10 16:57:59 +01:00
dw-0
b2567995de feat(klipper): add virtual_sd_card_block to example printer.cfg (#411) 2023-12-10 15:12:28 +01:00
dw-0
6fcd7a3f08 refactor(klipper): improve disruptive package handling
fix #293

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-10-31 15:09:31 +01:00
dw-0
25dfbb83df fix(kiauh): display custom repo dialog again after user interaction
fix #394

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-10-28 20:48:57 +02:00
Sineos
899b204dc7 refactor: show full path of mcu (#391) 2023-10-15 10:08:41 +02:00
Kenneth Jiang
5cf4b018fc refactor: change wording now that moonraker-obico can link printer using auto-discovery (#389) 2023-10-12 20:26:30 +02:00
dw-0
ae9d1b98da feat(klipper): remove/disable brltty and ModemManager during installation (#387) 2023-10-01 18:30:01 +02:00
Kenneth Jiang
16d3388ff2 refactor: make the 'Obico for Klipper' name consistent (#385) 2023-09-29 20:20:21 +02:00
th33xitus
b88d0085ba fix(backups): fix broken config target folder name
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-09-04 21:17:10 +02:00
th33xitus
0b6613e464 fix(backups): fix broken moonraker database target folder name
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-09-04 21:02:22 +02:00
th33xitus
d99cda544a fix(backups): add backup before update function for KlipperScreen
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-08-30 19:48:55 +02:00
th33xitus
a50dce20de fix(backups): add backup function for OctoEverywhere
fix #380

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-08-30 19:48:53 +02:00
th33xitus
f45da66e9e fix(crowsnest): uninstaller exited KIAUH if crowsnest not installed
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-08-26 18:31:37 +02:00
th33xitus
2822499344 refactor(copyright): update copyright comment
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-08-26 18:11:00 +02:00
th33xitus
c777ba3e6b refactor(log-upload): update log upload functions and re-enable access
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-08-26 18:06:14 +02:00
th33xitus
9f410450d7 refactor(backups): update backup functions for config and moonraker database and enable backup-before-update again
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-08-23 23:22:23 +02:00
dw-0
0497d49066 Update README.md 2023-08-15 16:42:38 +02:00
dw-0
229da227b0 Update FUNDING.yml
use updated ko-fi username
2023-08-14 23:06:44 +02:00
th33xitus
65854c8da6 fix(updates): make update all function also update system again
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-07-22 23:24:29 +02:00
Kenneth Jiang
5985646633 refactor(obico): move dependency handling to obico's own install script (#361) 2023-07-10 17:44:05 +02:00
th33xitus
979c39dc02 refactor(mainsail/fluidd): allow reading of version from release_info.json
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2023-07-01 20:59:46 +02:00
37 changed files with 780 additions and 210 deletions

4
.github/FUNDING.yml vendored
View File

@@ -3,10 +3,10 @@
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username open_collective: # Replace with a single Open Collective username
ko_fi: th33xitus ko_fi: dw__0
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] custom: https://paypal.me/dwillner0

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.idea
.vscode .vscode
*.code-workspace *.code-workspace
klipper_repos.txt klipper_repos.txt

View File

@@ -1,6 +1,6 @@
<p align="center"> <p align="center">
<a> <a>
<img src="https://raw.githubusercontent.com/th33xitus/kiauh/master/resources/screenshots/kiauh.png" alt="KIAUH logo" height="181"> <img src="https://raw.githubusercontent.com/dw-0/kiauh/master/resources/screenshots/kiauh.png" alt="KIAUH logo" height="181">
<h1 align="center">Klipper Installation And Update Helper</h1> <h1 align="center">Klipper Installation And Update Helper</h1>
</a> </a>
</p> </p>
@@ -10,14 +10,14 @@
</p> </p>
<p align="center"> <p align="center">
<a><img src="https://img.shields.io/github/license/th33xitus/kiauh"></a> <a><img src="https://img.shields.io/github/license/dw-0/kiauh"></a>
<a><img src="https://img.shields.io/github/stars/th33xitus/kiauh"></a> <a><img src="https://img.shields.io/github/stars/dw-0/kiauh"></a>
<a><img src="https://img.shields.io/github/forks/th33xitus/kiauh"></a> <a><img src="https://img.shields.io/github/forks/dw-0/kiauh"></a>
<a><img src="https://img.shields.io/github/languages/top/th33xitus/kiauh?logo=gnubash&logoColor=white"></a> <a><img src="https://img.shields.io/github/languages/top/dw-0/kiauh?logo=gnubash&logoColor=white"></a>
<a><img src="https://img.shields.io/github/v/tag/th33xitus/kiauh"></a> <a><img src="https://img.shields.io/github/v/tag/dw-0/kiauh"></a>
<br /> <br />
<a><img src="https://img.shields.io/github/last-commit/th33xitus/kiauh"></a> <a><img src="https://img.shields.io/github/last-commit/dw-0/kiauh"></a>
<a><img src="https://img.shields.io/github/contributors/th33xitus/kiauh"></a> <a><img src="https://img.shields.io/github/contributors/dw-0/kiauh"></a>
</p> </p>
<hr> <hr>
@@ -29,19 +29,19 @@
### 📋 Prerequisites ### 📋 Prerequisites
KIAUH is a script that assists you in installing Klipper on a Linux operating system that has KIAUH is a script that assists you in installing Klipper on a Linux operating system that has
already been flashed to your Raspberry Pi's (or other SBC's) SD card. As a result, you must ensure already been flashed to your Raspberry Pi's (or other SBC's) SD card. As a result, you must ensure
that you have a functional Linux system on hand. `Raspberry Pi OS Lite (32bit)` is a recommended Linux image that you have a functional Linux system on hand. `Raspberry Pi OS Lite (either 32bit or 64bit)` is a recommended Linux image
if you are using a Raspberry Pi. The [official Raspberry Pi Imager](https://www.raspberrypi.com/software/) if you are using a Raspberry Pi. The [official Raspberry Pi Imager](https://www.raspberrypi.com/software/)
is the simplest way to flash an image like this to an SD card. is the simplest way to flash an image like this to an SD card.
* Once you have downloaded, installed and launched the Raspberry Pi Imager, * Once you have downloaded, installed and launched the Raspberry Pi Imager,
select `Choose OS -> Raspberry Pi OS (other)`: \ select `Choose OS -> Raspberry Pi OS (other)`: \
<p align="center"> <p align="center">
<img src="https://raw.githubusercontent.com/th33xitus/kiauh/master/resources/screenshots/rpi_imager1.png" alt="KIAUH logo" height="350"> <img src="https://raw.githubusercontent.com/dw-0/kiauh/master/resources/screenshots/rpi_imager1.png" alt="KIAUH logo" height="350">
</p> </p>
* Then select `Raspberry Pi OS Lite (32bit)`: * Then select `Raspberry Pi OS Lite (32bit)` (or 64bit if you want to use that instead):
<p align="center"> <p align="center">
<img src="https://raw.githubusercontent.com/th33xitus/kiauh/master/resources/screenshots/rpi_imager2.png" alt="KIAUH logo" height="350"> <img src="https://raw.githubusercontent.com/dw-0/kiauh/master/resources/screenshots/rpi_imager2.png" alt="KIAUH logo" height="350">
</p> </p>
* Back in the Raspberry Pi Imager's main menu, select the corresponding SD card to which * Back in the Raspberry Pi Imager's main menu, select the corresponding SD card to which
@@ -71,7 +71,7 @@ sudo apt-get update && sudo apt-get install git -y
Once git is installed, use the following command to download KIAUH into your home-directory: Once git is installed, use the following command to download KIAUH into your home-directory:
```shell ```shell
cd ~ && git clone https://github.com/th33xitus/kiauh.git cd ~ && git clone https://github.com/dw-0/kiauh.git
``` ```
* **Step 3:** \ * **Step 3:** \
@@ -125,7 +125,7 @@ prompt and confirm by hitting ENTER.
<tr> <tr>
<th><img src="https://raw.githubusercontent.com/fluidd-core/fluidd/master/docs/assets/images/logo.svg" alt="Fluidd Logo" height="64"></th> <th><img src="https://raw.githubusercontent.com/fluidd-core/fluidd/master/docs/assets/images/logo.svg" alt="Fluidd Logo" height="64"></th>
<th><img src="https://avatars.githubusercontent.com/u/31575189?v=4" alt="jordanruthe avatar" height="64"></th> <th><img src="https://avatars.githubusercontent.com/u/31575189?v=4" alt="jordanruthe avatar" height="64"></th>
<th><img src="https://camo.githubusercontent.com/627be7fc67195b626b298af9b9677d7c58e698c67305e54324cffbe06130d4a4/68747470733a2f2f6f63746f7072696e742e6f72672f6173736574732f696d672f6c6f676f2e706e67" alt="OctoPrint Logo" height="64"></th> <th><img src="https://raw.githubusercontent.com/OctoPrint/OctoPrint/master/docs/images/octoprint-logo.png" alt="OctoPrint Logo" height="64"></th>
</tr> </tr>
<tr> <tr>
<th>by <a href="https://github.com/fluidd-core">fluidd-core</a></th> <th>by <a href="https://github.com/fluidd-core">fluidd-core</a></th>
@@ -154,18 +154,20 @@ prompt and confirm by hitting ENTER.
<tr> <tr>
<th><h3><a href="https://github.com/Clon1998/mobileraker_companion">Mobileraker's Companion</a></h3></th> <th><h3><a href="https://github.com/Clon1998/mobileraker_companion">Mobileraker's Companion</a></h3></th>
<th><h3><a href="https://octoeverywhere.com/?source=kiauh_readme">OctoEverywhere For Klipper</a></h3></th> <th><h3><a href="https://octoeverywhere.com/?source=kiauh_readme">OctoEverywhere For Klipper</a></h3></th>
<th><h3><a href="https://github.com/crysxd/OctoPrint-OctoApp">OctoApp For Klipper</a></h3></th>
<th><h3></h3></th> <th><h3></h3></th>
</tr> </tr>
<tr> <tr>
<th><a href="https://github.com/Clon1998/mobileraker_companion"><img src="https://raw.githubusercontent.com/Clon1998/mobileraker/master/assets/icon/mr_appicon.png" alt="OctoEverywhere Logo" height="64"></th> <th><a href="https://github.com/Clon1998/mobileraker_companion"><img src="https://raw.githubusercontent.com/Clon1998/mobileraker/master/assets/icon/mr_appicon.png" alt="OctoEverywhere Logo" height="64"></th>
<th><a href="https://octoeverywhere.com/?source=kiauh_readme"><img src="https://octoeverywhere.com/img/logo.svg" alt="OctoEverywhere Logo" height="64"></a></th> <th><a href="https://octoeverywhere.com/?source=kiauh_readme"><img src="https://octoeverywhere.com/img/logo.svg" alt="OctoEverywhere Logo" height="64"></a></th>
<th></th> <th><a href="https://octoapp.eu/?source=kiauh_readme"><img src="https://octoapp.eu/octoapp.webp" alt="OctoApp Logo" height="64"></a></th>
</tr> </tr>
<tr> <tr>
<th>by <a href="https://github.com/Clon1998">Patrick Schmidt</a></th> <th>by <a href="https://github.com/Clon1998">Patrick Schmidt</a></th>
<th>by <a href="https://github.com/QuinnDamerell">Quinn Damerell</a></th> <th>by <a href="https://github.com/QuinnDamerell">Quinn Damerell</a></th>
<th>by <a href="https://github.com/crysxd">Christian Würthner</a></th>
<th></th> <th></th>
</tr> </tr>
@@ -177,7 +179,7 @@ prompt and confirm by hitting ENTER.
<h2 align="center">✨ Credits ✨</h2> <h2 align="center">✨ Credits ✨</h2>
* A big thank you to [lixxbox](https://github.com/lixxbox) for that awesome KIAUH-Logo! * A big thank you to [lixxbox](https://github.com/lixxbox) for that awesome KIAUH-Logo!
* Also, a big thank you to everyone who supported my work with a [Ko-fi](https://ko-fi.com/th33xitus) ! * Also, a big thank you to everyone who supported my work with a [Ko-fi](https://ko-fi.com/dw__0) !
* Last but not least: Thank you to all contributors and members of the Klipper Community who like and share this project! * Last but not least: Thank you to all contributors and members of the Klipper Community who like and share this project!
<hr> <hr>

View File

@@ -41,7 +41,7 @@ Execute with:
`RUN_SHELL_COMMAND CMD=hello_world` `RUN_SHELL_COMMAND CMD=hello_world`
### Passing parameters: ### Passing parameters:
As of commit [f231fa9](https://github.com/th33xitus/kiauh/commit/f231fa9c69191f23277b4e3319f6b675bfa0ee42) it is also possible to pass optional parameters to a `gcode_shell_command`. As of commit [f231fa9](https://github.com/dw-0/kiauh/commit/f231fa9c69191f23277b4e3319f6b675bfa0ee42) it is also possible to pass optional parameters to a `gcode_shell_command`.
The following short example shows storing the extruder temperature into a variable, passing that value with a parameter to a `gcode_shell_command`, which then, The following short example shows storing the extruder temperature into a variable, passing that value with a parameter to a `gcode_shell_command`, which then,
once the gcode_macro runs and the gcode_shell_command gets called, executes the `script.sh`. The script then echoes a message to the console (if `verbose: True`) once the gcode_macro runs and the gcode_shell_command gets called, executes the `script.sh`. The script then echoes a message to the console (if `verbose: True`)
and writes the value of the parameter into a textfile called `test.txt` located in the home directory. and writes the value of the parameter into a textfile called `test.txt` located in the home directory.

View File

@@ -1,18 +1,14 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
# TODO: upload_log
# TODO: all backup functions
# TODO: doublecheck that nothing got missed!
set -e set -e
clear clear

View File

@@ -1,7 +1,11 @@
[mcu] [mcu]
serial: /dev/serial/by-id/<your-mcu-id> serial: /dev/serial/by-id/<your-mcu-id>
[virtual_sdcard]
path: %GCODES_DIR%
on_error_gcode: CANCEL_PRINT
[printer] [printer]
kinematics: none kinematics: none
max_velocity: 1000 max_velocity: 1000
max_accel: 1000 max_accel: 1000

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -25,29 +25,36 @@ function check_for_backup_dir() {
} }
function backup_before_update() { function backup_before_update() {
echo "" read_kiauh_ini "${FUNCNAME[0]}"
### todo backup functions need to be updated for new folder structure local state="${backup_before_update}"
# read_kiauh_ini "${FUNCNAME[0]}" [[ ${state} = "false" ]] && return
# local state="${backup_before_update}" backup_"${1}"
# [[ ${state} = "false" ]] && return
# backup_"${1}"
} }
function backup_klipper_config_dir() { function backup_config_dir() {
check_for_backup_dir check_for_backup_dir
local current_date config_folder_name local current_date config_pathes
if [[ -d "${KLIPPER_CONFIG}" ]]; then config_pathes=$(get_config_folders)
if [[ -n "${config_pathes}" ]]; then
current_date=$(get_date) current_date=$(get_date)
config_folder_name="$(echo "${KLIPPER_CONFIG}" | rev | cut -d"/" -f1 | rev)"
status_msg "Timestamp: ${current_date}" status_msg "Timestamp: ${current_date}"
status_msg "Create backup of the Klipper config directory ..."
mkdir -p "${BACKUP_DIR}/${config_folder_name}/${current_date}" local i=0 folder folder_name target_dir
cp -r "${KLIPPER_CONFIG}" "${_}" for folder in ${config_pathes}; do
if [[ -d ${folder} ]]; then
print_confirm "Configuration directory backup complete!" status_msg "Create backup of ${folder} ..."
folder_name=$(echo "${folder}" | rev | cut -d"/" -f2 | rev)
target_dir="${BACKUP_DIR}/configs/${current_date}/${folder_name}"
mkdir -p "${target_dir}"
cp -r "${folder}" "${target_dir}"
i=$(( i + 1 ))
ok_msg "Backup created in:\n${target_dir}"
fi
done
else else
ok_msg "No config directory found! Skipping backup ..." ok_msg "No config directory found! Skipping backup ..."
fi fi
@@ -55,27 +62,29 @@ function backup_klipper_config_dir() {
function backup_moonraker_database() { function backup_moonraker_database() {
check_for_backup_dir check_for_backup_dir
local current_date databases target_dir regex=".moonraker_database(_[0-9a-zA-Z]+)?" local current_date db_pathes
databases=$(find "${HOME}" -maxdepth 1 -type d -regextype posix-extended -regex "${HOME}/${regex}" | sort)
if [[ -n ${databases} ]]; then db_pathes=$(get_instance_folder_path "database")
if [[ -n ${db_pathes} ]]; then
current_date=$(get_date) current_date=$(get_date)
target_dir="${BACKUP_DIR}/moonraker_database_backup/${current_date}"
status_msg "Timestamp: ${current_date}" status_msg "Timestamp: ${current_date}"
mkdir -p "${target_dir}"
for database in ${databases}; do local i=0 database folder_name target_dir
for database in ${db_pathes}; do
status_msg "Create backup of ${database} ..." status_msg "Create backup of ${database} ..."
cp -r "${database}" "${target_dir}"
ok_msg "Done!"
done
print_confirm "Moonraker database backup complete!" folder_name=$(echo "${database}" | rev | cut -d"/" -f2 | rev)
target_dir="${BACKUP_DIR}/moonraker_databases/${current_date}/${folder_name}"
mkdir -p "${target_dir}"
cp -r "${database}" "${target_dir}"
i=$(( i + 1 ))
ok_msg "Backup created in:\n${target_dir}"
done
else else
print_error "No Moonraker database found! Skipping backup ..." print_error "No Moonraker database found! Skipping backup ..."
fi fi
return
} }
function backup_klipper() { function backup_klipper() {
@@ -188,3 +197,19 @@ function backup_telegram_bot() {
print_error "Can't back up MoonrakerTelegramBot directory!\n Not found!" print_error "Can't back up MoonrakerTelegramBot directory!\n Not found!"
fi fi
} }
function backup_octoeverywhere() {
local current_date
if [[ -d ${OCTOEVERYWHERE_DIR} ]] ; then
status_msg "Creating OctoEverywhere backup ..."
check_for_backup_dir
current_date=$(get_date)
status_msg "Timestamp: ${current_date}"
mkdir -p "${BACKUP_DIR}/OctoEverywhere-backups/${current_date}"
cp -r "${OCTOEVERYWHERE_DIR}" "${_}" && cp -r "${OCTOEVERYWHERE_ENV}" "${_}"
print_confirm "OctoEverywhere backup complete!"
else
print_error "Can't back up OctoEverywhere directory!\n Not found!"
fi
}

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -117,18 +117,22 @@ function install_crowsnest(){
# Remove func # Remove func
function remove_crowsnest(){ function remove_crowsnest(){
pushd "${HOME}/crowsnest" &> /dev/null || exit 1 if [[ -d "${CROWSNEST_DIR}" ]]; then
title_msg "Uninstaller will prompt you for sudo password!" pushd "${HOME}/crowsnest" &> /dev/null || exit 1
status_msg "Launching crowsnest uninstaller ..." title_msg "Uninstaller will prompt you for sudo password!"
if ! make uninstall; then status_msg "Launching crowsnest uninstaller ..."
error_msg "Something went wrong! Please try again..."
exit 1 if ! make uninstall; then
fi error_msg "Something went wrong! Please try again..."
if [[ -e "${CROWSNEST_DIR}" ]]; then exit 1
fi
status_msg "Removing crowsnest directory ..." status_msg "Removing crowsnest directory ..."
rm -rf "${CROWSNEST_DIR}" rm -rf "${CROWSNEST_DIR}"
ok_msg "Directory removed!" ok_msg "Directory removed!"
fi fi
print_confirm "Crowsnest successfully removed!"
} }
# Status funcs # Status funcs

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -52,16 +52,57 @@ function init_flash_process() {
esac esac
done done
### step 2: select how the mcu is connected to the host ### step 2: select how the mcu is flashed (flash/serialflash)
select_flash_command
### step 3: select how the mcu is connected to the host
select_mcu_connection select_mcu_connection
### step 3: select which detected mcu should be flashed ### step 4: select which detected mcu should be flashed
select_mcu_id "${method}" select_mcu_id "${method}"
} }
#================================================# #================================================#
#=================== STEP 2 =====================# #=================== STEP 2 =====================#
#================================================# #================================================#
function select_flash_command() {
unset flash_command
top_border
echo -e "| How to flash MCU? |"
echo -e "| 1) make flash (default) |"
echo -e "| 2) make serialflash (stm32flash) |"
blank_line
back_help_footer
local choice
while true; do
read -p "${cyan}###### Flashing command:${white} " -i "1" -e choice
case "${choice}" in
1)
select_msg "Selected 'make flash' command"
flash_command="flash"
break;;
2)
select_msg "Selected 'make serialflash' command"
flash_command="serialflash"
break;;
B|b)
advanced_menu
break;;
H|h)
clear && print_header
show_mcu_flash_command_help
break;;
*)
error_msg "Invalid command!";;
esac
done
}
#================================================#
#=================== STEP 3 =====================#
#================================================#
function select_mcu_connection() { function select_mcu_connection() {
top_border top_border
echo -e "| ${yellow}Make sure that the controller board is connected now!${white} |" echo -e "| ${yellow}Make sure that the controller board is connected now!${white} |"
@@ -112,7 +153,6 @@ function print_detected_mcu_to_screen() {
fi fi
for mcu in "${mcu_list[@]}"; do for mcu in "${mcu_list[@]}"; do
mcu=$(echo "${mcu}" | rev | cut -d"/" -f1 | rev)
echo -e " ● MCU #${i}: ${cyan}${mcu}${white}" echo -e " ● MCU #${i}: ${cyan}${mcu}${white}"
i=$(( i + 1 )) i=$(( i + 1 ))
done done
@@ -120,7 +160,7 @@ function print_detected_mcu_to_screen() {
} }
#================================================# #================================================#
#=================== STEP 3 =====================# #=================== STEP 4 =====================#
#================================================# #================================================#
function select_mcu_id() { function select_mcu_id() {
local i=0 sel_index=0 method=${1} local i=0 sel_index=0 method=${1}
@@ -195,7 +235,7 @@ function start_flash_mcu() {
local device=${1} local device=${1}
do_action_service "stop" "klipper" do_action_service "stop" "klipper"
if make flash FLASH_DEVICE="${device}"; then if make ${flash_command} FLASH_DEVICE="${device}"; then
ok_msg "Flashing successfull!" ok_msg "Flashing successfull!"
else else
warn_msg "Flashing failed!" warn_msg "Flashing failed!"
@@ -387,6 +427,36 @@ function show_flash_method_help() {
done done
} }
function show_mcu_flash_command_help() {
top_border
echo -e "| ~~~~~~~~ < ? > Help: Flash MCU < ? > ~~~~~~~~ |"
hr
echo -e "| ${cyan}make flash:${white} |"
echo -e "| The default command to flash controller board, it |"
echo -e "| will detect selected microcontroller and use suitable |"
echo -e "| tool for flashing it. |"
blank_line
echo -e "| ${cyan}make serialflash:${white} |"
echo -e "| Special command to flash STM32 microcontrollers in |"
echo -e "| DFU mode but connected via serial. stm32flash command |"
echo -e "| will be used internally. |"
blank_line
back_footer
local choice
while true; do
read -p "${cyan}###### Please select:${white} " choice
case "${choice}" in
B|b)
clear && print_header
select_flash_command
break;;
*)
error_msg "Invalid command!";;
esac
done
}
function show_mcu_connection_help() { function show_mcu_connection_help() {
top_border top_border
echo -e "| ~~~~~~~~ < ? > Help: Flash MCU < ? > ~~~~~~~~ |" echo -e "| ~~~~~~~~ < ? > Help: Flash MCU < ? > ~~~~~~~~ |"

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -37,14 +37,14 @@ function install_fluidd() {
fi fi
### checking dependencies ### checking dependencies
local dep=(wget nginx) local dep=(wget nginx unzip)
dependency_check "${dep[@]}" dependency_check "${dep[@]}"
### detect conflicting Haproxy and Apache2 installations ### detect conflicting Haproxy and Apache2 installations
detect_conflicting_packages detect_conflicting_packages
status_msg "Initializing Fluidd installation ..." status_msg "Initializing Fluidd installation ..."
### first, we create a backup of the full klipper_config dir - safety first! ### first, we create a backup of the full klipper_config dir - safety first!
#backup_klipper_config_dir backup_config_dir
### check for other enabled web interfaces ### check for other enabled web interfaces
unset SET_LISTEN_PORT unset SET_LISTEN_PORT
@@ -317,10 +317,16 @@ function get_fluidd_status() {
} }
function get_local_fluidd_version() { function get_local_fluidd_version() {
[[ ! -f "${FLUIDD_DIR}/.version" ]] && return local versionfile="${FLUIDD_DIR}/.version"
local relinfofile="${FLUIDD_DIR}/release_info.json"
local version local version
version=$(head -n 1 "${FLUIDD_DIR}/.version")
if [[ -f ${relinfofile} ]]; then
version=$(grep -o '"version":"[^"]*' "${relinfofile}" | grep -o '[^"]*$')
elif [[ -f ${versionfile} ]]; then
version=$(head -n 1 "${versionfile}")
fi
echo "${version}" echo "${version}"
} }

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -103,7 +103,7 @@ function install_gcode_shell_command() {
function create_example_shell_command() { function create_example_shell_command() {
### create a backup of the config folder ### create a backup of the config folder
backup_klipper_config_dir backup_config_dir
local configs regex path local configs regex path
regex="${HOME//\//\\/}\/([A-Za-z0-9_]+)\/config\/printer\.cfg" regex="${HOME//\//\\/}\/([A-Za-z0-9_]+)\/config\/printer\.cfg"
@@ -120,4 +120,4 @@ function create_example_shell_command() {
sed -i "1 i [include shell_command.cfg]" "${cfg}" sed -i "1 i [include shell_command.cfg]" "${cfg}"
fi fi
done done
} }

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -83,4 +83,8 @@ function set_globals() {
MOBILERAKER_DIR="${HOME}/mobileraker_companion" MOBILERAKER_DIR="${HOME}/mobileraker_companion"
MOBILERAKER_REPO="https://github.com/Clon1998/mobileraker_companion.git" MOBILERAKER_REPO="https://github.com/Clon1998/mobileraker_companion.git"
#=============== OCTOAPP ================#
OCTOAPP_ENV="${HOME}/octoapp-env"
OCTOAPP_DIR="${HOME}/octoapp"
OCTOAPP_REPO="https://github.com/crysxd/OctoApp-Plugin.git"
} }

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -244,6 +244,7 @@ function run_klipper_setup() {
### finalizing the setup with writing instance names to the kiauh.ini ### finalizing the setup with writing instance names to the kiauh.ini
set_multi_instance_names set_multi_instance_names
mask_disrupting_services
print_confirm "${confirm}" && return print_confirm "${confirm}" && return
} }
@@ -333,6 +334,7 @@ function create_klipper_service() {
local printer_data local printer_data
local cfg_dir local cfg_dir
local gcodes_dir
local cfg local cfg
local log local log
local klippy_serial local klippy_serial
@@ -345,6 +347,7 @@ function create_klipper_service() {
printer_data="${HOME}/${instance_name}_data" printer_data="${HOME}/${instance_name}_data"
cfg_dir="${printer_data}/config" cfg_dir="${printer_data}/config"
gcodes_dir="${printer_data}/gcodes"
cfg="${cfg_dir}/printer.cfg" cfg="${cfg_dir}/printer.cfg"
log="${printer_data}/logs/klippy.log" log="${printer_data}/logs/klippy.log"
klippy_serial="${printer_data}/comms/klippy.serial" klippy_serial="${printer_data}/comms/klippy.serial"
@@ -375,18 +378,20 @@ function create_klipper_service() {
fi fi
if [[ ! -f ${cfg} ]]; then if [[ ! -f ${cfg} ]]; then
write_example_printer_cfg "${cfg}" write_example_printer_cfg "${cfg}" "${gcodes_dir}"
fi fi
} }
function write_example_printer_cfg() { function write_example_printer_cfg() {
local cfg=${1} local cfg=${1}
local gcodes_dir=${2}
local cfg_template local cfg_template
cfg_template="${KIAUH_SRCDIR}/resources/example.printer.cfg" cfg_template="${KIAUH_SRCDIR}/resources/example.printer.cfg"
status_msg "Creating minimal example printer.cfg ..." status_msg "Creating minimal example printer.cfg ..."
if cp "${cfg_template}" "${cfg}"; then if cp "${cfg_template}" "${cfg}"; then
sed -i "s|%GCODES_DIR%|${gcodes_dir}|" "${cfg}"
ok_msg "Minimal example printer.cfg created!" ok_msg "Minimal example printer.cfg created!"
else else
error_msg "Couldn't create minimal example printer.cfg!" error_msg "Couldn't create minimal example printer.cfg!"
@@ -625,3 +630,34 @@ function get_klipper_python_ver() {
version=$("${KLIPPY_ENV}"/bin/python --version 2>&1 | cut -d" " -f2 | cut -d"." -f1) version=$("${KLIPPY_ENV}"/bin/python --version 2>&1 | cut -d" " -f2 | cut -d"." -f1)
echo "${version}" echo "${version}"
} }
function mask_disrupting_services() {
local brltty="false"
local brltty_udev="false"
local modem_manager="false"
[[ $(dpkg -s brltty 2>/dev/null | grep "Status") = *\ installed ]] && brltty="true"
[[ $(dpkg -s brltty-udev 2>/dev/null | grep "Status") = *\ installed ]] && brltty_udev="true"
[[ $(dpkg -s ModemManager 2>/dev/null | grep "Status") = *\ installed ]] && modem_manager="true"
status_msg "Installed brltty package detected, masking brltty service ..."
if [[ ${brltty} == "true" ]]; then
sudo systemctl stop brltty
sudo systemctl mask brltty
fi
ok_msg "brltty service masked!"
status_msg "Installed brltty-udev package detected, masking brltty-udev service ..."
if [[ ${brltty_udev} == "true" ]]; then
sudo systemctl stop brltty-udev
sudo systemctl mask brltty-udev
fi
ok_msg "brltty-udev service masked!"
status_msg "Installed ModemManager package detected, masking ModemManager service ..."
if [[ ${modem_manager} == "true" ]]; then
sudo systemctl stop ModemManager
sudo systemctl mask ModemManager
fi
ok_msg "ModemManager service masked!"
}

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -30,7 +30,7 @@ function install_klipperscreen() {
fi fi
### first, we create a backup of the full klipper_config dir - safety first! ### first, we create a backup of the full klipper_config dir - safety first!
backup_klipper_config_dir backup_config_dir
### install KlipperScreen ### install KlipperScreen
klipperscreen_setup klipperscreen_setup
@@ -119,6 +119,8 @@ function update_klipperscreen() {
old_md5=$(md5sum "${KLIPPERSCREEN_DIR}/scripts/KlipperScreen-requirements.txt" | cut -d " " -f1) old_md5=$(md5sum "${KLIPPERSCREEN_DIR}/scripts/KlipperScreen-requirements.txt" | cut -d " " -f1)
do_action_service "stop" "KlipperScreen" do_action_service "stop" "KlipperScreen"
backup_before_update "klipperscreen"
cd "${KLIPPERSCREEN_DIR}" cd "${KLIPPERSCREEN_DIR}"
git pull origin master -q && ok_msg "Fetch successfull!" git pull origin master -q && ok_msg "Fetch successfull!"
git checkout -f master && ok_msg "Checkout successfull" git checkout -f master && ok_msg "Checkout successfull"

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -37,14 +37,14 @@ function install_mainsail() {
fi fi
### checking dependencies ### checking dependencies
local dep=(wget nginx) local dep=(wget nginx unzip)
dependency_check "${dep[@]}" dependency_check "${dep[@]}"
### detect conflicting Haproxy and Apache2 installations ### detect conflicting Haproxy and Apache2 installations
detect_conflicting_packages detect_conflicting_packages
status_msg "Initializing Mainsail installation ..." status_msg "Initializing Mainsail installation ..."
### first, we create a backup of the full klipper_config dir - safety first! ### first, we create a backup of the full klipper_config dir - safety first!
#backup_klipper_config_dir backup_config_dir
### check for other enabled web interfaces ### check for other enabled web interfaces
unset SET_LISTEN_PORT unset SET_LISTEN_PORT
@@ -324,10 +324,16 @@ function get_mainsail_status() {
} }
function get_local_mainsail_version() { function get_local_mainsail_version() {
[[ ! -f "${MAINSAIL_DIR}/.version" ]] && return local versionfile="${MAINSAIL_DIR}/.version"
local relinfofile="${MAINSAIL_DIR}/release_info.json"
local version local version
version=$(head -n 1 "${MAINSAIL_DIR}/.version")
if [[ -f ${relinfofile} ]]; then
version=$(grep -o '"version":"[^"]*' "${relinfofile}" | grep -o '[^"]*$')
elif [[ -f ${versionfile} ]]; then
version=$(head -n 1 "${versionfile}")
fi
echo "${version}" echo "${version}"
} }
@@ -547,7 +553,7 @@ function get_mainsail_download_url() {
url=${unstable_url} url=${unstable_url}
fi fi
fi fi
echo "${url}" echo "${url}"
} }

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -190,4 +190,4 @@ function remove_mjpg-streamer() {
[[ -L "${KLIPPER_LOGS}/webcamd.log" ]] && rm -f "${KLIPPER_LOGS}/webcamd.log" [[ -L "${KLIPPER_LOGS}/webcamd.log" ]] && rm -f "${KLIPPER_LOGS}/webcamd.log"
print_confirm "MJPG-Streamer successfully removed!" print_confirm "MJPG-Streamer successfully removed!"
} }

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -35,7 +35,7 @@ function install_mobileraker() {
fi fi
### first, we create a backup of the full klipper_config dir - safety first! ### first, we create a backup of the full klipper_config dir - safety first!
backup_klipper_config_dir backup_config_dir
### install Mobileraker's Companion ### install Mobileraker's Companion
mobileraker_setup mobileraker_setup
@@ -61,8 +61,8 @@ function mobileraker_setup() {
exit 1 exit 1
fi fi
status_msg "Installing Mobileraker's companion ..." status_msg "Starting installer of Mobileraker's companion ..."
if "${MOBILERAKER_DIR}"/scripts/install-mobileraker-companion.sh; then if "${MOBILERAKER_DIR}"/scripts/install.sh; then
ok_msg "Mobileraker's companion successfully installed!" ok_msg "Mobileraker's companion successfully installed!"
else else
print_error "Mobileraker's companion installation failed!" print_error "Mobileraker's companion installation failed!"
@@ -233,7 +233,7 @@ primary_branch:main
managed_services: mobileraker managed_services: mobileraker
env: ${HOME}/mobileraker-env/bin/python env: ${HOME}/mobileraker-env/bin/python
requirements: scripts/mobileraker-requirements.txt requirements: scripts/mobileraker-requirements.txt
install_script: scripts/install-mobileraker-companion.sh install_script: scripts/install.sh
MOONRAKER_CONF MOONRAKER_CONF
fi fi

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -33,7 +33,7 @@ function telegram_bot_setup_dialog() {
status_msg "Initializing Telegram Bot installation ..." status_msg "Initializing Telegram Bot installation ..."
### first, we create a backup of the full klipper_config dir - safety first! ### first, we create a backup of the full klipper_config dir - safety first!
backup_klipper_config_dir backup_config_dir
local moonraker_count user_input=() moonraker_names=() local moonraker_count user_input=() moonraker_names=()
moonraker_count=$(echo "${moonraker_services}" | wc -w ) moonraker_count=$(echo "${moonraker_services}" | wc -w )

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -357,4 +357,4 @@ function detect_enabled_sites() {
FLUIDD_PORT=$(read_listen_port "fluidd") FLUIDD_PORT=$(read_listen_port "fluidd")
fi fi
} }

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -63,7 +63,7 @@ function obico_server_url_prompt() {
} }
function moonraker_obico_setup_dialog() { function moonraker_obico_setup_dialog() {
status_msg "Initializing Moonraker-obico installation ..." status_msg "Initializing Obico installation ..."
local moonraker_count local moonraker_count
local moonraker_names local moonraker_names
@@ -73,7 +73,7 @@ function moonraker_obico_setup_dialog() {
if (( moonraker_count == 0 )); then if (( moonraker_count == 0 )); then
### return early if moonraker is not installed ### return early if moonraker is not installed
local error="Moonraker not installed! Please install Moonraker first!" local error="Moonraker not installed! Please install Moonraker first!"
log_error "Moonraker-obico setup started without Moonraker being installed. Aborting setup." log_error "Obico setup started without Moonraker being installed. Aborting setup."
print_error "${error}" && return print_error "${error}" && return
elif (( moonraker_count > 1 )); then elif (( moonraker_count > 1 )); then
# moonraker_names is valid only in case of multi-instance # moonraker_names is valid only in case of multi-instance
@@ -85,6 +85,32 @@ function moonraker_obico_setup_dialog() {
moonraker_obico_services=$(moonraker_obico_systemd) moonraker_obico_services=$(moonraker_obico_systemd)
existing_moonraker_obico_count=$(echo "${moonraker_obico_services}" | wc -w ) existing_moonraker_obico_count=$(echo "${moonraker_obico_services}" | wc -w )
local allowed_moonraker_obico_count=$(( moonraker_count - existing_moonraker_obico_count )) local allowed_moonraker_obico_count=$(( moonraker_count - existing_moonraker_obico_count ))
# Allow user to reinstall an incomplete installation.
if (( allowed_moonraker_obico_count == 0 && moonraker_count > 0 )) && [[ $(get_moonraker_obico_status) != "Not linked!" ]]; then
local yn
while true; do
echo "${yellow}Obico is already installed.${white}"
echo "It is safe to run the install again to repair any issues."
echo ""
local question="Do you want to reinstall Obico?"
read -p "${cyan}###### ${question} (Y/n):${white} " yn
case "${yn}" in
Y|y|Yes|yes|"")
select_msg "Yes"
break;;
N|n|No|no)
select_msg "No"
abort_msg "Exiting Obico installation...\n"
return;;
*)
error_msg "Invalid Input!";;
esac
done
# The user responded yes, allow the install to run again.
allowed_moonraker_obico_count=1
fi
if (( allowed_moonraker_obico_count > 0 )); then if (( allowed_moonraker_obico_count > 0 )); then
local new_moonraker_obico_count local new_moonraker_obico_count
@@ -100,31 +126,30 @@ function moonraker_obico_setup_dialog() {
done done
blank_line blank_line
if (( existing_moonraker_obico_count > 0 )); then if (( existing_moonraker_obico_count > 0 )); then
printf "|${green}%-55s${white}|\n" " ${existing_moonraker_obico_count} Moonraker-obico instances already installed!" printf "|${green}%-55s${white}|\n" " ${existing_moonraker_obico_count} Obico instances already installed!"
for svc in ${moonraker_obico_services}; do for svc in ${moonraker_obico_services}; do
printf "|${cyan}%-57s${white}|\n" " ● moonraker-obco-$(get_instance_name "${svc}")" printf "|${cyan}%-57s${white}|\n" " ● moonraker-obco-$(get_instance_name "${svc}")"
done done
fi fi
blank_line blank_line
echo -e "| The setup will apply the same names to |" echo -e "| The setup will apply the same names to Obico! |"
echo -e "| Moonraker-obico! |"
blank_line blank_line
echo -e "| Please select the number of Moonraker-obico instances |" echo -e "| Please select the number of Obico instances |"
echo -e "| to install. Usually one Moonraker-obico instance per |" echo -e "| to install. Usually one Obico instance per |"
echo -e "| Moonraker instance is required, but you may not |" echo -e "| Moonraker instance is required, but you may not |"
echo -e "| install more Moonraker-obico instances than available |" echo -e "| install more Obico instances than available |"
echo -e "| Moonraker instances. |" echo -e "| Moonraker instances. |"
bottom_border bottom_border
### ask for amount of instances ### ask for amount of instances
local re="^[1-9][0-9]*$" local re="^[1-9][0-9]*$"
while [[ ! ${new_moonraker_obico_count} =~ ${re} || ${new_moonraker_obico_count} -gt ${allowed_moonraker_obico_count} ]]; do while [[ ! ${new_moonraker_obico_count} =~ ${re} || ${new_moonraker_obico_count} -gt ${allowed_moonraker_obico_count} ]]; do
read -p "${cyan}###### Number of new Moonraker-obico instances to set up:${white} " -i "${allowed_moonraker_obico_count}" -e new_moonraker_obico_count read -p "${cyan}###### Number of new Obico instances to set up:${white} " -i "${allowed_moonraker_obico_count}" -e new_moonraker_obico_count
### break if input is valid ### break if input is valid
[[ ${new_moonraker_obico_count} =~ ${re} && ${new_moonraker_obico_count} -le ${allowed_moonraker_obico_count} ]] && break [[ ${new_moonraker_obico_count} =~ ${re} && ${new_moonraker_obico_count} -le ${allowed_moonraker_obico_count} ]] && break
### conditional error messages ### conditional error messages
[[ ! ${new_moonraker_obico_count} =~ ${re} ]] && error_msg "Input not a number" [[ ! ${new_moonraker_obico_count} =~ ${re} ]] && error_msg "Input not a number"
(( new_moonraker_obico_count > allowed_moonraker_obico_count )) && error_msg "Number of Moonraker-obico instances larger than installed Moonraker instances" (( new_moonraker_obico_count > allowed_moonraker_obico_count )) && error_msg "Number of Obico instances larger than installed Moonraker instances"
done && select_msg "${new_moonraker_obico_count}" done && select_msg "${new_moonraker_obico_count}"
else else
log_error "Internal error. moonraker_count of '${moonraker_count}' not equal or grather than one!" log_error "Internal error. moonraker_count of '${moonraker_count}' not equal or grather than one!"
@@ -134,8 +159,8 @@ function moonraker_obico_setup_dialog() {
### Step 2: Confirm instance amount ### Step 2: Confirm instance amount
local yn local yn
while true; do while true; do
(( new_moonraker_obico_count == 1 )) && local question="Install Moonraker-obico?" (( new_moonraker_obico_count == 1 )) && local question="Install Obico?"
(( new_moonraker_obico_count > 1 )) && local question="Install ${new_moonraker_obico_count} Moonraker-obico instances?" (( new_moonraker_obico_count > 1 )) && local question="Install ${new_moonraker_obico_count} Obico instances?"
read -p "${cyan}###### ${question} (Y/n):${white} " yn read -p "${cyan}###### ${question} (Y/n):${white} " yn
case "${yn}" in case "${yn}" in
Y|y|Yes|yes|"") Y|y|Yes|yes|"")
@@ -143,7 +168,7 @@ function moonraker_obico_setup_dialog() {
break;; break;;
N|n|No|no) N|n|No|no)
select_msg "No" select_msg "No"
abort_msg "Exiting Moonraker-obico setup ...\n" abort_msg "Exiting Obico setup ...\n"
return;; return;;
*) *)
error_msg "Invalid Input!";; error_msg "Invalid Input!";;
@@ -165,12 +190,8 @@ function moonraker_obico_setup_dialog() {
fi fi
done done
(( new_moonraker_obico_count > 1 )) && status_msg "Installing ${new_moonraker_obico_count} Moonraker-obico instances ..." (( new_moonraker_obico_count > 1 )) && status_msg "Installing ${new_moonraker_obico_count} Obico instances ..."
(( new_moonraker_obico_count == 1 )) && status_msg "Installing Moonraker-obico ..." (( new_moonraker_obico_count == 1 )) && status_msg "Installing Obico ..."
### Step 4: Install dependencies
local dep=(git dfu-util virtualenv python3 python3-pip python3-venv ffmpeg)
dependency_check "${dep[@]}"
### Step 5: Clone the moonraker-obico repo ### Step 5: Clone the moonraker-obico repo
clone_moonraker_obico "${MOONRAKER_OBICO_REPO}" clone_moonraker_obico "${MOONRAKER_OBICO_REPO}"
@@ -222,17 +243,16 @@ function moonraker_obico_setup_dialog() {
if (( ${#not_linked_instances[@]} > 0 )); then if (( ${#not_linked_instances[@]} > 0 )); then
top_border top_border
if (( moonraker_count == 1 )); then if (( moonraker_count == 1 )); then
printf "|${green}%-55s${white}|\n" " Moonraker-obico not linked to the server!" printf "|${green}%-55s${white}|\n" " Obico not linked to the server!"
else else
printf "|${green}%-55s${white}|\n" " ${#not_linked_instances[@]} Moonraker-obico instances not linked to the server!" printf "|${green}%-55s${white}|\n" " ${#not_linked_instances[@]} Obico instances not linked to the server!"
for i in "${not_linked_instances[@]}"; do for i in "${not_linked_instances[@]}"; do
printf "|${cyan}%-57s${white}|\n" " ● moonraker-obico-${moonraker_names[${i}]}" printf "|${cyan}%-57s${white}|\n" " ● moonraker-obico-${moonraker_names[${i}]}"
done done
fi fi
blank_line blank_line
echo -e "| To link to your Obico Server account, you need to |" echo -e "| It will take only 10 seconds to link printer to Obico.|"
echo -e "| obtain the 6-digit verification code in the Obico |" echo -e "| For more information, visit: |"
echo -e "| mobile or web app. For more information, visit: |"
echo -e "| https://www.obico.io/docs/user-guides/klipper-setup/ |" echo -e "| https://www.obico.io/docs/user-guides/klipper-setup/ |"
blank_line blank_line
echo -e "| If you don't want to link the printer now, you can |" echo -e "| If you don't want to link the printer now, you can |"
@@ -250,7 +270,7 @@ function moonraker_obico_setup_dialog() {
break;; break;;
N|n|No|no) N|n|No|no)
select_msg "No" select_msg "No"
abort_msg "Exiting Moonraker-obico setup ...\n" abort_msg "Exiting Obico setup ...\n"
return;; return;;
*) *)
error_msg "Invalid Input!";; error_msg "Invalid Input!";;
@@ -273,13 +293,13 @@ function moonraker_obico_setup_dialog() {
function clone_moonraker_obico() { function clone_moonraker_obico() {
local repo=${1} local repo=${1}
status_msg "Cloning Moonraker-obico from ${repo} ..." status_msg "Cloning Obico from ${repo} ..."
### force remove existing Moonraker-obico dir ### force remove existing Obico dir
[[ -d "${MOONRAKER_OBICO_DIR}" ]] && rm -rf "${MOONRAKER_OBICO_DIR}" [[ -d "${MOONRAKER_OBICO_DIR}" ]] && rm -rf "${MOONRAKER_OBICO_DIR}"
cd "${HOME}" || exit 1 cd "${HOME}" || exit 1
if ! git clone "${repo}" "${MOONRAKER_OBICO_DIR}"; then if ! git clone "${repo}" "${MOONRAKER_OBICO_DIR}"; then
print_error "Cloning Moonraker-obico from\n ${repo}\n failed!" print_error "Cloning Obico from\n ${repo}\n failed!"
exit 1 exit 1
fi fi
} }
@@ -294,7 +314,7 @@ function moonraker_obico_install() {
function remove_moonraker_obico_systemd() { function remove_moonraker_obico_systemd() {
[[ -z $(moonraker_obico_systemd) ]] && return [[ -z $(moonraker_obico_systemd) ]] && return
status_msg "Removing Moonraker-obico Systemd Services ..." status_msg "Removing Obico Systemd Services ..."
for service in $(moonraker_obico_systemd | cut -d"/" -f5); do for service in $(moonraker_obico_systemd | cut -d"/" -f5); do
status_msg "Removing ${service} ..." status_msg "Removing ${service} ..."
@@ -307,7 +327,7 @@ function remove_moonraker_obico_systemd() {
### reloading units ### reloading units
sudo systemctl daemon-reload sudo systemctl daemon-reload
sudo systemctl reset-failed sudo systemctl reset-failed
ok_msg "Moonraker-obico Services removed!" ok_msg "Obico Services removed!"
} }
function remove_moonraker_obico_logs() { function remove_moonraker_obico_logs() {
@@ -339,7 +359,7 @@ function remove_legacy_moonraker_obico_logs() {
function remove_moonraker_obico_dir() { function remove_moonraker_obico_dir() {
[[ ! -d ${MOONRAKER_OBICO_DIR} ]] && return [[ ! -d ${MOONRAKER_OBICO_DIR} ]] && return
status_msg "Removing Moonraker-obico directory ..." status_msg "Removing Obico directory ..."
rm -rf "${MOONRAKER_OBICO_DIR}" rm -rf "${MOONRAKER_OBICO_DIR}"
ok_msg "Directory removed!" ok_msg "Directory removed!"
} }
@@ -358,7 +378,7 @@ function remove_moonraker_obico() {
remove_moonraker_obico_dir remove_moonraker_obico_dir
remove_moonraker_obico_env remove_moonraker_obico_env
print_confirm "Moonraker-obico was successfully removed!" print_confirm "Obico was successfully removed!"
return return
} }
@@ -372,10 +392,12 @@ function update_moonraker_obico() {
if [[ ! -d ${MOONRAKER_OBICO_DIR} ]]; then if [[ ! -d ${MOONRAKER_OBICO_DIR} ]]; then
clone_moonraker_obico "${MOONRAKER_OBICO_REPO}" clone_moonraker_obico "${MOONRAKER_OBICO_REPO}"
else else
status_msg "Updating Moonraker-obico ..." status_msg "Updating Obico ..."
cd "${MOONRAKER_OBICO_DIR}" && git pull cd "${MOONRAKER_OBICO_DIR}" && git pull
fi fi
"${MOONRAKER_OBICO_DIR}/install.sh" -U
ok_msg "Update complete!" ok_msg "Update complete!"
do_action_service "restart" "moonraker-obico" do_action_service "restart" "moonraker-obico"
} }

369
scripts/octoapp.sh Normal file
View File

@@ -0,0 +1,369 @@
#!/usr/bin/env bash
#=======================================================================#
# Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# #
# This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/dw-0/kiauh #
# #
# This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================#
#
# This file is written and maintained by Christian Würthner from OctoApp
# Please contact me if you need any help!
# hello@octoapp.eu
#
set -e
#===================================================#
#============== Install ============#
#===================================================#
function octoapp_systemd() {
local services
services=$(find "${SYSTEMD}" -maxdepth 1 -regextype posix-extended -regex "${SYSTEMD}/octoapp(-[0-9a-zA-Z]+)?.service")
echo "${services}"
}
function octoapp_setup_dialog() {
status_msg "Initializing OctoApp for Klipper installation ..."
# First, check for moonraker service instances.
local moonraker_count
local moonraker_names
moonraker_count=$(moonraker_systemd | wc -w)
if (( moonraker_count == 0 )); then
### return early if moonraker is not installed
local error="Moonraker not installed! Please install Moonraker first!"
log_error "OctoApp setup started without Moonraker being installed. Aborting setup."
print_error "${error}" && return
elif (( moonraker_count > 1 )); then
# moonraker_names is valid only in case of multi-instance
read -r -a moonraker_names <<< "$(get_multi_instance_names)"
fi
# Next, check for any existing OctoApp services.
local octoapp_services
local existing_octoapp_count
octoapp_services=$(octoapp_systemd)
existing_octoapp_count=$(echo "${octoapp_services}" | wc -w )
# We need to make the moonraker instance count to the OctoApp service count.
local allowed_octoapp_count=$(( moonraker_count - existing_octoapp_count ))
if (( allowed_octoapp_count > 0 )); then
local new_octoapp_count
### Step 1: Ask for the number of OctoApp instances to install
if (( moonraker_count == 1 )); then
ok_msg "Moonraker installation found!\n"
new_octoapp_count=1
elif (( moonraker_count > 1 )); then
top_border
printf "|${green}%-55s${white}|\n" " ${moonraker_count} Moonraker instances found!"
for name in "${moonraker_names[@]}"; do
printf "|${cyan}%-57s${white}|\n" " ● moonraker-${name}"
done
blank_line
if (( existing_octoapp_count > 0 )); then
printf "|${green}%-55s${white}|\n" " ${existing_octoapp_count} OctoApp instances already installed!"
for svc in ${octoapp_services}; do
printf "|${cyan}%-57s${white}|\n" " ● octoapp-$(get_instance_name "${svc}")"
done
fi
blank_line
echo -e "| The setup will apply the same names to OctoApp |"
blank_line
echo -e "| Please select the number of OctoApp instances to |"
echo -e "| install. Usually one OctoApp instance per Moonraker |"
echo -e "| instance is required, but you may not install more |"
echo -e "| OctoApp instances than available Moonraker instances. |"
bottom_border
### ask for amount of instances
local re="^[1-9][0-9]*$"
while [[ ! ${new_octoapp_count} =~ ${re} || ${new_octoapp_count} -gt ${allowed_octoapp_count} ]]; do
read -p "${cyan}###### Number of new OctoApp instances to set up:${white} " -i "${allowed_octoapp_count}" -e new_octoapp_count
### break if input is valid
[[ ${new_octoapp_count} =~ ${re} && ${new_octoapp_count} -le ${allowed_octoapp_count} ]] && break
### conditional error messages
[[ ! ${new_octoapp_count} =~ ${re} ]] && error_msg "Input not a number"
(( new_octoapp_count > allowed_octoapp_count )) && error_msg "Number of OctoApp instances larger than installed Moonraker instances"
done && select_msg "${new_octoapp_count}"
else
log_error "Internal error. moonraker_count of '${moonraker_count}' not equal or grater than one!"
return 1
fi # (( moonraker_count == 1 ))
fi # (( allowed_octoapp_count > 0 ))
# Special case for one moonraker instance with OctoApp already installed.
# If the user selects the install option again, they might be trying to recover the install
# or complete a printer link they didn't finish in the past.
# So in this case, we will allow them to run the install script again, since it's safe to run
# if the service is already installed, it will repair any missing issues.
if (( allowed_octoapp_count == 0 && moonraker_count == 1 )); then
local yn
while true; do
echo "${yellow}OctoApp is already installed.${white}"
echo "It is safe to run the install again to repair any issues or if the printer isn't linked, run the printer linking logic again."
echo ""
local question="Do you want to run the OctoApp recovery or linking logic again?"
read -p "${cyan}###### ${question} (Y/n):${white} " yn
case "${yn}" in
Y|y|Yes|yes|"")
select_msg "Yes"
break;;
N|n|No|no)
select_msg "No"
abort_msg "Exiting OctoApp setup ...\n"
return;;
*)
error_msg "Invalid Input!";;
esac
done
# The user responded yes, allow the install to run again.
allowed_octoapp_count=1
fi
# If there's something to install, do it!
if (( allowed_octoapp_count > 0 )); then
(( new_octoapp_count > 1 )) && status_msg "Installing ${new_octoapp_count} OctoApp instances ..."
(( new_octoapp_count == 1 )) && status_msg "Installing OctoApp ..."
# Ensure the basic system dependencies are installed.
local dep=(git dfu-util virtualenv python3 python3-pip python3-venv)
dependency_check "${dep[@]}"
# Close the repo
clone_octoapp "${OCTOAPP_REPO}"
# Call install with the correct args.
local instance_cfg_dirs
read -r -a instance_cfg_dirs <<< "$(get_instance_folder_path "config")"
echo instance_cfg_dirs[0]
if (( moonraker_count == 1 )); then
"${OCTOAPP_DIR}/install.sh" "${instance_cfg_dirs[0]}/moonraker.conf"
elif (( moonraker_count > 1 )); then
local j=${existing_octoapp_count}
for (( i=1; i <= new_octoapp_count; i++ )); do
"${OCTOAPP_DIR}/install.sh" "${instance_cfg_dirs[${j}]}/moonraker.conf"
j=$(( j + 1 ))
done && unset j
fi # (( moonraker_count == 1 ))
fi # (( allowed_octoapp_count > 0 ))
}
function octoapp_install() {
"${OCTOAPP_DIR}/install.sh" "$@"
}
#===================================================#
#============= Remove ==============#
#===================================================#
function remove_octoapp_systemd() {
[[ -z $(octoapp_systemd) ]] && return
status_msg "Removing OctoApp Systemd Services ..."
for service in $(octoapp_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
ok_msg "OctoApp Services removed!"
}
function remove_octoapp_logs() {
local files regex="${HOME//\//\\/}\/([A-Za-z0-9_]+)\/logs\/octoapp(-[0-9a-zA-Z]+)?\.log(.*)?"
files=$(find "${HOME}" -maxdepth 3 -regextype posix-extended -regex "${regex}" | sort)
if [[ -n ${files} ]]; then
for file in ${files}; do
status_msg "Removing ${file} ..."
rm -f "${file}"
ok_msg "${file} removed!"
done
fi
}
function remove_octoapp_dir() {
[[ ! -d ${OCTOAPP_DIR} ]] && return
status_msg "Removing OctoApp directory ..."
rm -rf "${OCTOAPP_DIR}"
ok_msg "Directory removed!"
}
function remove_octoapp_config() {
# Remove the system config but not the main config, so the printer id doesn't get lost.
local files regex="${HOME//\//\\/}\/([A-Za-z0-9_]+)\/config\/octoapp-system(-[0-9a-zA-Z]+)?\.cfg(.*)?"
files=$(find "${HOME}" -maxdepth 4 -regextype posix-extended -regex "${regex}" | sort)
if [[ -n ${files} ]]; then
for file in ${files}; do
status_msg "Removing ${file} ..."
rm -f "${file}"
ok_msg "${file} removed!"
done
fi
}
function remove_octoapp_store_dir() {
local files regex="${HOME//\//\\/}\/([A-Za-z0-9_]+)\/octoapp-store"
files=$(find "${HOME}" -maxdepth 2 -type d -regextype posix-extended -regex "${regex}" | sort)
if [[ -n ${files} ]]; then
for file in ${files}; do
status_msg "Removing ${file} ..."
rm -rf "${file}"
ok_msg "${file} removed!"
done
fi
}
function remove_octoapp_env() {
[[ ! -d "${HOME}/octoapp-env" ]] && return
status_msg "Removing octoapp-env directory ..."
rm -rf "${HOME}/octoapp-env"
ok_msg "Directory removed!"
}
function remove_octoapp()
{
remove_octoapp_systemd
remove_octoapp_logs
remove_octoapp_dir
remove_octoapp_env
remove_octoapp_config
remove_octoapp_store_dir
print_confirm "OctoApp was successfully removed!"
return
}
#===================================================#
#============= UPDATE ==============#
#===================================================#
function update_octoapp() {
do_action_service "stop" "octoapp"
if [[ ! -d ${OCTOAPP_DIR} ]]; then
clone_octoapp "${OCTOAPP_REPO}"
else
backup_before_update "octoapp"
status_msg "Updating OctoApp for Klipper ..."
cd "${OCTOAPP_DIR}" && git pull
### read PKGLIST and install possible new dependencies
install_octoapp_dependencies
### install possible new python dependencies
"${OCTOAPP_ENV}"/bin/pip install -r "${OCTOAPP_DIR}/requirements.txt"
fi
ok_msg "Update complete!"
do_action_service "restart" "octoapp"
}
function clone_octoapp() {
local repo=${1}
status_msg "Cloning OctoApp from ${repo} ..."
### force remove existing octoapp dir and clone into fresh octoapp dir
[[ -d ${OCTOAPP_DIR} ]] && rm -rf "${OCTOAPP_DIR}"
cd "${HOME}" || exit 1
if ! git clone "${OCTOAPP_REPO}" "${OCTOAPP_DIR}"; then
print_error "Cloning OctoApp from\n ${repo}\n failed!"
exit 1
fi
}
function install_octoapp_dependencies() {
local packages log_name="OctoApp"
local install_script="${OCTOAPP_DIR}/install.sh"
### read PKGLIST from official install-script
status_msg "Reading dependencies..."
# shellcheck disable=SC2016
packages="$(grep "PKGLIST=" "${install_script}" | cut -d'"' -f2 | sed 's/\${PKGLIST}//g' | tr -d '\n')"
echo "${cyan}${packages}${white}" | tr '[:space:]' '\n'
read -r -a packages <<< "${packages}"
### Update system package lists if stale
update_system_package_lists
### Install required packages
install_system_packages "${log_name}" "packages[@]"
}
#===================================================#
#============= STATUS ==============#
#===================================================#
function get_octoapp_status() {
local status
local service_count
local octoapp_services
octoapp_services=$(octoapp_systemd)
service_count=$(echo "${octoapp_services}" | wc -w )
if (( service_count == 0 )); then
status="Not installed!"
elif [[ ! -d "${OCTOAPP_DIR}" ]]; then
status="Incomplete!"
else
status="Installed!"
fi
echo "${status}"
}
function get_local_octoapp_commit() {
[[ ! -d ${OCTOAPP_DIR} || ! -d "${OCTOAPP_DIR}/.git" ]] && return
local commit
cd "${OCTOAPP_DIR}"
commit="$(git describe HEAD --always --tags | cut -d "-" -f 1,2)"
echo "${commit}"
}
function get_remote_octoapp_commit() {
[[ ! -d ${OCTOAPP_DIR} || ! -d "${OCTOAPP_DIR}/.git" ]] && return
local commit
cd "${OCTOAPP_DIR}" && git fetch origin -q
commit=$(git describe origin/release --always --tags | cut -d "-" -f 1,2)
echo "${commit}"
}
function compare_octoapp_versions() {
local versions local_ver remote_ver
local_ver="$(get_local_octoapp_commit)"
remote_ver="$(get_remote_octoapp_commit)"
if [[ ${local_ver} != "${remote_ver}" ]]; then
versions="${yellow}$(printf " %-14s" "${local_ver}")${white}"
versions+="|${green}$(printf " %-13s" "${remote_ver}")${white}"
# Add us to the update file, so if the user selects "update all" it includes us.
add_to_application_updates "octoapp"
else
versions="${green}$(printf " %-14s" "${local_ver}")${white}"
versions+="|${green}$(printf " %-13s" "${remote_ver}")${white}"
fi
echo "${versions}"
}

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -124,4 +124,4 @@ function compare_prettygcode_versions() {
fi fi
echo "${versions}" echo "${versions}"
} }

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -77,10 +77,12 @@ function change_klipper_repo_menu() {
error_msg "Invalid command!";; error_msg "Invalid command!";;
esac esac
done done
break
else else
status_msg "Set custom Klipper repository to:\n ● Repository: ${repos[${option}]}\n ● Branch: ${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}]}"
ok_msg "This repo will now be used for new Klipper installations!\n" ok_msg "This repo will now be used for new Klipper installations!\n"
break
fi fi
elif [[ ${option} =~ ${back} ]]; then elif [[ ${option} =~ ${back} ]]; then
@@ -139,4 +141,4 @@ function show_custom_klipper_repo_help() {
deny_action "show_settings_help";; deny_action "show_settings_help";;
esac esac
done done
} }

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -66,4 +66,4 @@ function advanced_menu() {
esac esac
done done
advanced_menu advanced_menu
} }

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -20,12 +20,12 @@ function backup_ui() {
echo -e "| Klipper & API: | Touchscreen GUI: |" echo -e "| Klipper & API: | Touchscreen GUI: |"
echo -e "| 1) [Klipper] | 7) [KlipperScreen] |" echo -e "| 1) [Klipper] | 7) [KlipperScreen] |"
echo -e "| 2) [Moonraker] | |" echo -e "| 2) [Moonraker] | |"
echo -e "| 3) [Configuration Folder] | 3rd Party Webinterface: |" echo -e "| 3) [Config Folder] | 3rd Party Webinterface: |"
echo -e "| 4) [Moonraker Database] | 8) [OctoPrint] |" echo -e "| 4) [Moonraker Database] | 8) [OctoPrint] |"
echo -e "| | |" echo -e "| | |"
echo -e "| Klipper Webinterface: | Other: |" echo -e "| Klipper Webinterface: | Other: |"
echo -e "| 5) [Mainsail] | 9) [Telegram Bot] |" echo -e "| 5) [Mainsail] | 9) [Telegram Bot] |"
echo -e "| 6) [Fluidd] | |" echo -e "| 6) [Fluidd] | 10) [OctoEverywhere] |"
back_footer back_footer
} }
@@ -41,7 +41,7 @@ function backup_menu() {
2) 2)
do_action "backup_moonraker" "backup_ui";; do_action "backup_moonraker" "backup_ui";;
3) 3)
do_action "backup_klipper_config_dir" "backup_ui";; do_action "backup_config_dir" "backup_ui";;
4) 4)
do_action "backup_moonraker_database" "backup_ui";; do_action "backup_moonraker_database" "backup_ui";;
5) 5)
@@ -54,6 +54,8 @@ function backup_menu() {
do_action "backup_octoprint" "backup_ui";; do_action "backup_octoprint" "backup_ui";;
9) 9)
do_action "backup_telegram_bot" "backup_ui";; do_action "backup_telegram_bot" "backup_ui";;
10)
do_action "backup_octoeverywhere" "backup_ui";;
B|b) B|b)
clear; main_menu; break;; clear; main_menu; break;;
*) *)

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -28,14 +28,15 @@ function install_ui() {
echo -e "| 4) [Fluidd] | 9) $(obico_install_title) |" echo -e "| 4) [Fluidd] | 9) $(obico_install_title) |"
echo -e "| | 10) [OctoEverywhere] |" echo -e "| | 10) [OctoEverywhere] |"
echo -e "| | 11) [Mobileraker] |" echo -e "| | 11) [Mobileraker] |"
echo -e "| Touchscreen GUI: | |" echo -e "| Touchscreen GUI: | 12) [OctoApp for Klipper] |"
echo -e "| 5) [KlipperScreen] | Webcam Streamer: |" echo -e "| 5) [KlipperScreen] | |"
echo -e "| | 12) [Crowsnest] |" echo -e "| | Webcam Streamer: |"
echo -e "| | 13) [Crowsnest] |"
back_footer back_footer
} }
function install_menu() { function install_menu() {
clear -x && sudo -v && clear -x # (re)cache sudo credentials so password prompt doesn't bork ui clear -x && sudo true && clear -x # (re)cache sudo credentials so password prompt doesn't bork ui
print_header print_header
install_ui install_ui
@@ -72,6 +73,8 @@ function install_menu() {
11) 11)
do_action "install_mobileraker" "install_ui";; do_action "install_mobileraker" "install_ui";;
12) 12)
do_action "octoapp_setup_dialog" "install_ui";;
13)
do_action "install_crowsnest" "install_ui";; do_action "install_crowsnest" "install_ui";;
B|b) B|b)
clear; main_menu; break;; clear; main_menu; break;;

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -21,14 +21,14 @@ function main_ui() {
echo -e "| 2) [Update] | Moonraker: $(print_status "moonraker")|" echo -e "| 2) [Update] | Moonraker: $(print_status "moonraker")|"
echo -e "| 3) [Remove] | |" echo -e "| 3) [Remove] | |"
echo -e "| 4) [Advanced] | Mainsail: $(print_status "mainsail")|" echo -e "| 4) [Advanced] | Mainsail: $(print_status "mainsail")|"
# echo -e "| 5) [Backup] | Fluidd: $(print_status "fluidd")|" echo -e "| 5) [Backup] | Fluidd: $(print_status "fluidd")|"
echo -e "| | Fluidd: $(print_status "fluidd")|"
echo -e "| | KlipperScreen: $(print_status "klipperscreen")|" echo -e "| | KlipperScreen: $(print_status "klipperscreen")|"
echo -e "| 6) [Settings] | Telegram Bot: $(print_status "telegram_bot")|" echo -e "| 6) [Settings] | Telegram Bot: $(print_status "telegram_bot")|"
echo -e "| | Crowsnest: $(print_status "crowsnest")|" echo -e "| | Crowsnest: $(print_status "crowsnest")|"
echo -e "| | Obico: $(print_status "moonraker_obico")|" echo -e "| | Obico: $(print_status "moonraker_obico")|"
echo -e "| | OctoEverywhere: $(print_status "octoeverywhere")|" echo -e "| | OctoEverywhere: $(print_status "octoeverywhere")|"
echo -e "| | Mobileraker: $(print_status "mobileraker")|" echo -e "| | Mobileraker: $(print_status "mobileraker")|"
echo -e "| | OctoApp: $(print_status "octoapp")|"
echo -e "| | |" echo -e "| | |"
echo -e "| | Octoprint: $(print_status "octoprint")|" echo -e "| | Octoprint: $(print_status "octoprint")|"
hr hr
@@ -58,7 +58,7 @@ function print_status() {
elif [[ ${status} == "Incomplete!" ]]; then elif [[ ${status} == "Incomplete!" ]]; then
status="${yellow}${status}${white}" status="${yellow}${status}${white}"
elif [[ ${status} == "Not linked!" ]]; then elif [[ ${status} == "Not linked!" ]]; then
### "Not linked!" is only required for Moonraker-obico ### "Not linked!" is only required for Obico for Klipper
status="${yellow}${status}${white}" status="${yellow}${status}${white}"
else else
status="${green}${status}${white}" status="${green}${status}${white}"
@@ -113,8 +113,7 @@ function main_menu() {
"restart crowsnest") do_action_service "restart" "crowsnest"; main_ui;; "restart crowsnest") do_action_service "restart" "crowsnest"; main_ui;;
update) do_action "update_kiauh" "main_ui";; update) do_action "update_kiauh" "main_ui";;
0)clear && print_header 0)clear && print_header
#upload_selection upload_selection
print_error "Function currently disabled! Sorry!"
main_ui;; main_ui;;
1)clear && print_header 1)clear && print_header
install_menu install_menu
@@ -129,8 +128,7 @@ function main_menu() {
advanced_menu advanced_menu
break;; break;;
5)clear && print_header 5)clear && print_header
#backup_menu backup_menu
print_error "Function currently disabled! Sorry!"
main_ui;; main_ui;;
6)clear && print_header 6)clear && print_header
settings_menu settings_menu

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -31,6 +31,7 @@ function remove_ui() {
echo -e "| 7) [KlipperScreen] | 14) [OctoEverywhere] |" echo -e "| 7) [KlipperScreen] | 14) [OctoEverywhere] |"
echo -e "| | 15) [Mobileraker] |" echo -e "| | 15) [Mobileraker] |"
echo -e "| | 16) [NGINX] |" echo -e "| | 16) [NGINX] |"
echo -e "| | 17) [OctoApp] |"
back_footer back_footer
} }
@@ -73,6 +74,8 @@ function remove_menu() {
do_action "remove_mobileraker" "remove_ui";; do_action "remove_mobileraker" "remove_ui";;
16) 16)
do_action "remove_nginx" "remove_ui";; do_action "remove_nginx" "remove_ui";;
17)
do_action "remove_octoapp" "remove_ui";;
B|b) B|b)
clear; main_menu; break;; clear; main_menu; break;;
*) *)

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -35,13 +35,14 @@ function update_ui() {
echo -e "| 9) [OctoEverywhere] |$(compare_octoeverywhere_versions)|" echo -e "| 9) [OctoEverywhere] |$(compare_octoeverywhere_versions)|"
echo -e "| 10) [Mobileraker] |$(compare_mobileraker_versions)|" echo -e "| 10) [Mobileraker] |$(compare_mobileraker_versions)|"
echo -e "| 11) [Crowsnest] |$(compare_crowsnest_versions)|" echo -e "| 11) [Crowsnest] |$(compare_crowsnest_versions)|"
echo -e "| 12) [OctoApp] |$(compare_octoapp_versions)|"
echo -e "| |------------------------------|" echo -e "| |------------------------------|"
echo -e "| 12) [System] | $(check_system_updates) |" echo -e "| 13) [System] | $(check_system_updates) |"
back_footer back_footer
} }
function update_menu() { function update_menu() {
clear -x && sudo -v && clear -x # (re)cache sudo credentials so password prompt doesn't bork ui clear -x && sudo true && clear -x # (re)cache sudo credentials so password prompt doesn't bork ui
do_action "" "update_ui" do_action "" "update_ui"
local action local action
@@ -73,6 +74,8 @@ function update_menu() {
11) 11)
do_action "update_crowsnest" "update_ui";; do_action "update_crowsnest" "update_ui";;
12) 12)
do_action "update_octoapp" "update_ui";;
13)
do_action "upgrade_system_packages" "update_ui";; do_action "upgrade_system_packages" "update_ui";;
a) a)
do_action "update_all" "update_ui";; do_action "update_all" "update_ui";;
@@ -128,7 +131,10 @@ function update_all() {
echo -e "| ${cyan}● OctoEverywhere${white} |" echo -e "| ${cyan}● OctoEverywhere${white} |"
[[ "${update_arr[*]}" =~ "mobileraker" ]] && \ [[ "${update_arr[*]}" =~ "mobileraker" ]] && \
echo -e "| ${cyan}● Mobileraker${white} |" echo -e "| ${cyan}● Mobileraker${white} |"
[[ "${update_arr[*]}" =~ "octoapp" ]] && \
echo -e "| ${cyan}● OctoApp${white} |"
[[ "${update_arr[*]}" =~ "system" ]] && \ [[ "${update_arr[*]}" =~ "system" ]] && \
echo -e "| ${cyan}● System${white} |" echo -e "| ${cyan}● System${white} |"
@@ -139,8 +145,14 @@ function update_all() {
read -p "${cyan}###### Do you want to proceed? (Y/n):${white} " yn read -p "${cyan}###### Do you want to proceed? (Y/n):${white} " yn
case "${yn}" in case "${yn}" in
Y|y|Yes|yes|"") Y|y|Yes|yes|"")
for app in "${update_arr[@]}"; do local component
local update="update_${app}" local update
for component in "${update_arr[@]}"; do
if [[ ${component} == "system" ]]; then
update="upgrade_system_packages"
else
update="update_${component}"
fi
#shellcheck disable=SC2250 #shellcheck disable=SC2250
$update $update
done done

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -54,7 +54,6 @@ function upload_selection() {
[[ ${upload_agreed} == "false" ]] && accept_upload_conditions [[ ${upload_agreed} == "false" ]] && accept_upload_conditions
local logfiles local logfiles
local logs_dir="${KLIPPER_LOGS}"
local webif_logs="/var/log/nginx" local webif_logs="/var/log/nginx"
function find_logfile() { function find_logfile() {
@@ -64,14 +63,18 @@ function upload_selection() {
done done
} }
find_logfile "kiauh\.log" "/tmp" local logdir log_dirs
find_logfile "klippy(-[0-9a-zA-Z]+)?\.log" "${logs_dir}" log_dirs=$(get_instance_folder_path "logs")
find_logfile "moonraker(-[0-9a-zA-Z]+)?\.log" "${logs_dir}" for logdir in ${log_dirs}; do
find_logfile "telegram(-[0-9a-zA-Z]+)?\.log" "${logs_dir}" find_logfile "klippy(-[0-9a-zA-Z]+)?\.log" "${logdir}"
find_logfile "moonraker(-[0-9a-zA-Z]+)?\.log" "${logdir}"
find_logfile "telegram(-[0-9a-zA-Z]+)?\.log" "${logdir}"
done
find_logfile "mainsail.*" "${webif_logs}" find_logfile "mainsail.*" "${webif_logs}"
find_logfile "fluidd.*" "${webif_logs}" find_logfile "fluidd.*" "${webif_logs}"
find_logfile "KlipperScreen.log" "/tmp" find_logfile "KlipperScreen.log" "/tmp"
find_logfile "webcamd\.log(\.[0-9]+)?$" "/var/log" find_logfile "webcamd\.log(\.[0-9]+)?$" "/var/log"
find_logfile "kiauh\.log" "/tmp"
### draw interface ### draw interface
local i=0 local i=0

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#=======================================================================# #=======================================================================#
# Copyright (C) 2020 - 2023 Dominik Willner <th33xitus@gmail.com> # # Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# # # #
# This file is part of KIAUH - Klipper Installation And Update Helper # # This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/th33xitus/kiauh # # https://github.com/dw-0/kiauh #
# # # #
# This file may be distributed under the terms of the GNU GPLv3 license # # This file may be distributed under the terms of the GNU GPLv3 license #
#=======================================================================# #=======================================================================#
@@ -136,7 +136,7 @@ function init_ini() {
echo -e "# File creation date: $(date)" echo -e "# File creation date: $(date)"
echo -e "#=================================================#" echo -e "#=================================================#"
echo -e "# KIAUH - Klipper Installation And Update Helper #" echo -e "# KIAUH - Klipper Installation And Update Helper #"
echo -e "# https://github.com/th33xitus/kiauh #" echo -e "# https://github.com/dw-0/kiauh #"
echo -e "# DO NOT edit this file! #" echo -e "# DO NOT edit this file! #"
echo -e "#=================================================#" echo -e "#=================================================#"
echo -e "# KIAUH v4.0.0" echo -e "# KIAUH v4.0.0"