machineconfig 1.97__py3-none-any.whl → 2.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of machineconfig might be problematic. Click here for more details.

Files changed (268) hide show
  1. machineconfig/cluster/cloud_manager.py +22 -29
  2. machineconfig/cluster/data_transfer.py +2 -3
  3. machineconfig/cluster/distribute.py +0 -2
  4. machineconfig/cluster/file_manager.py +4 -5
  5. machineconfig/cluster/job_params.py +1 -4
  6. machineconfig/cluster/loader_runner.py +8 -11
  7. machineconfig/cluster/remote_machine.py +4 -5
  8. machineconfig/cluster/script_execution.py +2 -2
  9. machineconfig/cluster/script_notify_upon_completion.py +0 -1
  10. machineconfig/cluster/sessions_managers/archive/create_zellij_template.py +4 -6
  11. machineconfig/cluster/sessions_managers/archive/session_managers.py +0 -1
  12. machineconfig/cluster/sessions_managers/enhanced_command_runner.py +35 -75
  13. machineconfig/cluster/sessions_managers/wt_local.py +113 -185
  14. machineconfig/cluster/sessions_managers/wt_local_manager.py +127 -197
  15. machineconfig/cluster/sessions_managers/wt_remote.py +60 -67
  16. machineconfig/cluster/sessions_managers/wt_remote_manager.py +110 -149
  17. machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +61 -64
  18. machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +72 -172
  19. machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +27 -60
  20. machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +58 -137
  21. machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +46 -74
  22. machineconfig/cluster/sessions_managers/zellij_local.py +91 -147
  23. machineconfig/cluster/sessions_managers/zellij_local_manager.py +165 -190
  24. machineconfig/cluster/sessions_managers/zellij_remote.py +51 -58
  25. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +40 -46
  26. machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +19 -17
  27. machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +30 -31
  28. machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +64 -134
  29. machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +7 -11
  30. machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +27 -55
  31. machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +14 -13
  32. machineconfig/cluster/templates/cli_click.py +0 -1
  33. machineconfig/cluster/templates/cli_gooey.py +0 -2
  34. machineconfig/cluster/templates/cli_trogon.py +0 -1
  35. machineconfig/cluster/templates/run_cloud.py +0 -1
  36. machineconfig/cluster/templates/run_cluster.py +0 -1
  37. machineconfig/cluster/templates/run_remote.py +0 -1
  38. machineconfig/cluster/templates/utils.py +27 -11
  39. machineconfig/jobs/__pycache__/__init__.cpython-313.pyc +0 -0
  40. machineconfig/jobs/linux/msc/cli_agents.sh +16 -0
  41. machineconfig/jobs/python/check_installations.py +9 -9
  42. machineconfig/jobs/python/create_bootable_media.py +0 -2
  43. machineconfig/jobs/python/python_cargo_build_share.py +2 -2
  44. machineconfig/jobs/python/python_ve_symlink.py +9 -11
  45. machineconfig/jobs/python/tasks.py +0 -1
  46. machineconfig/jobs/python/vscode/api.py +5 -5
  47. machineconfig/jobs/python/vscode/link_ve.py +20 -21
  48. machineconfig/jobs/python/vscode/select_interpreter.py +28 -29
  49. machineconfig/jobs/python/vscode/sync_code.py +14 -18
  50. machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-313.pyc +0 -0
  51. machineconfig/jobs/python_custom_installers/archive/ngrok.py +15 -15
  52. machineconfig/jobs/python_custom_installers/dev/aider.py +10 -18
  53. machineconfig/jobs/python_custom_installers/dev/alacritty.py +12 -21
  54. machineconfig/jobs/python_custom_installers/dev/brave.py +13 -22
  55. machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +13 -20
  56. machineconfig/jobs/python_custom_installers/dev/code.py +17 -24
  57. machineconfig/jobs/python_custom_installers/dev/cursor.py +10 -21
  58. machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +12 -11
  59. machineconfig/jobs/python_custom_installers/dev/espanso.py +19 -23
  60. machineconfig/jobs/python_custom_installers/dev/goes.py +9 -16
  61. machineconfig/jobs/python_custom_installers/dev/lvim.py +13 -21
  62. machineconfig/jobs/python_custom_installers/dev/nerdfont.py +15 -22
  63. machineconfig/jobs/python_custom_installers/dev/redis.py +15 -23
  64. machineconfig/jobs/python_custom_installers/dev/wezterm.py +15 -22
  65. machineconfig/jobs/python_custom_installers/dev/winget.py +32 -50
  66. machineconfig/jobs/python_custom_installers/docker.py +15 -24
  67. machineconfig/jobs/python_custom_installers/gh.py +18 -26
  68. machineconfig/jobs/python_custom_installers/hx.py +33 -17
  69. machineconfig/jobs/python_custom_installers/warp-cli.py +15 -23
  70. machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-313.pyc +0 -0
  71. machineconfig/jobs/python_generic_installers/config.json +412 -389
  72. machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-313.pyc +0 -0
  73. machineconfig/jobs/python_windows_installers/dev/config.json +1 -1
  74. machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +1 -1
  75. machineconfig/jobs/windows/msc/cli_agents.bat +0 -0
  76. machineconfig/jobs/windows/msc/cli_agents.ps1 +0 -0
  77. machineconfig/jobs/windows/start_terminal.ps1 +1 -1
  78. machineconfig/logger.py +50 -0
  79. machineconfig/profile/create.py +50 -36
  80. machineconfig/profile/create_hardlinks.py +33 -26
  81. machineconfig/profile/shell.py +87 -60
  82. machineconfig/scripts/__pycache__/__init__.cpython-313.pyc +0 -0
  83. machineconfig/scripts/cloud/init.sh +2 -2
  84. machineconfig/scripts/linux/checkout_versions +1 -1
  85. machineconfig/scripts/linux/choose_wezterm_theme +1 -1
  86. machineconfig/scripts/linux/cloud_copy +1 -1
  87. machineconfig/scripts/linux/cloud_manager +1 -1
  88. machineconfig/scripts/linux/cloud_mount +1 -1
  89. machineconfig/scripts/linux/cloud_repo_sync +1 -1
  90. machineconfig/scripts/linux/cloud_sync +1 -1
  91. machineconfig/scripts/linux/croshell +1 -1
  92. machineconfig/scripts/linux/devops +3 -5
  93. machineconfig/scripts/linux/fire +2 -1
  94. machineconfig/scripts/linux/fire_agents +3 -3
  95. machineconfig/scripts/linux/ftpx +1 -1
  96. machineconfig/scripts/linux/gh_models +1 -1
  97. machineconfig/scripts/linux/kill_process +1 -1
  98. machineconfig/scripts/linux/mcinit +2 -2
  99. machineconfig/scripts/linux/repos +1 -1
  100. machineconfig/scripts/linux/scheduler +1 -1
  101. machineconfig/scripts/linux/start_slidev +1 -1
  102. machineconfig/scripts/linux/start_terminals +1 -1
  103. machineconfig/scripts/linux/url2md +1 -1
  104. machineconfig/scripts/linux/warp-cli.sh +122 -0
  105. machineconfig/scripts/linux/wifi_conn +1 -1
  106. machineconfig/scripts/python/__pycache__/__init__.cpython-313.pyc +0 -0
  107. machineconfig/scripts/python/__pycache__/croshell.cpython-313.pyc +0 -0
  108. machineconfig/scripts/python/__pycache__/devops.cpython-313.pyc +0 -0
  109. machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-313.pyc +0 -0
  110. machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-313.pyc +0 -0
  111. machineconfig/scripts/python/__pycache__/fire_jobs.cpython-313.pyc +0 -0
  112. machineconfig/scripts/python/ai/__init__.py +0 -0
  113. machineconfig/scripts/python/ai/__pycache__/__init__.cpython-313.pyc +0 -0
  114. machineconfig/scripts/python/ai/__pycache__/generate_files.cpython-313.pyc +0 -0
  115. machineconfig/scripts/python/ai/__pycache__/mcinit.cpython-313.pyc +0 -0
  116. machineconfig/scripts/python/ai/chatmodes/Thinking-Beast-Mode.chatmode.md +337 -0
  117. machineconfig/scripts/python/ai/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md +644 -0
  118. machineconfig/scripts/python/ai/chatmodes/deepResearch.chatmode.md +81 -0
  119. machineconfig/scripts/python/ai/configs/.gemini/settings.json +81 -0
  120. machineconfig/scripts/python/ai/generate_files.py +84 -0
  121. machineconfig/scripts/python/ai/instructions/python/dev.instructions.md +45 -0
  122. machineconfig/scripts/python/ai/mcinit.py +107 -0
  123. machineconfig/scripts/python/ai/prompts/allLintersAndTypeCheckers.prompt.md +5 -0
  124. machineconfig/scripts/python/ai/prompts/research-report-skeleton.prompt.md +38 -0
  125. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +52 -0
  126. machineconfig/scripts/python/archive/tmate_conn.py +5 -5
  127. machineconfig/scripts/python/archive/tmate_start.py +3 -3
  128. machineconfig/scripts/python/choose_wezterm_theme.py +2 -2
  129. machineconfig/scripts/python/cloud_copy.py +20 -19
  130. machineconfig/scripts/python/cloud_mount.py +10 -8
  131. machineconfig/scripts/python/cloud_repo_sync.py +15 -15
  132. machineconfig/scripts/python/cloud_sync.py +1 -1
  133. machineconfig/scripts/python/croshell.py +18 -16
  134. machineconfig/scripts/python/devops.py +6 -6
  135. machineconfig/scripts/python/devops_add_identity.py +9 -7
  136. machineconfig/scripts/python/devops_add_ssh_key.py +19 -19
  137. machineconfig/scripts/python/devops_backup_retrieve.py +14 -14
  138. machineconfig/scripts/python/devops_devapps_install.py +3 -3
  139. machineconfig/scripts/python/devops_update_repos.py +141 -53
  140. machineconfig/scripts/python/dotfile.py +3 -3
  141. machineconfig/scripts/python/fire_agents.py +202 -41
  142. machineconfig/scripts/python/fire_jobs.py +20 -21
  143. machineconfig/scripts/python/ftpx.py +4 -3
  144. machineconfig/scripts/python/gh_models.py +94 -94
  145. machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-313.pyc +0 -0
  146. machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-313.pyc +0 -0
  147. machineconfig/scripts/python/helpers/cloud_helpers.py +3 -3
  148. machineconfig/scripts/python/helpers/helpers2.py +3 -3
  149. machineconfig/scripts/python/helpers/helpers4.py +8 -7
  150. machineconfig/scripts/python/helpers/helpers5.py +7 -7
  151. machineconfig/scripts/python/helpers/repo_sync_helpers.py +2 -2
  152. machineconfig/scripts/python/mount_nfs.py +4 -3
  153. machineconfig/scripts/python/mount_nw_drive.py +4 -4
  154. machineconfig/scripts/python/mount_ssh.py +4 -3
  155. machineconfig/scripts/python/repos.py +9 -9
  156. machineconfig/scripts/python/scheduler.py +1 -1
  157. machineconfig/scripts/python/start_slidev.py +9 -8
  158. machineconfig/scripts/python/start_terminals.py +1 -1
  159. machineconfig/scripts/python/viewer.py +40 -40
  160. machineconfig/scripts/python/wifi_conn.py +65 -66
  161. machineconfig/scripts/python/wsl_windows_transfer.py +2 -2
  162. machineconfig/scripts/windows/checkout_version.ps1 +1 -3
  163. machineconfig/scripts/windows/choose_wezterm_theme.ps1 +1 -3
  164. machineconfig/scripts/windows/cloud_copy.ps1 +2 -6
  165. machineconfig/scripts/windows/cloud_manager.ps1 +1 -1
  166. machineconfig/scripts/windows/cloud_repo_sync.ps1 +1 -2
  167. machineconfig/scripts/windows/cloud_sync.ps1 +2 -2
  168. machineconfig/scripts/windows/croshell.ps1 +2 -2
  169. machineconfig/scripts/windows/devops.ps1 +1 -4
  170. machineconfig/scripts/windows/dotfile.ps1 +1 -3
  171. machineconfig/scripts/windows/fire.ps1 +1 -1
  172. machineconfig/scripts/windows/ftpx.ps1 +2 -2
  173. machineconfig/scripts/windows/gpt.ps1 +1 -1
  174. machineconfig/scripts/windows/kill_process.ps1 +1 -2
  175. machineconfig/scripts/windows/mcinit.ps1 +2 -2
  176. machineconfig/scripts/windows/mount_nfs.ps1 +1 -1
  177. machineconfig/scripts/windows/mount_ssh.ps1 +1 -1
  178. machineconfig/scripts/windows/pomodoro.ps1 +1 -1
  179. machineconfig/scripts/windows/py2exe.ps1 +1 -3
  180. machineconfig/scripts/windows/repos.ps1 +1 -1
  181. machineconfig/scripts/windows/scheduler.ps1 +1 -1
  182. machineconfig/scripts/windows/snapshot.ps1 +2 -2
  183. machineconfig/scripts/windows/start_slidev.ps1 +1 -1
  184. machineconfig/scripts/windows/start_terminals.ps1 +1 -1
  185. machineconfig/scripts/windows/wifi_conn.ps1 +1 -1
  186. machineconfig/scripts/windows/wsl_windows_transfer.ps1 +1 -3
  187. machineconfig/settings/lf/linux/lfrc +1 -1
  188. machineconfig/settings/linters/.ruff.toml +2 -2
  189. machineconfig/settings/linters/.ruff_cache/.gitignore +2 -0
  190. machineconfig/settings/linters/.ruff_cache/CACHEDIR.TAG +1 -0
  191. machineconfig/settings/lvim/windows/archive/config_additional.lua +1 -1
  192. machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +71 -71
  193. machineconfig/settings/shells/wt/settings.json +8 -8
  194. machineconfig/settings/svim/linux/init.toml +1 -1
  195. machineconfig/settings/svim/windows/init.toml +1 -1
  196. machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -54
  197. machineconfig/setup_linux/web_shortcuts/interactive.sh +6 -6
  198. machineconfig/setup_linux/web_shortcuts/tmp.sh +2 -0
  199. machineconfig/setup_windows/web_shortcuts/all.ps1 +2 -2
  200. machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +1 -1
  201. machineconfig/setup_windows/web_shortcuts/croshell.ps1 +1 -1
  202. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +5 -5
  203. machineconfig/setup_windows/wt_and_pwsh/install_fonts.ps1 +51 -15
  204. machineconfig/setup_windows/wt_and_pwsh/set_pwsh_theme.py +75 -18
  205. machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +52 -42
  206. machineconfig/utils/ai/browser_user_wrapper.py +5 -5
  207. machineconfig/utils/ai/generate_file_checklist.py +19 -22
  208. machineconfig/utils/ai/url2md.py +5 -3
  209. machineconfig/utils/cloud/onedrive/setup_oauth.py +5 -4
  210. machineconfig/utils/cloud/onedrive/transaction.py +192 -227
  211. machineconfig/utils/code.py +71 -43
  212. machineconfig/utils/installer.py +77 -85
  213. machineconfig/utils/installer_utils/installer_abc.py +29 -17
  214. machineconfig/utils/installer_utils/installer_class.py +188 -83
  215. machineconfig/utils/io_save.py +3 -15
  216. machineconfig/utils/links.py +22 -11
  217. machineconfig/utils/notifications.py +197 -0
  218. machineconfig/utils/options.py +38 -25
  219. machineconfig/utils/path.py +18 -6
  220. machineconfig/utils/path_reduced.py +637 -316
  221. machineconfig/utils/procs.py +69 -63
  222. machineconfig/utils/scheduling.py +11 -13
  223. machineconfig/utils/ssh.py +351 -0
  224. machineconfig/utils/terminal.py +225 -0
  225. machineconfig/utils/utils.py +13 -12
  226. machineconfig/utils/utils2.py +43 -10
  227. machineconfig/utils/utils5.py +242 -46
  228. machineconfig/utils/ve.py +11 -6
  229. {machineconfig-1.97.dist-info → machineconfig-2.1.dist-info}/METADATA +15 -9
  230. {machineconfig-1.97.dist-info → machineconfig-2.1.dist-info}/RECORD +232 -235
  231. machineconfig/cluster/self_ssh.py +0 -57
  232. machineconfig/jobs/__pycache__/__init__.cpython-311.pyc +0 -0
  233. machineconfig/jobs/python/__pycache__/__init__.cpython-311.pyc +0 -0
  234. machineconfig/jobs/python/archive/python_tools.txt +0 -12
  235. machineconfig/jobs/python/vscode/__pycache__/select_interpreter.cpython-311.pyc +0 -0
  236. machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  237. machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  238. machineconfig/jobs/python_generic_installers/update.py +0 -3
  239. machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  240. machineconfig/profile/__pycache__/__init__.cpython-311.pyc +0 -0
  241. machineconfig/profile/__pycache__/create.cpython-311.pyc +0 -0
  242. machineconfig/profile/__pycache__/shell.cpython-311.pyc +0 -0
  243. machineconfig/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  244. machineconfig/scripts/linux/activate_ve +0 -87
  245. machineconfig/scripts/python/__pycache__/__init__.cpython-311.pyc +0 -0
  246. machineconfig/scripts/python/__pycache__/cloud_copy.cpython-311.pyc +0 -0
  247. machineconfig/scripts/python/__pycache__/cloud_mount.cpython-311.pyc +0 -0
  248. machineconfig/scripts/python/__pycache__/cloud_sync.cpython-311.pyc +0 -0
  249. machineconfig/scripts/python/__pycache__/croshell.cpython-311.pyc +0 -0
  250. machineconfig/scripts/python/__pycache__/devops.cpython-311.pyc +0 -0
  251. machineconfig/scripts/python/__pycache__/devops_backup_retrieve.cpython-311.pyc +0 -0
  252. machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-311.pyc +0 -0
  253. machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-311.pyc +0 -0
  254. machineconfig/scripts/python/__pycache__/fire_agents.cpython-311.pyc +0 -0
  255. machineconfig/scripts/python/__pycache__/fire_jobs.cpython-311.pyc +0 -0
  256. machineconfig/scripts/python/__pycache__/get_zellij_cmd.cpython-311.pyc +0 -0
  257. machineconfig/scripts/python/__pycache__/repos.cpython-311.pyc +0 -0
  258. machineconfig/scripts/python/ai/__pycache__/init.cpython-311.pyc +0 -0
  259. machineconfig/scripts/python/ai/init.py +0 -56
  260. machineconfig/scripts/python/ai/rules/python/dev.md +0 -31
  261. machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-311.pyc +0 -0
  262. machineconfig/scripts/python/helpers/__pycache__/cloud_helpers.cpython-311.pyc +0 -0
  263. machineconfig/scripts/python/helpers/__pycache__/helpers2.cpython-311.pyc +0 -0
  264. machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-311.pyc +0 -0
  265. machineconfig/scripts/python/helpers/__pycache__/repo_sync_helpers.cpython-311.pyc +0 -0
  266. machineconfig/scripts/windows/activate_ve.ps1 +0 -54
  267. {machineconfig-1.97.dist-info → machineconfig-2.1.dist-info}/WHEEL +0 -0
  268. {machineconfig-1.97.dist-info → machineconfig-2.1.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,6 @@
1
- """lvim
2
- """
1
+ """lvim"""
3
2
 
4
- from crocodile.meta import Terminal
3
+ from machineconfig.utils.terminal import Terminal
5
4
  import subprocess
6
5
  import platform
7
6
  from typing import Optional
@@ -11,25 +10,18 @@ _ = Terminal, subprocess
11
10
  # as per https://www.lunarvim.org/docs/installation
12
11
 
13
12
 
14
- config_dict = {
15
- "repo_url": "CUSTOM",
16
- "doc": "Terminal text editor based on neovim.",
17
- "filename_template_windows_amd_64": "",
18
- "filename_template_linux_amd_64": "",
19
- "strip_v": False,
20
- "exe_name": "lvim"
21
- }
13
+ config_dict = {"repo_url": "CUSTOM", "doc": "Terminal text editor based on neovim.", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "lvim"}
22
14
 
23
15
 
24
16
  def main(version: Optional[str]):
25
17
  print(f"""
26
- {'=' * 150}
18
+ {"=" * 150}
27
19
  🌙 LUNARVIM INSTALLER | Setting up Neovim-based IDE
28
- 🔄 Version: {'latest' if version is None else version}
20
+ 🔄 Version: {"latest" if version is None else version}
29
21
  📚 Branch: release-1.4/neovim-0.9
30
- {'=' * 150}
22
+ {"=" * 150}
31
23
  """)
32
-
24
+
33
25
  _ = version
34
26
  if platform.system() == "Windows":
35
27
  print("đŸĒŸ Installing LunarVim on Windows...")
@@ -49,25 +41,25 @@ LV_BRANCH='release-1.4/neovim-0.9' bash <(curl -s https://raw.githubusercontent.
49
41
  else:
50
42
  error_msg = f"Unsupported platform: {platform.system()}"
51
43
  print(f"""
52
- {'âš ī¸' * 20}
44
+ {"âš ī¸" * 20}
53
45
  ❌ ERROR | {error_msg}
54
- {'âš ī¸' * 20}
46
+ {"âš ī¸" * 20}
55
47
  """)
56
48
  raise NotImplementedError(error_msg)
57
-
49
+
58
50
  print(f"""
59
- {'=' * 150}
51
+ {"=" * 150}
60
52
  â„šī¸ INFO | LunarVim features:
61
53
  📝 IDE-like experience for Neovim
62
54
  🔌 Built-in plugin management
63
55
  đŸ› ī¸ LSP configuration out of the box
64
56
  🔍 Powerful fuzzy finding
65
57
  âš™ī¸ Simple and unified configuration
66
- {'=' * 150}
58
+ {"=" * 150}
67
59
 
68
60
  âš ī¸ NOTE: The installer will prompt for user input during installation.
69
61
  """)
70
-
62
+
71
63
  # _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
72
64
  # run script here as it requires user input
73
65
  return program
@@ -1,63 +1,56 @@
1
- """nerfont installer
2
- """
1
+ """nerfont installer"""
3
2
 
4
3
  import platform
5
4
  from typing import Optional
6
5
 
7
6
 
8
- config_dict = {
9
- "repo_url": "CUSTOM",
10
- "doc": "lightweight containerization",
11
- "filename_template_windows_amd_64": "",
12
- "filename_template_linux_amd_64": "",
13
- "strip_v": False,
14
- "exe_name": "nerdfont"
15
- }
7
+ config_dict = {"repo_url": "CUSTOM", "doc": "lightweight containerization", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "nerdfont"}
16
8
 
17
9
 
18
10
  def main(version: Optional[str]):
19
11
  print(f"""
20
- {'=' * 150}
12
+ {"=" * 150}
21
13
  🔤 NERD FONTS INSTALLER | Installing programming fonts with icons
22
14
  đŸ’ģ Platform: {platform.system()}
23
- 🔄 Version: {'latest' if version is None else version}
24
- {'=' * 150}
15
+ 🔄 Version: {"latest" if version is None else version}
16
+ {"=" * 150}
25
17
  """)
26
-
18
+
27
19
  _ = version
28
20
  if platform.system() == "Windows":
29
21
  error_msg = "Nerd Fonts installation not supported on Windows through this installer"
30
22
  print(f"""
31
- {'âš ī¸' * 20}
23
+ {"âš ī¸" * 20}
32
24
  ❌ ERROR | {error_msg}
33
25
  💡 TIP: Please download and install manually from https://www.nerdfonts.com
34
- {'âš ī¸' * 20}
26
+ {"âš ī¸" * 20}
35
27
  """)
36
28
  raise NotImplementedError(error_msg)
37
29
  elif platform.system() in ["Linux", "Darwin"]:
38
30
  print("🐧 Installing Nerd Fonts on Linux using installation script...")
39
31
  import machineconfig.jobs.python_custom_installers as module
40
32
  from pathlib import Path
33
+
41
34
  program = Path(module.__file__).parent.joinpath("scripts/linux/nerdfont.sh").read_text(encoding="utf-8")
42
35
  else:
43
36
  error_msg = f"Unsupported platform: {platform.system()}"
44
37
  print(f"""
45
- {'âš ī¸' * 20}
38
+ {"âš ī¸" * 20}
46
39
  ❌ ERROR | {error_msg}
47
- {'âš ī¸' * 20}
40
+ {"âš ī¸" * 20}
48
41
  """)
49
42
  raise NotImplementedError(error_msg)
50
-
43
+
51
44
  print(f"""
52
- {'=' * 150}
45
+ {"=" * 150}
53
46
  â„šī¸ INFO | Nerd Fonts features:
54
47
  🎨 Programming fonts patched with icons
55
48
  đŸ”Ŗ Includes icons from popular sets (FontAwesome, Devicons, etc.)
56
49
  đŸ–Ĩī¸ Perfect for terminals and coding environments
57
50
  🧰 Works with many terminal applications and editors
58
- {'=' * 150}
51
+ {"=" * 150}
59
52
  """)
60
-
53
+
61
54
  # _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
62
55
  # run script here as it requires user input
63
56
  return program
@@ -1,37 +1,29 @@
1
- """nedis installer
2
- """
1
+ """nedis installer"""
3
2
 
4
3
  import platform
5
4
  from typing import Optional
6
5
 
7
6
 
8
- config_dict = {
9
- "repo_url": "CUSTOM",
10
- "doc": "submillisecond fast key-value db",
11
- "filename_template_windows_amd_64": "",
12
- "filename_template_linux_amd_64": "",
13
- "strip_v": False,
14
- "exe_name": "redis"
15
- }
7
+ config_dict = {"repo_url": "CUSTOM", "doc": "submillisecond fast key-value db", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "redis"}
16
8
 
17
9
 
18
10
  def main(version: Optional[str]):
19
11
  print(f"""
20
- {'=' * 150}
12
+ {"=" * 150}
21
13
  đŸ—ƒī¸ REDIS INSTALLER | Setting up in-memory database
22
14
  đŸ’ģ Platform: {platform.system()}
23
- 🔄 Version: {'latest' if version is None else version}
24
- {'=' * 150}
15
+ 🔄 Version: {"latest" if version is None else version}
16
+ {"=" * 150}
25
17
  """)
26
-
18
+
27
19
  _ = version
28
20
  if platform.system() == "Windows":
29
21
  error_msg = "Redis installation not supported on Windows through this installer"
30
22
  print(f"""
31
- {'âš ī¸' * 20}
23
+ {"âš ī¸" * 20}
32
24
  ❌ ERROR | {error_msg}
33
25
  💡 TIP: Consider using WSL2 or Docker to run Redis on Windows
34
- {'âš ī¸' * 20}
26
+ {"âš ī¸" * 20}
35
27
  """)
36
28
  raise NotImplementedError(error_msg)
37
29
  elif platform.system() in ["Linux", "Darwin"]:
@@ -39,6 +31,7 @@ def main(version: Optional[str]):
39
31
  print(f"🐧 Installing Redis on {system_name} using installation script...")
40
32
  import machineconfig.jobs.python_custom_installers as module
41
33
  from pathlib import Path
34
+
42
35
  if platform.system() == "Linux":
43
36
  program = Path(module.__file__).parent.joinpath("scripts/linux/redis.sh").read_text(encoding="utf-8")
44
37
  else: # Darwin/macOS
@@ -46,23 +39,23 @@ def main(version: Optional[str]):
46
39
  else:
47
40
  error_msg = f"Unsupported platform: {platform.system()}"
48
41
  print(f"""
49
- {'âš ī¸' * 20}
42
+ {"âš ī¸" * 20}
50
43
  ❌ ERROR | {error_msg}
51
- {'âš ī¸' * 20}
44
+ {"âš ī¸" * 20}
52
45
  """)
53
46
  raise NotImplementedError(error_msg)
54
-
47
+
55
48
  print(f"""
56
- {'=' * 150}
49
+ {"=" * 150}
57
50
  â„šī¸ INFO | Redis features:
58
51
  ⚡ In-memory data structure store
59
52
  🔑 Key-value database with optional persistence
60
53
  🚀 Sub-millisecond response times
61
54
  💾 Supports strings, lists, sets, sorted sets, hashes
62
55
  🔄 Built-in replication and Lua scripting
63
- {'=' * 150}
56
+ {"=" * 150}
64
57
  """)
65
-
58
+
66
59
  # _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
67
60
  # run script here as it requires user input
68
61
  return program
@@ -70,4 +63,3 @@ def main(version: Optional[str]):
70
63
 
71
64
  if __name__ == "__main__":
72
65
  pass
73
-
@@ -1,37 +1,29 @@
1
- """wezterm installer
2
- """
1
+ """wezterm installer"""
3
2
 
4
3
  import platform
5
4
  from typing import Optional
6
5
 
7
6
 
8
- config_dict = {
9
- "repo_url": "CUSTOM",
10
- "doc": "cli for wezterm",
11
- "filename_template_windows_amd_64": "",
12
- "filename_template_linux_amd_64": "",
13
- "strip_v": False,
14
- "exe_name": "wezterm"
15
- }
7
+ config_dict = {"repo_url": "CUSTOM", "doc": "cli for wezterm", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "wezterm"}
16
8
 
17
9
 
18
10
  def main(version: Optional[str]):
19
11
  print(f"""
20
- {'═' * 150}
12
+ {"═" * 150}
21
13
  đŸ–Ĩī¸ WEZTERM INSTALLER | Modern, GPU-accelerated terminal emulator
22
14
  đŸ’ģ Platform: {platform.system()}
23
- 🔄 Version: {'latest' if version is None else version}
24
- {'═' * 150}
15
+ 🔄 Version: {"latest" if version is None else version}
16
+ {"═" * 150}
25
17
  """)
26
-
18
+
27
19
  _ = version
28
20
  if platform.system() == "Windows":
29
21
  error_msg = "WezTerm installation not supported on Windows through this installer"
30
22
  print(f"""
31
- {'âš ī¸' * 20}
23
+ {"âš ī¸" * 20}
32
24
  ❌ ERROR | {error_msg}
33
25
  💡 TIP: Please download and install manually from the WezTerm website
34
- {'âš ī¸' * 20}
26
+ {"âš ī¸" * 20}
35
27
  """)
36
28
  raise NotImplementedError(error_msg)
37
29
  elif platform.system() in ["Linux", "Darwin"]:
@@ -41,6 +33,7 @@ def main(version: Optional[str]):
41
33
  """)
42
34
  import machineconfig.jobs.python_custom_installers as module
43
35
  from pathlib import Path
36
+
44
37
  if platform.system() == "Linux":
45
38
  program = Path(module.__file__).parent.joinpath("scripts/linux/wezterm.sh").read_text(encoding="utf-8")
46
39
  else: # Darwin/macOS
@@ -48,14 +41,14 @@ def main(version: Optional[str]):
48
41
  else:
49
42
  error_msg = f"Unsupported platform: {platform.system()}"
50
43
  print(f"""
51
- {'âš ī¸' * 20}
44
+ {"âš ī¸" * 20}
52
45
  ❌ ERROR | {error_msg}
53
- {'âš ī¸' * 20}
46
+ {"âš ī¸" * 20}
54
47
  """)
55
48
  raise NotImplementedError(error_msg)
56
-
49
+
57
50
  print(f"""
58
- {'═' * 150}
51
+ {"═" * 150}
59
52
  â„šī¸ INFO | WezTerm Features:
60
53
  ⚡ GPU-accelerated rendering
61
54
  🎨 Full color emoji support
@@ -63,9 +56,9 @@ def main(version: Optional[str]):
63
56
  âš™ī¸ Lua configuration
64
57
  đŸ“Ļ Cross-platform support
65
58
  🔌 Plugin system
66
- {'═' * 150}
59
+ {"═" * 150}
67
60
  """)
68
-
61
+
69
62
  # _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
70
63
  # run script here as it requires user input
71
64
  return program
@@ -5,30 +5,18 @@ from pathlib import Path
5
5
  from typing import Optional
6
6
 
7
7
 
8
- config_dict = {
9
- "repo_url": "CUSTOM",
10
- "doc": "winget installer",
11
- "filename_template_windows_amd_64": "",
12
- "filename_template_linux_amd_64": "",
13
- "strip_v": False,
14
- "exe_name": "winget"
15
- }
8
+ config_dict = {"repo_url": "CUSTOM", "doc": "winget installer", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "winget"}
16
9
 
17
10
 
18
11
  def is_winget_available() -> bool:
19
12
  """
20
13
  Check if winget is available in the system PATH.
21
-
14
+
22
15
  Returns:
23
16
  bool: True if winget is available, False otherwise
24
17
  """
25
18
  try:
26
- result = subprocess.run(
27
- ["winget", "--version"],
28
- capture_output=True,
29
- text=True,
30
- timeout=10
31
- )
19
+ result = subprocess.run(["winget", "--version"], capture_output=True, text=True, timeout=10)
32
20
  return result.returncode == 0
33
21
  except (subprocess.TimeoutExpired, FileNotFoundError, subprocess.SubprocessError):
34
22
  return False
@@ -37,7 +25,7 @@ def is_winget_available() -> bool:
37
25
  def get_latest_winget_release_url() -> Optional[str]:
38
26
  """
39
27
  Get the download URL for the latest winget .msixbundle file from GitHub releases.
40
-
28
+
41
29
  Returns:
42
30
  Optional[str]: URL to the latest .msixbundle file, or None if not found
43
31
  """
@@ -45,17 +33,17 @@ def get_latest_winget_release_url() -> Optional[str]:
45
33
  # Get the latest release information from GitHub API
46
34
  api_url = "https://api.github.com/repos/microsoft/winget-cli/releases/latest"
47
35
  headers = {"Accept": "application/vnd.github.v3+json"}
48
-
36
+
49
37
  response = requests.get(api_url, headers=headers, timeout=30)
50
38
  response.raise_for_status()
51
-
39
+
52
40
  release_data = response.json()
53
-
41
+
54
42
  # Look for .msixbundle file in assets
55
43
  for asset in release_data.get("assets", []):
56
44
  if asset["name"].endswith(".msixbundle"):
57
45
  return asset["browser_download_url"]
58
-
46
+
59
47
  return None
60
48
  except (requests.RequestException, KeyError, ValueError) as e:
61
49
  print(f"Error fetching latest winget release: {e}")
@@ -65,23 +53,23 @@ def get_latest_winget_release_url() -> Optional[str]:
65
53
  def download_file(url: str, destination: Path) -> bool:
66
54
  """
67
55
  Download a file from URL to destination.
68
-
56
+
69
57
  Args:
70
58
  url: URL to download from
71
59
  destination: Path where to save the file
72
-
60
+
73
61
  Returns:
74
62
  bool: True if download successful, False otherwise
75
63
  """
76
64
  try:
77
65
  response = requests.get(url, stream=True, timeout=60)
78
66
  response.raise_for_status()
79
-
80
- with open(destination, 'wb') as f:
67
+
68
+ with open(destination, "wb") as f:
81
69
  for chunk in response.iter_content(chunk_size=8192):
82
70
  if chunk:
83
71
  f.write(chunk)
84
-
72
+
85
73
  return True
86
74
  except (requests.RequestException, IOError) as e:
87
75
  print(f"Error downloading file: {e}")
@@ -91,29 +79,24 @@ def download_file(url: str, destination: Path) -> bool:
91
79
  def install_msix_package(package_path: Path) -> bool:
92
80
  """
93
81
  Install an MSIX package using PowerShell.
94
-
82
+
95
83
  Args:
96
84
  package_path: Path to the .msixbundle file
97
-
85
+
98
86
  Returns:
99
87
  bool: True if installation successful, False otherwise
100
88
  """
101
89
  try:
102
90
  # Use PowerShell to install the MSIX package
103
- powershell_cmd = [
104
- "powershell.exe",
105
- "-ExecutionPolicy", "Bypass",
106
- "-Command",
107
- f"Add-AppxPackage -Path '{package_path}'"
108
- ]
109
-
91
+ powershell_cmd = ["powershell.exe", "-ExecutionPolicy", "Bypass", "-Command", f"Add-AppxPackage -Path '{package_path}'"]
92
+
110
93
  result = subprocess.run(
111
94
  powershell_cmd,
112
95
  capture_output=True,
113
96
  text=True,
114
- timeout=300 # 5 minutes timeout
97
+ timeout=300, # 5 minutes timeout
115
98
  )
116
-
99
+
117
100
  if result.returncode == 0:
118
101
  print("Winget installed successfully!")
119
102
  return True
@@ -121,7 +104,7 @@ def install_msix_package(package_path: Path) -> bool:
121
104
  print(f"Installation failed with return code {result.returncode}")
122
105
  print(f"Error output: {result.stderr}")
123
106
  return False
124
-
107
+
125
108
  except (subprocess.SubprocessError, subprocess.TimeoutExpired) as e:
126
109
  print(f"Error installing MSIX package: {e}")
127
110
  return False
@@ -130,7 +113,7 @@ def install_msix_package(package_path: Path) -> bool:
130
113
  def ensure_winget_available() -> bool:
131
114
  """
132
115
  Ensure winget is available on the system. If not available, download and install it.
133
-
116
+
134
117
  Returns:
135
118
  bool: True if winget is available (either was already installed or successfully installed),
136
119
  False if installation failed
@@ -139,41 +122,41 @@ def ensure_winget_available() -> bool:
139
122
  if is_winget_available():
140
123
  print("Winget is already available on the system.")
141
124
  return True
142
-
125
+
143
126
  print("Winget not found. Attempting to download and install...")
144
-
127
+
145
128
  # Get the latest release URL
146
129
  download_url = get_latest_winget_release_url()
147
130
  if not download_url:
148
131
  print("Could not find the latest winget release URL.")
149
132
  return False
150
-
133
+
151
134
  print(f"Found latest winget release: {download_url}")
152
-
135
+
153
136
  # Create temporary directory for download
154
137
  with tempfile.TemporaryDirectory() as temp_dir:
155
138
  temp_path = Path(temp_dir)
156
-
139
+
157
140
  # Extract filename from URL
158
141
  filename = download_url.split("/")[-1]
159
142
  if not filename.endswith(".msixbundle"):
160
143
  filename = "winget-latest.msixbundle"
161
-
144
+
162
145
  package_path = temp_path / filename
163
-
146
+
164
147
  # Download the package
165
148
  print(f"Downloading winget package to {package_path}...")
166
149
  if not download_file(download_url, package_path):
167
150
  print("Failed to download winget package.")
168
151
  return False
169
-
152
+
170
153
  print("Download completed. Installing winget...")
171
-
154
+
172
155
  # Install the package
173
156
  if not install_msix_package(package_path):
174
157
  print("Failed to install winget package.")
175
158
  return False
176
-
159
+
177
160
  # Verify installation
178
161
  if is_winget_available():
179
162
  print("Winget has been successfully installed and is now available!")
@@ -186,9 +169,8 @@ def ensure_winget_available() -> bool:
186
169
  if __name__ == "__main__":
187
170
  # Example usage
188
171
  print("=== Winget Installation ===\n")
189
-
172
+
190
173
  if ensure_winget_available():
191
174
  print("Winget is ready to use!")
192
175
  else:
193
176
  print("Failed to ensure winget availability.")
194
-
@@ -1,38 +1,29 @@
1
- """docker installer
2
- """
1
+ """docker installer"""
3
2
 
4
3
  import platform
5
4
  from typing import Optional
6
5
 
7
6
 
8
- config_dict = {
9
- "repo_url": "CUSTOM",
10
- "doc": "lightweight containerization",
11
- "filename_template_windows_amd_64": "",
12
- "filename_template_linux_amd_64": "",
13
- "strip_v": False,
14
- "exe_name": "docker"
15
- }
16
-
7
+ config_dict = {"repo_url": "CUSTOM", "doc": "lightweight containerization", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "docker"}
17
8
 
18
9
 
19
10
  def main(version: Optional[str]):
20
11
  print(f"""
21
- {'=' * 150}
12
+ {"=" * 150}
22
13
  đŸŗ DOCKER INSTALLER | Setting up containerization platform
23
14
  đŸ’ģ Platform: {platform.system()}
24
- 🔄 Version: {'latest' if version is None else version}
25
- {'=' * 150}
15
+ 🔄 Version: {"latest" if version is None else version}
16
+ {"=" * 150}
26
17
  """)
27
-
18
+
28
19
  _ = version
29
20
  if platform.system() == "Windows":
30
21
  error_msg = "Docker installation not supported on Windows through this installer"
31
22
  print(f"""
32
- {'âš ī¸' * 20}
23
+ {"âš ī¸" * 20}
33
24
  ❌ ERROR | {error_msg}
34
25
  💡 TIP: Please use Docker Desktop for Windows instead
35
- {'âš ī¸' * 20}
26
+ {"âš ī¸" * 20}
36
27
  """)
37
28
  raise NotImplementedError(error_msg)
38
29
  elif platform.system() in ["Linux", "Darwin"]:
@@ -40,6 +31,7 @@ def main(version: Optional[str]):
40
31
  print(f"🐧 Installing Docker on {system_name} using official script...")
41
32
  import machineconfig.jobs.python_custom_installers as module
42
33
  from pathlib import Path
34
+
43
35
  if platform.system() == "Linux":
44
36
  program = Path(module.__file__).parent.joinpath("scripts/linux/docker.sh").read_text(encoding="utf-8")
45
37
  else: # Darwin/macOS
@@ -48,23 +40,23 @@ def main(version: Optional[str]):
48
40
  else:
49
41
  error_msg = f"Unsupported platform: {platform.system()}"
50
42
  print(f"""
51
- {'âš ī¸' * 20}
43
+ {"âš ī¸" * 20}
52
44
  ❌ ERROR | {error_msg}
53
- {'âš ī¸' * 20}
45
+ {"âš ī¸" * 20}
54
46
  """)
55
47
  raise NotImplementedError(error_msg)
56
-
48
+
57
49
  print(f"""
58
- {'=' * 150}
50
+ {"=" * 150}
59
51
  â„šī¸ INFO | Docker features:
60
52
  đŸ“Ļ Container-based virtualization
61
53
  🚀 Simplified application deployment
62
54
  🔄 Consistent development environments
63
55
  đŸ›Ąī¸ Isolated application environments
64
56
  📊 Efficient resource utilization
65
- {'=' * 150}
57
+ {"=" * 150}
66
58
  """)
67
-
59
+
68
60
  # _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
69
61
  # run script here as it requires user input
70
62
  return program
@@ -72,4 +64,3 @@ def main(version: Optional[str]):
72
64
 
73
65
  if __name__ == "__main__":
74
66
  pass
75
-