Compare commits
34
Commits
v6.0.8
...
a42b730688
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a42b730688 | ||
|
|
77d6c87aa0 | ||
|
|
b893ff14f7 | ||
|
|
43b0994ac5 | ||
|
|
040edc1d4f | ||
|
|
750dba1dbe | ||
|
|
6f4b471008 | ||
|
|
5077765fd6 | ||
|
|
9f97ae6c2a | ||
|
|
b90a8f13b1 | ||
|
|
ea1b794afd | ||
|
|
647a7d9400 | ||
|
|
aa0609d143 | ||
|
|
2175bd55f9 | ||
|
|
a935e67431 | ||
|
|
2f41e52189 | ||
|
|
757344128a | ||
|
|
7ca08f9b30 | ||
|
|
308079a821 | ||
|
|
09a5d96b63 | ||
|
|
1f9d4c823a | ||
|
|
c8df9427b3 | ||
|
|
5414aba299 | ||
|
|
80948edbb4 | ||
|
|
a455edba93 | ||
|
|
810ab3a2fa | ||
|
|
6c9a78496a | ||
|
|
123ccde378 | ||
|
|
45fde808d2 | ||
|
|
8ba134f574 | ||
|
|
f951936b20 | ||
|
|
657d919378 | ||
|
|
24c9b9daa9 | ||
|
|
4c511017f1 |
No files matched your search
@@ -7,6 +7,7 @@
|
||||
*.tmp
|
||||
__pycache__
|
||||
.kiauh-env
|
||||
.venv
|
||||
*.code-workspace
|
||||
*.iml
|
||||
kiauh.cfg
|
||||
|
||||
@@ -122,9 +122,9 @@ changes!**
|
||||
|
||||
<hr>
|
||||
|
||||
<h2 align="center">🌐 Sources & Further Information</h2>
|
||||
<h2 align="center">⚙️ Core Components ⚙️</h2>
|
||||
|
||||
<table align="center">
|
||||
<table align="center" style="text-align: center;">
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/Klipper3d/klipper">Klipper</a></h3></th>
|
||||
<th><h3><a href="https://github.com/Arksine/moonraker">Moonraker</a></h3></th>
|
||||
@@ -140,67 +140,88 @@ changes!**
|
||||
<th>by <a href="https://github.com/Arksine">Arksine</a></th>
|
||||
<th>by <a href="https://github.com/mainsail-crew">mainsail-crew</a></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/fluidd-core/fluidd">Fluidd</a></h3></th>
|
||||
<th><h3><a href="https://github.com/jordanruthe/KlipperScreen">KlipperScreen</a></h3></th>
|
||||
<th><h3><a href="https://github.com/OctoPrint/OctoPrint">OctoPrint</a></h3></th>
|
||||
<th><h3><a href="https://github.com/KlipperScreen/KlipperScreen">KlipperScreen</a></h3></th>
|
||||
<th></th>
|
||||
</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://avatars.githubusercontent.com/u/31575189?v=4" alt="jordanruthe avatar" height="64"></th>
|
||||
<th><img src="https://raw.githubusercontent.com/OctoPrint/OctoPrint/master/docs/images/octoprint-logo.png" alt="OctoPrint Logo" height="64"></th>
|
||||
<th><img src="https://raw.githubusercontent.com/fluidd-core/fluidd/master/docs/docs/assets/images/logo.svg" alt="Fluidd Logo" height="64"></th>
|
||||
<th><img src="https://avatars.githubusercontent.com/KlipperScreen?v=4" alt="KlipperScreen Logo" height="64"></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>by <a href="https://github.com/fluidd-core">fluidd-core</a></th>
|
||||
<th>by <a href="https://github.com/jordanruthe">jordanruthe</a></th>
|
||||
<th>by <a href="https://github.com/OctoPrint">OctoPrint</a></th>
|
||||
<th>by <a href="https://github.com/alfrix">alfrix</a></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2 align="center">🧩 Community Extensions 🧩</h2>
|
||||
|
||||
<table align="center" style="text-align: center;">
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/OctoPrint/OctoPrint">OctoPrint</a></h3></th>
|
||||
<th><h3><a href="https://github.com/nlef/moonraker-telegram-bot">Moonraker-Telegram-Bot</a></h3></th>
|
||||
<th><h3><a href="https://github.com/Kragrathea/pgcode">PrettyGCode for Klipper</a></h3></th>
|
||||
<th><h3><a href="https://github.com/TheSpaghettiDetective/moonraker-obico">Obico for Klipper</a></h3></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><img src="https://avatars.githubusercontent.com/u/52351624?v=4" alt="nlef avatar" height="64"></th>
|
||||
<th><img src="https://avatars.githubusercontent.com/u/5917231?v=4" alt="Kragrathea avatar" height="64"></th>
|
||||
<th><img src="https://avatars.githubusercontent.com/u/46323662?s=200&v=4" alt="Obico logo" height="64"></th>
|
||||
<th><a href="https://github.com/OctoPrint/OctoPrint"><img src="https://raw.githubusercontent.com/OctoPrint/OctoPrint/master/docs/images/octoprint-logo.png" alt="OctoPrint Logo" height="64"></a></th>
|
||||
<th><a href="https://github.com/nlef/moonraker-telegram-bot"><img src="https://avatars.githubusercontent.com/u/52351624?v=4" alt="nlef avatar" height="64"></a></th>
|
||||
<th><a href="https://github.com/Kragrathea/pgcode"><img src="https://avatars.githubusercontent.com/u/5917231?v=4" alt="Kragrathea avatar" height="64"></a></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>by <a href="https://github.com/OctoPrint">OctoPrint</a></th>
|
||||
<th>by <a href="https://github.com/nlef">nlef</a></th>
|
||||
<th>by <a href="https://github.com/Kragrathea">Kragrathea</a></th>
|
||||
<th>by <a href="https://github.com/TheSpaghettiDetective">Obico</a></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/TheSpaghettiDetective/moonraker-obico">Obico for Klipper</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://github.com/crysxd/OctoApp-Plugin">OctoApp For Klipper</a></h3></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="https://github.com/TheSpaghettiDetective/moonraker-obico"><img src="https://avatars.githubusercontent.com/u/46323662?s=200&v=4" alt="Obico logo" height="64"></a></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="Mobileraker 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><a href="https://octoapp.eu/?source=kiauh_readme"><img src="https://octoapp.eu/octoapp.webp" alt="OctoApp Logo" height="64"></a></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>by <a href="https://github.com/TheSpaghettiDetective">Obico</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/crysxd">Christian Würthner</a></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/crysxd/OctoApp-Plugin">OctoApp For Klipper</a></h3></th>
|
||||
<th><h3><a href="https://github.com/staubgeborener/klipper-backup">Klipper-Backup</a></h3></th>
|
||||
<th><h3><a href="https://simplyprint.io/">SimplyPrint for Klipper</a></h3></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="https://octoapp.eu/?source=kiauh_readme"><img src="https://octoapp.eu/octoapp.webp" alt="OctoApp Logo" height="64"></a></th>
|
||||
<th><a href="https://github.com/staubgeborener/klipper-backup"><img src="https://avatars.githubusercontent.com/u/28908603?v=4" alt="Staubgeroner Avatar" height="64"></a></th>
|
||||
<th><a href="https://github.com/SimplyPrint"><img src="https://avatars.githubusercontent.com/u/64896552?s=200&v=4" alt="" height="64"></a></th>
|
||||
<th><a href="https://github.com/SimplyPrint"><img src="https://avatars.githubusercontent.com/u/64896552?s=200&v=4" alt="SimplyPrint Logo" height="64"></a></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>by <a href="https://github.com/crysxd">Christian Würthner</a></th>
|
||||
<th>by <a href="https://github.com/Staubgeborener">Staubgeborener</a></th>
|
||||
<th>by <a href="https://github.com/SimplyPrint">SimplyPrint</a></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/CodeMasterCody3D/DroidKlipp">DroidKlipp</a></h3></th>
|
||||
<th><h3><a href="https://github.com/PEEKYPAUL/Moongate">Moongate</a></h3></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="https://github.com/CodeMasterCody3D/DroidKlipp"><img src="https://raw.githubusercontent.com/CodeMasterCody3D/DroidKlipp/main/logo.png" alt="DroidKlipp Logo" height="64"></a></th>
|
||||
<th><a href="https://github.com/PEEKYPAUL/Moongate"><img src="https://raw.githubusercontent.com/PEEKYPAUL/Moongate/master/docs/moongate-icon.png" alt="Moongate Logo" height="64"></a></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>by <a href="https://github.com/CodeMasterCody3D">CodeMasterCody3D</a></th>
|
||||
<th>by <a href="https://github.com/PEEKYPAUL">PEEKYPAUL</a></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
@@ -229,13 +250,3 @@ changes!**
|
||||
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!
|
||||
|
||||
<hr>
|
||||
|
||||
<h4 align="center">A special thank you to JetBrains for sponsoring this project
|
||||
with their incredible software!</h4>
|
||||
<p align="center">
|
||||
<a href="https://www.jetbrains.com/community/opensource/#support" target="_blank">
|
||||
<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png" alt="JetBrains Logo (Main) logo." height="128">
|
||||
</a>
|
||||
</p>
|
||||
+51
-33
@@ -2,7 +2,7 @@
|
||||
|
||||
<p align="center">
|
||||
<a>
|
||||
<img src="https://raw.githubusercontent.com/dw-0/kiauh/master/resources/screenshots/kiauh.png" alt="KIAUH logo" height="181">
|
||||
<img src="docs/assets/logo-large.png" alt="KIAUH logo" height="181">
|
||||
<h1 align="center">Klipper Installation And Update Helper</h1>
|
||||
</a>
|
||||
</p>
|
||||
@@ -34,13 +34,13 @@ KIAUH 是一个帮助您在 Linux 系统上安装 Klipper 的脚本工具,
|
||||
选择 `Choose OS -> Raspberry Pi OS (other)`:
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/dw-0/kiauh/master/resources/screenshots/rpi_imager1.png" alt="KIAUH logo" height="350">
|
||||
<img src="docs/assets/rpi_imager1.png" alt="KIAUH logo" height="350">
|
||||
</p>
|
||||
|
||||
* 然后选择 `Raspberry Pi OS Lite (32位)` (或如果您想使用64位版本):
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/dw-0/kiauh/master/resources/screenshots/rpi_imager2.png" alt="KIAUH logo" height="350">
|
||||
<img src="docs/assets/rpi_imager2.png" alt="KIAUH logo" height="350">
|
||||
</p>
|
||||
|
||||
* 返回 Raspberry Pi Imager 主界面,选择对应的 SD 卡作为写入目标。
|
||||
@@ -99,9 +99,9 @@ cd ~ && git clone https://github.com/dw-0/kiauh.git
|
||||
您会被要求输入 sudo 密码。
|
||||
因为有几个功能需要 sudo 权限。
|
||||
|
||||
## 🌐 相关资源与更多信息
|
||||
<h2 align="center">⚙️ 核心组件 ⚙️</h2>
|
||||
|
||||
<table align="center">
|
||||
<table align="center" style="text-align: center;">
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/Klipper3d/klipper">Klipper</a></h3></th>
|
||||
<th><h3><a href="https://github.com/Arksine/moonraker">Moonraker</a></h3></th>
|
||||
@@ -117,70 +117,93 @@ cd ~ && git clone https://github.com/dw-0/kiauh.git
|
||||
<th>由 <a href="https://github.com/Arksine">Arksine</a></th>
|
||||
<th>由 <a href="https://github.com/mainsail-crew">mainsail-crew</a></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/fluidd-core/fluidd">Fluidd</a></h3></th>
|
||||
<th><h3><a href="https://github.com/jordanruthe/KlipperScreen">KlipperScreen</a></h3></th>
|
||||
<th><h3><a href="https://github.com/OctoPrint/OctoPrint">OctoPrint</a></h3></th>
|
||||
<th><h3><a href="https://github.com/KlipperScreen/KlipperScreen">KlipperScreen</a></h3></th>
|
||||
<th></th>
|
||||
</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://avatars.githubusercontent.com/u/31575189?v=4" alt="jordanruthe avatar" height="64"></th>
|
||||
<th><img src="https://raw.githubusercontent.com/OctoPrint/OctoPrint/master/docs/images/octoprint-logo.png" alt="OctoPrint Logo" height="64"></th>
|
||||
<th><img src="https://raw.githubusercontent.com/fluidd-core/fluidd/master/docs/docs/assets/images/logo.svg" alt="Fluidd Logo" height="64"></th>
|
||||
<th><img src="https://avatars.githubusercontent.com/KlipperScreen?v=4" alt="KlipperScreen Logo" height="64"></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>由 <a href="https://github.com/fluidd-core">fluidd-core</a></th>
|
||||
<th>由 <a href="https://github.com/jordanruthe">jordanruthe</a></th>
|
||||
<th>由 <a href="https://github.com/OctoPrint">OctoPrint</a></th>
|
||||
<th>由 <a href="https://github.com/alfrix">alfrix</a></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2 align="center">🧩 社区扩展 🧩</h2>
|
||||
|
||||
<table align="center" style="text-align: center;">
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/OctoPrint/OctoPrint">OctoPrint</a></h3></th>
|
||||
<th><h3><a href="https://github.com/nlef/moonraker-telegram-bot">Moonraker-Telegram-Bot</a></h3></th>
|
||||
<th><h3><a href="https://github.com/Kragrathea/pgcode">PrettyGCode for Klipper</a></h3></th>
|
||||
<th><h3><a href="https://github.com/TheSpaghettiDetective/moonraker-obico">Obico for Klipper</a></h3></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><img src="https://avatars.githubusercontent.com/u/52351624?v=4" alt="nlef avatar" height="64"></th>
|
||||
<th><img src="https://avatars.githubusercontent.com/u/5917231?v=4" alt="Kragrathea avatar" height="64"></th>
|
||||
<th><img src="https://avatars.githubusercontent.com/u/46323662?s=200&v=4" alt="Obico logo" height="64"></th>
|
||||
<th><a href="https://github.com/OctoPrint/OctoPrint"><img src="https://raw.githubusercontent.com/OctoPrint/OctoPrint/master/docs/images/octoprint-logo.png" alt="OctoPrint Logo" height="64"></a></th>
|
||||
<th><a href="https://github.com/nlef/moonraker-telegram-bot"><img src="https://avatars.githubusercontent.com/u/52351624?v=4" alt="nlef avatar" height="64"></a></th>
|
||||
<th><a href="https://github.com/Kragrathea/pgcode"><img src="https://avatars.githubusercontent.com/u/5917231?v=4" alt="Kragrathea avatar" height="64"></a></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>由 <a href="https://github.com/OctoPrint">OctoPrint</a></th>
|
||||
<th>由 <a href="https://github.com/nlef">nlef</a></th>
|
||||
<th>由 <a href="https://github.com/Kragrathea">Kragrathea</a></th>
|
||||
<th>由 <a href="https://github.com/TheSpaghettiDetective">Obico</a></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/TheSpaghettiDetective/moonraker-obico">Obico for Klipper</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://github.com/crysxd/OctoApp-Plugin">OctoApp For Klipper</a></h3></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="https://github.com/TheSpaghettiDetective/moonraker-obico"><img src="https://avatars.githubusercontent.com/u/46323662?s=200&v=4" alt="Obico logo" height="64"></a></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="Mobileraker 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><a href="https://octoapp.eu/?source=kiauh_readme"><img src="https://octoapp.eu/octoapp.webp" alt="OctoApp Logo" height="64"></a></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>由 <a href="https://github.com/TheSpaghettiDetective">Obico</a></th>
|
||||
<th>由 <a href="https://github.com/Clon1998">Patrick Schmidt</a></th>
|
||||
<th>由 <a href="https://github.com/QuinnDamerell">Quinn Damerell</a></th>
|
||||
<th>由 <a href="https://github.com/crysxd">Christian Würthner</a></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/crysxd/OctoApp-Plugin">OctoApp For Klipper</a></h3></th>
|
||||
<th><h3><a href="https://github.com/staubgeborener/klipper-backup">Klipper-Backup</a></h3></th>
|
||||
<th><h3><a href="https://simplyprint.io/">SimplyPrint for Klipper</a></h3></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="https://octoapp.eu/?source=kiauh_readme"><img src="https://octoapp.eu/octoapp.webp" alt="OctoApp Logo" height="64"></a></th>
|
||||
<th><a href="https://github.com/staubgeborener/klipper-backup"><img src="https://avatars.githubusercontent.com/u/28908603?v=4" alt="Staubgeroner Avatar" height="64"></a></th>
|
||||
<th><a href="https://github.com/SimplyPrint"><img src="https://avatars.githubusercontent.com/u/64896552?s=200&v=4" alt="" height="64"></a></th>
|
||||
<th><a href="https://github.com/SimplyPrint"><img src="https://avatars.githubusercontent.com/u/64896552?s=200&v=4" alt="SimplyPrint Logo" height="64"></a></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>由 <a href="https://github.com/crysxd">Christian Würthner</a></th>
|
||||
<th>由 <a href="https://github.com/Staubgeborener">Staubgeborener</a></th>
|
||||
<th>由 <a href="https://github.com/SimplyPrint">SimplyPrint</a></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><h3><a href="https://github.com/CodeMasterCody3D/DroidKlipp">DroidKlipp</a></h3></th>
|
||||
<th><h3><a href="https://github.com/PEEKYPAUL/Moongate">Moongate</a></h3></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="https://github.com/CodeMasterCody3D/DroidKlipp"><img src="https://raw.githubusercontent.com/CodeMasterCody3D/DroidKlipp/main/logo.png" alt="DroidKlipp Logo" height="64"></a></th>
|
||||
<th><a href="https://github.com/PEEKYPAUL/Moongate"><img src="https://raw.githubusercontent.com/PEEKYPAUL/Moongate/master/docs/moongate-icon.png" alt="Moongate Logo" height="64"></a></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>由 <a href="https://github.com/CodeMasterCody3D">CodeMasterCody3D</a></th>
|
||||
<th>由 <a href="https://github.com/PEEKYPAUL">PEEKYPAUL</a></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## 🎖️ 贡献者
|
||||
<hr>
|
||||
|
||||
<h2 align="center">🎖️ 贡献者 🎖️</h2>
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/dw-0/kiauh/graphs/contributors">
|
||||
@@ -192,15 +215,10 @@ cd ~ && git clone https://github.com/dw-0/kiauh.git
|
||||
<img src="https://repobeats.axiom.co/api/embed/a1afbda9190c04a90cf4bd3061e5573bc836cb05.svg" alt="Repobeats analytics image"/>
|
||||
</div>
|
||||
|
||||
## ✨ 特别感谢
|
||||
<hr>
|
||||
|
||||
<h2 align="center">✨ 特别感谢 ✨</h2>
|
||||
|
||||
* 非常感谢 [lixxbox](https://github.com/lixxbox) 设计了如此出色的 KIAUH 标志!
|
||||
* 同时,非常感谢所有通过 [Ko-fi](https://ko-fi.com/dw__0) 支持我的工作的人!
|
||||
* 最后但同样重要的是:感谢所有为 Klipper 社区做出贡献的成员,以及喜欢和分享这个项目的朋友们!
|
||||
|
||||
<h4 align="center">特别感谢 JetBrains 为本项目提供其出色的软件赞助!</h4>
|
||||
<p align="center">
|
||||
<a href="https://www.jetbrains.com/community/opensource/#support" target="_blank">
|
||||
<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png" alt="JetBrains Logo (Main) logo." height="128">
|
||||
</a>
|
||||
</p>
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#=======================================================================#
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -15,18 +15,30 @@ clear -x
|
||||
# make sure we have the correct permissions while running the script
|
||||
umask 022
|
||||
|
||||
# gets the path where this script is located
|
||||
KIAUH_SRCDIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd)
|
||||
|
||||
# colors
|
||||
white="\033[37m"
|
||||
cyan="\033[96m"
|
||||
red="\033[91m"
|
||||
yellow="\033[93m"
|
||||
green="\033[92m"
|
||||
|
||||
#===================================================#
|
||||
#=================== UPDATE KIAUH ==================#
|
||||
#===================================================#
|
||||
|
||||
function update_kiauh() {
|
||||
status_msg "Updating KIAUH ..."
|
||||
echo "Updating KIAUH ..."
|
||||
|
||||
cd "${KIAUH_SRCDIR}"
|
||||
git reset --hard && git pull
|
||||
|
||||
ok_msg "Update complete! Please restart KIAUH."
|
||||
exit 0
|
||||
echo "Update complete! Restarting..."
|
||||
sleep 1
|
||||
exec "$0" "$@" # restarts the script
|
||||
|
||||
}
|
||||
|
||||
#===================================================#
|
||||
@@ -65,16 +77,18 @@ function kiauh_update_dialog() {
|
||||
echo -e "\-------------------------------------------------------/"
|
||||
|
||||
local yn
|
||||
read -p "${cyan}###### Do you want to update now? (Y/n):${white} " yn
|
||||
echo -ne "${cyan}###### Do you want to update now? (Y/n):${white} "
|
||||
read yn
|
||||
while true; do
|
||||
case "${yn}" in
|
||||
Y|y|Yes|yes|"")
|
||||
do_action "update_kiauh"
|
||||
update_kiauh
|
||||
break;;
|
||||
N|n|No|no)
|
||||
break;;
|
||||
*)
|
||||
deny_action "kiauh_update_dialog";;
|
||||
echo -e "${red}Invalid input. Please try again.${white}"
|
||||
kiauh_update_dialog;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -19,10 +19,12 @@ CROWSNEST_SERVICE_NAME = "crowsnest.service"
|
||||
|
||||
# directories
|
||||
CROWSNEST_DIR = Path.home().joinpath("crowsnest")
|
||||
CROWSNEST_ENV_DIR = Path.home().joinpath("crowsnest-env")
|
||||
|
||||
# files
|
||||
CROWSNEST_MULTI_CONFIG = CROWSNEST_DIR.joinpath("tools/.config")
|
||||
CROWSNEST_INSTALL_SCRIPT = CROWSNEST_DIR.joinpath("tools/install.sh")
|
||||
CROWSNEST_DEPS_JSON_FILE = CROWSNEST_DIR.joinpath("system-dependencies.json")
|
||||
CROWSNEST_BIN_FILE = Path("/usr/local/bin/crowsnest")
|
||||
CROWSNEST_LOGROTATE_FILE = Path("/etc/logrotate.d/crowsnest")
|
||||
CROWSNEST_SERVICE_FILE = SYSTEMD.joinpath(CROWSNEST_SERVICE_NAME)
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -16,7 +16,9 @@ from typing import List
|
||||
|
||||
from components.crowsnest import (
|
||||
CROWSNEST_BIN_FILE,
|
||||
CROWSNEST_DEPS_JSON_FILE,
|
||||
CROWSNEST_DIR,
|
||||
CROWSNEST_ENV_DIR,
|
||||
CROWSNEST_INSTALL_SCRIPT,
|
||||
CROWSNEST_LOGROTATE_FILE,
|
||||
CROWSNEST_MULTI_CONFIG,
|
||||
@@ -25,6 +27,8 @@ from components.crowsnest import (
|
||||
CROWSNEST_SERVICE_NAME,
|
||||
)
|
||||
from components.klipper.klipper import Klipper
|
||||
from components.moonraker.utils.sysdeps_parser import SysDepsParser
|
||||
from components.moonraker.utils.utils import load_sysdeps_json
|
||||
from core.logger import DialogType, Logger
|
||||
from core.services.backup_service import BackupService
|
||||
from core.settings.kiauh_settings import KiauhSettings
|
||||
@@ -34,6 +38,7 @@ from utils.common import (
|
||||
get_install_status,
|
||||
)
|
||||
from utils.git_utils import (
|
||||
get_current_branch,
|
||||
git_clone_wrapper,
|
||||
git_pull_wrapper,
|
||||
)
|
||||
@@ -47,7 +52,7 @@ from utils.sys_utils import (
|
||||
|
||||
def install_crowsnest() -> None:
|
||||
# Step 1: Clone crowsnest repo
|
||||
git_clone_wrapper(CROWSNEST_REPO, CROWSNEST_DIR, "master")
|
||||
git_clone_wrapper(CROWSNEST_REPO, CROWSNEST_DIR)
|
||||
|
||||
# Step 2: Install dependencies
|
||||
check_install_dependencies({"make"})
|
||||
@@ -135,8 +140,7 @@ def update_crowsnest() -> None:
|
||||
|
||||
git_pull_wrapper(CROWSNEST_DIR)
|
||||
|
||||
deps = parse_packages_from_file(CROWSNEST_INSTALL_SCRIPT)
|
||||
check_install_dependencies({*deps})
|
||||
install_crowsnest_packages()
|
||||
|
||||
cmd_sysctl_service(CROWSNEST_SERVICE_NAME, "restart")
|
||||
|
||||
@@ -147,12 +151,68 @@ def update_crowsnest() -> None:
|
||||
|
||||
|
||||
def get_crowsnest_status() -> ComponentStatus:
|
||||
files = [
|
||||
CROWSNEST_BIN_FILE,
|
||||
CROWSNEST_LOGROTATE_FILE,
|
||||
CROWSNEST_SERVICE_FILE,
|
||||
]
|
||||
return get_install_status(CROWSNEST_DIR, files=files)
|
||||
"""
|
||||
Get the current install status of Crowsnest. Depending on the version the installed
|
||||
files are different. If a version is not yet specified, it will search for a
|
||||
non_existant file resulting in 'Incomplete' status.
|
||||
:return: Installation status
|
||||
"""
|
||||
files_dict = {
|
||||
4: [
|
||||
CROWSNEST_BIN_FILE,
|
||||
CROWSNEST_LOGROTATE_FILE,
|
||||
CROWSNEST_SERVICE_FILE,
|
||||
],
|
||||
5: [CROWSNEST_SERVICE_FILE],
|
||||
}
|
||||
version = get_crowsnest_version()
|
||||
|
||||
non_existant = CROWSNEST_DIR.joinpath("non_existant")
|
||||
files = files_dict.get(version, [non_existant])
|
||||
|
||||
env_dir = None
|
||||
if version >= 5:
|
||||
env_dir = CROWSNEST_ENV_DIR
|
||||
return get_install_status(CROWSNEST_DIR, files=files, env_dir=env_dir)
|
||||
|
||||
|
||||
def get_crowsnest_version() -> int:
|
||||
"""
|
||||
Get the current major version. Starting with v5 the default branch will be named
|
||||
after the major version.
|
||||
:return: Current major version
|
||||
"""
|
||||
version = get_current_branch(CROWSNEST_DIR)
|
||||
if version is None:
|
||||
return 0
|
||||
if version == "master":
|
||||
return 4
|
||||
return int(version.removeprefix("v"))
|
||||
|
||||
|
||||
def install_crowsnest_packages() -> None:
|
||||
Logger.print_status("Parsing Crowsnest system dependencies ...")
|
||||
|
||||
crowsnest_deps = []
|
||||
crowsnest_version = get_crowsnest_version()
|
||||
if crowsnest_version >= 5 and CROWSNEST_DEPS_JSON_FILE.exists():
|
||||
Logger.print_info(
|
||||
f"Parsing system dependencies from {CROWSNEST_DEPS_JSON_FILE.name} ..."
|
||||
)
|
||||
parser = SysDepsParser()
|
||||
sysdeps = load_sysdeps_json(CROWSNEST_DEPS_JSON_FILE)
|
||||
crowsnest_deps.extend(parser.parse_dependencies(sysdeps))
|
||||
|
||||
elif crowsnest_version <= 4 and CROWSNEST_INSTALL_SCRIPT.exists():
|
||||
Logger.print_info(
|
||||
f"Parsing system dependencies from {CROWSNEST_INSTALL_SCRIPT.name} ..."
|
||||
)
|
||||
crowsnest_deps = parse_packages_from_file(CROWSNEST_INSTALL_SCRIPT)
|
||||
|
||||
if not crowsnest_deps:
|
||||
raise ValueError("Error parsing crowsnest dependencies!")
|
||||
|
||||
check_install_dependencies({*crowsnest_deps})
|
||||
|
||||
|
||||
def remove_crowsnest() -> None:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -34,7 +34,7 @@ from core.constants import CURRENT_USER
|
||||
from core.instance_manager.base_instance import SUFFIX_BLACKLIST
|
||||
from core.logger import DialogType, Logger
|
||||
from core.services.backup_service import BackupService
|
||||
from core.submodules.simple_config_parser.src.simple_config_parser.simple_config_parser import (
|
||||
from core.simple_config_parser.simple_config_parser import (
|
||||
SimpleConfigParser,
|
||||
)
|
||||
from core.types.component_status import ComponentStatus
|
||||
@@ -113,7 +113,7 @@ def check_user_groups() -> None:
|
||||
|
||||
if not get_confirm(f"Add user '{CURRENT_USER}' to group(s) now?"):
|
||||
log = "Skipped adding user to required groups. You might encounter issues."
|
||||
Logger.warn(log)
|
||||
Logger.print_warn(log)
|
||||
return
|
||||
|
||||
try:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -236,9 +236,11 @@ class KlipperSelectMcuConnectionMenu(BaseMenu):
|
||||
if len(self.flash_options.mcu_list) < 1:
|
||||
Logger.print_warn("No MCUs found!")
|
||||
Logger.print_warn("Make sure they are connected and repeat this step.")
|
||||
time.sleep(3)
|
||||
return
|
||||
|
||||
# if standalone is True, we only display the MCUs to the user and return
|
||||
if self.__standalone and len(self.flash_options.mcu_list) > 0:
|
||||
if self.__standalone:
|
||||
Logger.print_ok("The following MCUs were found:", prefix=False)
|
||||
for i, mcu in enumerate(self.flash_options.mcu_list):
|
||||
print(f" ● MCU #{i}: {Color.CYAN}{mcu}{Color.RST}")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -25,7 +25,7 @@ from components.moonraker import (
|
||||
from core.constants import CURRENT_USER
|
||||
from core.instance_manager.base_instance import BaseInstance
|
||||
from core.logger import Logger
|
||||
from core.submodules.simple_config_parser.src.simple_config_parser.simple_config_parser import (
|
||||
from core.simple_config_parser.simple_config_parser import (
|
||||
SimpleConfigParser,
|
||||
)
|
||||
from utils.fs_utils import create_folders
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -25,7 +25,7 @@ from components.moonraker.utils.sysdeps_parser import SysDepsParser
|
||||
from components.webui_client.base_data import BaseWebClient
|
||||
from core.logger import Logger
|
||||
from core.services.backup_service import BackupService
|
||||
from core.submodules.simple_config_parser.src.simple_config_parser.simple_config_parser import (
|
||||
from core.simple_config_parser.simple_config_parser import (
|
||||
SimpleConfigParser,
|
||||
)
|
||||
from core.types.component_status import ComponentStatus
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -8,7 +8,7 @@
|
||||
# ======================================================================= #
|
||||
|
||||
|
||||
from typing import List
|
||||
from typing import List, Optional
|
||||
|
||||
from components.klipper.klipper import Klipper
|
||||
from components.moonraker.moonraker import Moonraker
|
||||
@@ -27,6 +27,7 @@ def run_client_config_removal(
|
||||
client_config: BaseWebClientConfig,
|
||||
kl_instances: List[Klipper],
|
||||
mr_instances: List[Moonraker],
|
||||
svc: Optional[BackupService] = None,
|
||||
) -> Message:
|
||||
completion_msg = Message(
|
||||
title=f"{client_config.display_name} Removal Process completed",
|
||||
@@ -36,12 +37,15 @@ def run_client_config_removal(
|
||||
if run_remove_routines(client_config.config_dir):
|
||||
completion_msg.text.append(f"● {client_config.display_name} removed")
|
||||
|
||||
BackupService().backup_printer_config_dir()
|
||||
if svc is None:
|
||||
svc = BackupService()
|
||||
|
||||
svc.backup_moonraker_conf()
|
||||
completion_msg = remove_moonraker_config_section(
|
||||
completion_msg, client_config, mr_instances
|
||||
)
|
||||
|
||||
svc.backup_printer_cfg()
|
||||
completion_msg = remove_printer_config_section(
|
||||
completion_msg, client_config, kl_instances
|
||||
)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -41,6 +41,7 @@ def run_client_removal(
|
||||
)
|
||||
mr_instances: List[Moonraker] = get_instances(Moonraker)
|
||||
kl_instances: List[Klipper] = get_instances(Klipper)
|
||||
svc = BackupService()
|
||||
|
||||
if backup_config:
|
||||
version = ""
|
||||
@@ -49,7 +50,6 @@ def run_client_removal(
|
||||
with open(src.joinpath(".version"), "r") as v:
|
||||
version = v.readlines()[0]
|
||||
|
||||
svc = BackupService()
|
||||
target_path = svc.backup_root.joinpath(f"{client.client_dir.name}_{version}")
|
||||
success = svc.backup_file(
|
||||
source_path=client.config_file,
|
||||
@@ -67,7 +67,7 @@ def run_client_removal(
|
||||
if remove_client_nginx_logs(client, kl_instances):
|
||||
completion_msg.text.append("● NGINX logs removed")
|
||||
|
||||
BackupService().backup_moonraker_conf()
|
||||
svc.backup_moonraker_conf()
|
||||
section = f"update_manager {client_name}"
|
||||
handled_instances: List[Moonraker] = remove_config_section(
|
||||
section, mr_instances
|
||||
@@ -83,6 +83,7 @@ def run_client_removal(
|
||||
client.client_config,
|
||||
kl_instances,
|
||||
mr_instances,
|
||||
svc,
|
||||
)
|
||||
if cfg_completion_msg.color == Color.GREEN:
|
||||
completion_msg.text.extend(cfg_completion_msg.text[1:])
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -33,7 +33,7 @@ from core.constants import (
|
||||
from core.logger import Logger
|
||||
from core.services.backup_service import BackupService
|
||||
from core.settings.kiauh_settings import KiauhSettings, WebUiSettings
|
||||
from core.submodules.simple_config_parser.src.simple_config_parser.simple_config_parser import (
|
||||
from core.simple_config_parser.simple_config_parser import (
|
||||
SimpleConfigParser,
|
||||
)
|
||||
from core.types.color import Color
|
||||
@@ -78,10 +78,10 @@ def get_current_client_config() -> str:
|
||||
installed = [c for c in clients if c.client_config.config_dir.exists()]
|
||||
|
||||
if not installed:
|
||||
return Color.apply("-", Color.CYAN)
|
||||
return str(Color.apply("-", Color.CYAN))
|
||||
elif len(installed) == 1:
|
||||
cfg = installed[0].client_config
|
||||
return Color.apply(cfg.display_name, Color.CYAN)
|
||||
return str(Color.apply(cfg.display_name, Color.CYAN))
|
||||
|
||||
# at this point, both client config folders exists, so we need to check
|
||||
# which are actually included in the printer.cfg of all klipper instances
|
||||
@@ -100,18 +100,18 @@ def get_current_client_config() -> str:
|
||||
|
||||
# if both are included in the same file, we have a potential conflict
|
||||
if includes_mainsail and includes_fluidd:
|
||||
return Color.apply("Conflict", Color.YELLOW)
|
||||
return str(Color.apply("Conflict", Color.YELLOW))
|
||||
|
||||
if not mainsail_includes and not fluidd_includes:
|
||||
# there are no includes at all, even though the client config folders exist
|
||||
return Color.apply("-", Color.CYAN)
|
||||
return str(Color.apply("-", Color.CYAN))
|
||||
elif len(fluidd_includes) > len(mainsail_includes):
|
||||
# there are more instances that include fluidd than mainsail
|
||||
return Color.apply(fluidd.client_config.display_name, Color.CYAN)
|
||||
return str(Color.apply(fluidd.client_config.display_name, Color.CYAN))
|
||||
else:
|
||||
# there are the same amount of non-conflicting includes for each config
|
||||
# or more instances include mainsail than fluidd
|
||||
return Color.apply(mainsail.client_config.display_name, Color.CYAN)
|
||||
return str(Color.apply(mainsail.client_config.display_name, Color.CYAN))
|
||||
|
||||
|
||||
def enable_mainsail_remotemode() -> None:
|
||||
@@ -152,10 +152,9 @@ def symlink_webui_nginx_log(
|
||||
def get_local_client_version(client: BaseWebClient) -> str | None:
|
||||
relinfo_file = client.client_dir.joinpath("release_info.json")
|
||||
version_file = client.client_dir.joinpath(".version")
|
||||
default = "n/a"
|
||||
|
||||
if not client.client_dir.exists():
|
||||
return default
|
||||
return None
|
||||
|
||||
# try to get version from release_info.json first
|
||||
if relinfo_file.is_file():
|
||||
@@ -177,11 +176,11 @@ def get_local_client_version(client: BaseWebClient) -> str | None:
|
||||
try:
|
||||
with open(version_file, "r") as f:
|
||||
line = f.readline().strip()
|
||||
return line or default
|
||||
return line or None
|
||||
except OSError:
|
||||
Logger.print_error("Unable to read '.version'")
|
||||
|
||||
return default
|
||||
return None
|
||||
|
||||
|
||||
def get_remote_client_version(client: BaseWebClient) -> str | None:
|
||||
@@ -446,9 +445,9 @@ def get_client_port_selection(
|
||||
while True:
|
||||
_type = "Reconfigure" if reconfigure else "Configure"
|
||||
question = f"{_type} {client.display_name} for port"
|
||||
port_input = get_number_input(question, min_value=80, default=port)
|
||||
port_input: int | None = get_number_input(question, min_value=80, default=port)
|
||||
|
||||
if port_input not in ports_in_use:
|
||||
if port_input and port_input not in ports_in_use:
|
||||
client_settings: WebUiSettings = settings[client.name]
|
||||
client_settings.port = port_input
|
||||
settings.save()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -97,7 +97,7 @@ class ClientInstallMenu(BaseMenu):
|
||||
self.message_service.set_message(message)
|
||||
|
||||
def _get_current_port(self) -> int:
|
||||
curr_port = get_nginx_listen_port(self.client.nginx_config)
|
||||
curr_port: int | None = get_nginx_listen_port(self.client.nginx_config)
|
||||
if curr_port is None:
|
||||
# if the port is not found in the config file we use
|
||||
# the default port from the kiauh settings as fallback
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -95,8 +95,8 @@ class MainMenu(BaseMenu):
|
||||
status_data: ComponentStatus = status_fn(*args)
|
||||
code: int = status_data.status
|
||||
status: StatusText = StatusMap[code]
|
||||
owner: str = trunc_string(status_data.owner, 23)
|
||||
repo: str = trunc_string(status_data.repo, 23)
|
||||
owner: str = trunc_string(status_data.owner, 23) if status_data.owner else '-'
|
||||
repo: str = trunc_string(status_data.repo, 23) if status_data.repo else '-'
|
||||
instance_count: int = status_data.instances
|
||||
|
||||
count_txt: str = ""
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -100,11 +100,11 @@ class SettingsMenu(BaseMenu):
|
||||
def trim_repo_url(repo: str) -> str:
|
||||
return repo.replace(".git", "").replace("https://", "").replace("git@", "")
|
||||
|
||||
if not klipper_status.repo == "-":
|
||||
if klipper_status.repo:
|
||||
url = trim_repo_url(klipper_status.repo_url)
|
||||
self.kl_repo_url = Color.apply(url, Color.CYAN)
|
||||
self.kl_branch = Color.apply(klipper_status.branch, Color.CYAN)
|
||||
if not moonraker_status.repo == "-":
|
||||
if moonraker_status.repo:
|
||||
url = trim_repo_url(moonraker_status.repo_url)
|
||||
self.mr_repo_url = Color.apply(url, Color.CYAN)
|
||||
self.mr_branch = Color.apply(moonraker_status.branch, Color.CYAN)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -251,20 +251,23 @@ class UpdateMenu(BaseMenu):
|
||||
self._set_status_data("klipperscreen", get_klipperscreen_status)
|
||||
self._set_status_data("crowsnest", get_crowsnest_status)
|
||||
|
||||
self._fetch_system_package_update_status()
|
||||
|
||||
def _fetch_system_package_update_status(self) -> None:
|
||||
update_system_package_lists(silent=True)
|
||||
self.packages = get_upgradable_packages()
|
||||
self.package_count = len(self.packages)
|
||||
|
||||
def _format_local_status(self, local_version, remote_version) -> str:
|
||||
color = Color.RED
|
||||
if not local_version:
|
||||
if local_version is None:
|
||||
color = Color.RED
|
||||
elif local_version == remote_version:
|
||||
color = Color.GREEN
|
||||
elif local_version != remote_version:
|
||||
color = Color.YELLOW
|
||||
|
||||
return Color.apply(local_version or "-", color)
|
||||
return str(Color.apply(local_version or '-', color))
|
||||
|
||||
def _set_status_data(self, name: str, status_fn: Callable, *args) -> None:
|
||||
comp_status: ComponentStatus = status_fn(*args)
|
||||
@@ -290,7 +293,13 @@ class UpdateMenu(BaseMenu):
|
||||
return self.status_data[name]["installed"]
|
||||
|
||||
def _is_update_available(self, name: str) -> bool:
|
||||
return self.status_data[name]["local"] != self.status_data[name]["remote"]
|
||||
local = self.status_data[name]["local"]
|
||||
remote = self.status_data[name]["remote"]
|
||||
|
||||
if local is None or remote is None:
|
||||
return False
|
||||
|
||||
return local != remote
|
||||
|
||||
def _run_update_routine(self, name: str, update_fn: Callable, *args) -> None:
|
||||
display_name = self.status_data[name]["display_name"]
|
||||
@@ -306,6 +315,27 @@ class UpdateMenu(BaseMenu):
|
||||
|
||||
update_fn(*args)
|
||||
|
||||
self._refresh_component_status(name)
|
||||
|
||||
def _refresh_component_status(self, name: str) -> None:
|
||||
"""Refresh the status data for a component after an update."""
|
||||
if name == "klipper":
|
||||
self._set_status_data("klipper", get_klipper_status)
|
||||
elif name == "moonraker":
|
||||
self._set_status_data("moonraker", get_moonraker_status)
|
||||
elif name == "mainsail":
|
||||
self._set_status_data("mainsail", get_client_status, self.mainsail_data, True)
|
||||
elif name == "mainsail_config":
|
||||
self._set_status_data("mainsail_config", get_client_config_status, self.mainsail_data)
|
||||
elif name == "fluidd":
|
||||
self._set_status_data("fluidd", get_client_status, self.fluidd_data, True)
|
||||
elif name == "fluidd_config":
|
||||
self._set_status_data("fluidd_config", get_client_config_status, self.fluidd_data)
|
||||
elif name == "klipperscreen":
|
||||
self._set_status_data("klipperscreen", get_klipperscreen_status)
|
||||
elif name == "crowsnest":
|
||||
self._set_status_data("crowsnest", get_crowsnest_status)
|
||||
|
||||
def _run_system_updates(self) -> None:
|
||||
if not self.packages:
|
||||
Logger.print_info("No system upgrades available!")
|
||||
@@ -313,15 +343,20 @@ class UpdateMenu(BaseMenu):
|
||||
|
||||
try:
|
||||
pkgs: str = ", ".join(self.packages)
|
||||
|
||||
Logger.print_dialog(
|
||||
DialogType.CUSTOM,
|
||||
["The following packages will be upgraded:", "\n\n", pkgs],
|
||||
custom_title="UPGRADABLE SYSTEM UPDATES",
|
||||
)
|
||||
if not get_confirm("Continue?"):
|
||||
|
||||
if not get_confirm("Upgrade packages?"):
|
||||
return
|
||||
|
||||
Logger.print_status("Upgrading system packages ...")
|
||||
|
||||
upgrade_system_packages(self.packages)
|
||||
self._fetch_system_package_update_status()
|
||||
except Exception as e:
|
||||
Logger.print_error(f"Error upgrading system packages:\n{e}")
|
||||
raise
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -22,6 +22,7 @@ from utils.instance_utils import get_instances
|
||||
class BackupService:
|
||||
def __init__(self):
|
||||
self._backup_root = Path.home().joinpath("kiauh_backups")
|
||||
self._timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")
|
||||
|
||||
@property
|
||||
def backup_root(self) -> Path:
|
||||
@@ -29,7 +30,7 @@ class BackupService:
|
||||
|
||||
@property
|
||||
def timestamp(self) -> str:
|
||||
return datetime.now().strftime("%Y%m%d-%H%M%S")
|
||||
return self._timestamp
|
||||
|
||||
################################################
|
||||
# GENERIC BACKUP METHODS
|
||||
@@ -68,10 +69,15 @@ class BackupService:
|
||||
backup_dir = self._backup_root.joinpath(target_path)
|
||||
|
||||
backup_dir.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copy2(source_path, backup_dir.joinpath(filename))
|
||||
target_path = backup_dir.joinpath(filename)
|
||||
if target_path.exists():
|
||||
Logger.print_info(f"File '{target_path}' already exists. Skipping ...")
|
||||
return True
|
||||
|
||||
shutil.copy2(source_path, target_path)
|
||||
|
||||
Logger.print_ok(
|
||||
f"Successfully backed up '{source_path}' to '{backup_dir}'"
|
||||
f"Successfully backed up '{source_path}' to '{target_path}'"
|
||||
)
|
||||
return True
|
||||
|
||||
@@ -111,14 +117,25 @@ class BackupService:
|
||||
|
||||
if backup_path.exists():
|
||||
Logger.print_info(f"Reusing existing backup directory '{backup_path}'")
|
||||
|
||||
shutil.copytree(
|
||||
source_path,
|
||||
backup_path,
|
||||
dirs_exist_ok=True,
|
||||
symlinks=True,
|
||||
ignore_dangling_symlinks=True,
|
||||
)
|
||||
for item in source_path.rglob("*"):
|
||||
relative_path = item.relative_to(source_path)
|
||||
target_item = backup_path.joinpath(relative_path)
|
||||
if item.is_file():
|
||||
if not target_item.exists():
|
||||
target_item.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copy2(item, target_item)
|
||||
else:
|
||||
Logger.print_info(f"File '{target_item}' already exists. Skipping...")
|
||||
elif item.is_dir():
|
||||
target_item.mkdir(parents=True, exist_ok=True)
|
||||
else:
|
||||
shutil.copytree(
|
||||
source_path,
|
||||
backup_path,
|
||||
dirs_exist_ok=True,
|
||||
symlinks=True,
|
||||
ignore_dangling_symlinks=True,
|
||||
)
|
||||
|
||||
Logger.print_ok(
|
||||
f"Successfully backed up '{source_path}' to '{backup_path}'"
|
||||
@@ -134,27 +151,29 @@ class BackupService:
|
||||
################################################
|
||||
|
||||
def backup_printer_cfg(self):
|
||||
"""Backup printer.cfg files of all Klipper instances.
|
||||
Files are backed up to:
|
||||
{backup_root}/{instance_data_dir_name}/printer_{timestamp}.cfg
|
||||
"""
|
||||
klipper_instances: List[Klipper] = get_instances(Klipper)
|
||||
for instance in klipper_instances:
|
||||
target_path: Path = self._backup_root.joinpath(
|
||||
instance.data_dir.name, f"config_{self.timestamp}"
|
||||
)
|
||||
target_path: Path = self._backup_root.joinpath(instance.data_dir.name)
|
||||
self.backup_file(
|
||||
source_path=instance.cfg_file,
|
||||
target_path=target_path,
|
||||
target_name=instance.cfg_file.name,
|
||||
)
|
||||
|
||||
def backup_moonraker_conf(self):
|
||||
"""Backup moonraker.conf files of all Moonraker instances.
|
||||
Files are backed up to:
|
||||
{backup_root}/{instance_data_dir_name}/moonraker_{timestamp}.conf
|
||||
"""
|
||||
moonraker_instances: List[Moonraker] = get_instances(Moonraker)
|
||||
for instance in moonraker_instances:
|
||||
target_path: Path = self._backup_root.joinpath(
|
||||
instance.data_dir.name, f"config_{self.timestamp}"
|
||||
)
|
||||
target_path: Path = self._backup_root.joinpath(instance.data_dir.name)
|
||||
self.backup_file(
|
||||
source_path=instance.cfg_file,
|
||||
target_path=target_path,
|
||||
target_name=instance.cfg_file.name,
|
||||
)
|
||||
|
||||
def backup_printer_config_dir(self) -> None:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ======================================================================= #
|
||||
# Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com> #
|
||||
# Copyright (C) 2020 - 2026 Dominik Willner <th33xitus@gmail.com> #
|
||||
# #
|
||||
# This file is part of KIAUH - Klipper Installation And Update Helper #
|
||||
# https://github.com/dw-0/kiauh #
|
||||
@@ -16,7 +16,7 @@ from components.klipper import KLIPPER_REPO_URL
|
||||
from components.moonraker import MOONRAKER_REPO_URL
|
||||
from core.logger import DialogType, Logger
|
||||
from core.services.backup_service import BackupService
|
||||
from core.submodules.simple_config_parser.src.simple_config_parser.simple_config_parser import (
|
||||
from core.simple_config_parser.simple_config_parser import (
|
||||
SimpleConfigParser,
|
||||
)
|
||||
from utils.input_utils import get_confirm
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2
-2
@@ -10,8 +10,8 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from src.simple_config_parser.simple_config_parser import SimpleConfigParser
|
||||
from tests.utils import load_testdata_from_file
|
||||
from core.simple_config_parser.simple_config_parser import SimpleConfigParser
|
||||
from core.simple_config_parser.tests.utils import load_testdata_from_file
|
||||
|
||||
BASE_DIR = Path(__file__).parent.joinpath("test_data")
|
||||
MATCHING_TEST_DATA_PATH = BASE_DIR.joinpath("matching_data.txt")
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2
-2
@@ -10,8 +10,8 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from src.simple_config_parser.simple_config_parser import SimpleConfigParser
|
||||
from tests.utils import load_testdata_from_file
|
||||
from core.simple_config_parser.simple_config_parser import SimpleConfigParser
|
||||
from core.simple_config_parser.tests.utils import load_testdata_from_file
|
||||
|
||||
BASE_DIR = Path(__file__).parent.joinpath("test_data")
|
||||
MATCHING_TEST_DATA_PATH = BASE_DIR.joinpath("matching_data.txt")
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2
-2
@@ -10,8 +10,8 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from src.simple_config_parser.simple_config_parser import SimpleConfigParser
|
||||
from tests.utils import load_testdata_from_file
|
||||
from core.simple_config_parser.simple_config_parser import SimpleConfigParser
|
||||
from core.simple_config_parser.tests.utils import load_testdata_from_file
|
||||
|
||||
BASE_DIR = Path(__file__).parent.joinpath("test_data")
|
||||
MATCHING_TEST_DATA_PATH = BASE_DIR.joinpath("matching_data.txt")
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2
-2
@@ -10,8 +10,8 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from src.simple_config_parser.simple_config_parser import SimpleConfigParser
|
||||
from tests.utils import load_testdata_from_file
|
||||
from core.simple_config_parser.simple_config_parser import SimpleConfigParser
|
||||
from core.simple_config_parser.tests.utils import load_testdata_from_file
|
||||
|
||||
BASE_DIR = Path(__file__).parent.joinpath("test_data")
|
||||
MATCHING_TEST_DATA_PATH = BASE_DIR.joinpath("matching_data.txt")
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 188 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user