machineconfig 3.7__py3-none-any.whl → 7.69__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 (465) hide show
  1. machineconfig/__init__.py +0 -28
  2. machineconfig/cluster/remote/distribute.py +0 -1
  3. machineconfig/cluster/remote/file_manager.py +0 -2
  4. machineconfig/cluster/remote/script_execution.py +1 -2
  5. machineconfig/cluster/sessions_managers/{enhanced_command_runner.py → helpers/enhanced_command_runner.py} +4 -6
  6. machineconfig/cluster/sessions_managers/helpers/load_balancer_helper.py +145 -0
  7. machineconfig/cluster/sessions_managers/utils/load_balancer.py +53 -0
  8. machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
  9. machineconfig/cluster/sessions_managers/wt_local.py +128 -330
  10. machineconfig/cluster/sessions_managers/wt_local_manager.py +53 -187
  11. machineconfig/cluster/sessions_managers/wt_remote.py +51 -43
  12. machineconfig/cluster/sessions_managers/wt_remote_manager.py +49 -197
  13. machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +6 -19
  14. machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
  15. machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
  16. machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +4 -2
  17. machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
  18. machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
  19. machineconfig/cluster/sessions_managers/zellij_local.py +81 -375
  20. machineconfig/cluster/sessions_managers/zellij_local_manager.py +22 -172
  21. machineconfig/cluster/sessions_managers/zellij_remote.py +40 -41
  22. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +13 -10
  23. machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +4 -8
  24. machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +5 -20
  25. machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -9
  26. machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -1
  27. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper.py +298 -0
  28. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_restart.py +77 -0
  29. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_with_panes.py +228 -0
  30. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_manager_helper.py +165 -0
  31. machineconfig/jobs/{python → installer}/check_installations.py +7 -21
  32. machineconfig/jobs/installer/custom/boxes.py +61 -0
  33. machineconfig/jobs/installer/custom/gh.py +128 -0
  34. machineconfig/jobs/{python_custom_installers → installer/custom}/hx.py +84 -18
  35. machineconfig/jobs/installer/custom_dev/alacritty.py +86 -0
  36. machineconfig/jobs/installer/custom_dev/brave.py +82 -0
  37. machineconfig/jobs/installer/custom_dev/bypass_paywall.py +59 -0
  38. machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
  39. machineconfig/jobs/installer/custom_dev/code.py +63 -0
  40. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/cursor.py +7 -7
  41. machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
  42. machineconfig/jobs/installer/custom_dev/espanso.py +117 -0
  43. machineconfig/jobs/installer/custom_dev/goes.py +68 -0
  44. machineconfig/jobs/installer/custom_dev/lvim.py +89 -0
  45. machineconfig/jobs/installer/custom_dev/nerdfont.py +111 -0
  46. machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +149 -0
  47. machineconfig/jobs/installer/custom_dev/redis.py +88 -0
  48. machineconfig/jobs/installer/custom_dev/sysabc.py +145 -0
  49. machineconfig/jobs/installer/custom_dev/wezterm.py +92 -0
  50. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/winget.py +2 -3
  51. machineconfig/jobs/installer/installer_data.json +3440 -0
  52. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/brave.sh +4 -14
  53. machineconfig/jobs/{python_custom_installers/scripts/linux/warp-cli.sh → installer/linux_scripts/cloudflare_warp_cli.sh} +5 -17
  54. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/docker.sh +6 -18
  55. machineconfig/jobs/installer/linux_scripts/docker_start.sh +37 -0
  56. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/edge.sh +3 -11
  57. machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
  58. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/nerdfont.sh +5 -17
  59. machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
  60. machineconfig/jobs/installer/linux_scripts/ngrok.sh +6 -0
  61. machineconfig/jobs/installer/linux_scripts/q.sh +9 -0
  62. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/redis.sh +6 -17
  63. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/vscode.sh +5 -17
  64. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/wezterm.sh +4 -12
  65. machineconfig/jobs/installer/package_groups.py +255 -0
  66. machineconfig/logger.py +0 -1
  67. machineconfig/profile/backup.toml +49 -0
  68. machineconfig/profile/bash_shell_profiles.md +11 -0
  69. machineconfig/profile/create_helper.py +74 -0
  70. machineconfig/profile/create_links.py +288 -0
  71. machineconfig/profile/create_links_export.py +100 -0
  72. machineconfig/profile/create_shell_profile.py +136 -0
  73. machineconfig/profile/mapper.toml +258 -0
  74. machineconfig/scripts/__init__.py +0 -4
  75. machineconfig/scripts/linux/{share_cloud.sh → other/share_cloud.sh} +14 -25
  76. machineconfig/scripts/linux/wrap_mcfg +47 -0
  77. machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
  78. machineconfig/scripts/python/agents.py +198 -0
  79. machineconfig/scripts/python/ai/command_runner/command_runner.sh +9 -0
  80. machineconfig/scripts/python/ai/command_runner/prompt.txt +9 -0
  81. machineconfig/scripts/python/ai/generate_files.py +307 -42
  82. machineconfig/scripts/python/ai/{mcinit.py → initai.py} +3 -38
  83. machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +114 -0
  84. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +88 -22
  85. machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
  86. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -1
  87. machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
  88. machineconfig/scripts/python/ai/solutions/gemini/settings.json +1 -1
  89. machineconfig/scripts/python/ai/solutions/generic.py +27 -4
  90. machineconfig/scripts/python/ai/vscode_tasks.py +37 -0
  91. machineconfig/scripts/python/cloud.py +29 -0
  92. machineconfig/scripts/python/croshell.py +129 -198
  93. machineconfig/scripts/python/define.py +31 -0
  94. machineconfig/scripts/python/devops.py +45 -131
  95. machineconfig/scripts/python/devops_navigator.py +6 -0
  96. machineconfig/scripts/python/env_manager/__init__.py +1 -0
  97. machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
  98. machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
  99. machineconfig/scripts/python/fire_jobs.py +166 -235
  100. machineconfig/scripts/python/ftpx.py +164 -100
  101. machineconfig/scripts/python/helpers/ast_search.py +74 -0
  102. machineconfig/scripts/python/helpers/repo_rag.py +325 -0
  103. machineconfig/scripts/python/helpers/symantic_search.py +25 -0
  104. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +14 -0
  105. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +37 -0
  106. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
  107. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +42 -0
  108. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
  109. machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +110 -0
  110. machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +34 -0
  111. machineconfig/scripts/python/helpers_agents/fire_agents_load_balancer.py +22 -0
  112. machineconfig/scripts/python/helpers_agents/templates/prompt.txt +6 -0
  113. machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
  114. machineconfig/scripts/python/helpers_agents/templates/template.sh +24 -0
  115. machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +52 -39
  116. machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +13 -18
  117. machineconfig/scripts/python/helpers_cloud/cloud_sync.py +81 -0
  118. machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
  119. machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
  120. machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -1
  121. machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +32 -20
  122. machineconfig/scripts/python/helpers_devops/cli_config.py +95 -0
  123. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
  124. machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
  125. machineconfig/scripts/python/helpers_devops/cli_nw.py +134 -0
  126. machineconfig/scripts/python/helpers_devops/cli_repos.py +182 -0
  127. machineconfig/scripts/python/helpers_devops/cli_self.py +134 -0
  128. machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
  129. machineconfig/scripts/python/helpers_devops/cli_share_server.py +141 -0
  130. machineconfig/scripts/python/helpers_devops/cli_terminal.py +156 -0
  131. machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
  132. machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
  133. machineconfig/scripts/python/helpers_devops/devops_status.py +511 -0
  134. machineconfig/scripts/python/helpers_devops/devops_update_repos.py +269 -0
  135. machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
  136. machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
  137. machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +2 -2
  138. machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -2
  139. machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -89
  140. machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +145 -0
  141. machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +110 -0
  142. machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
  143. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfag +1 -1
  144. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +1 -1
  145. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfrga +1 -1
  146. machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
  147. machineconfig/scripts/python/helpers_navigator/command_builder.py +111 -0
  148. machineconfig/scripts/python/helpers_navigator/command_detail.py +44 -0
  149. machineconfig/scripts/python/helpers_navigator/command_tree.py +620 -0
  150. machineconfig/scripts/python/helpers_navigator/data_models.py +28 -0
  151. machineconfig/scripts/python/helpers_navigator/main_app.py +272 -0
  152. machineconfig/scripts/python/helpers_navigator/search_bar.py +15 -0
  153. machineconfig/scripts/python/helpers_repos/action.py +209 -0
  154. machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
  155. machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +6 -7
  156. machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
  157. machineconfig/scripts/python/helpers_repos/count_lines.py +348 -0
  158. machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +17 -0
  159. machineconfig/scripts/python/helpers_repos/entrypoint.py +77 -0
  160. machineconfig/scripts/python/helpers_repos/grource.py +340 -0
  161. machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +7 -4
  162. machineconfig/scripts/python/helpers_repos/sync.py +66 -0
  163. machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
  164. machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +58 -0
  165. machineconfig/scripts/python/helpers_utils/download.py +152 -0
  166. machineconfig/scripts/python/helpers_utils/path.py +108 -0
  167. machineconfig/scripts/python/interactive.py +187 -0
  168. machineconfig/scripts/python/mcfg_entry.py +63 -0
  169. machineconfig/scripts/python/msearch.py +40 -0
  170. machineconfig/scripts/python/{devops_add_identity.py → nw/devops_add_identity.py} +1 -3
  171. machineconfig/scripts/python/{devops_add_ssh_key.py → nw/devops_add_ssh_key.py} +74 -44
  172. machineconfig/scripts/{linux → python/nw}/mount_nfs +1 -1
  173. machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +19 -16
  174. machineconfig/scripts/{linux → python/nw}/mount_nw_drive +1 -2
  175. machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +7 -8
  176. machineconfig/scripts/python/{onetimeshare.py → nw/onetimeshare.py} +0 -1
  177. machineconfig/scripts/python/nw/ssh_debug_linux.py +391 -0
  178. machineconfig/scripts/python/nw/ssh_debug_windows.py +338 -0
  179. machineconfig/scripts/python/{wifi_conn.py → nw/wifi_conn.py} +1 -51
  180. machineconfig/scripts/python/nw/wsl_windows_transfer.py +67 -0
  181. machineconfig/scripts/python/sessions.py +167 -0
  182. machineconfig/scripts/python/terminal.py +127 -0
  183. machineconfig/scripts/python/utils.py +66 -0
  184. machineconfig/scripts/windows/mounts/Restore-ThunderbirdProfile.ps1 +92 -0
  185. machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
  186. machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
  187. machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
  188. machineconfig/scripts/windows/wrap_mcfg.ps1 +60 -0
  189. machineconfig/settings/broot/br.sh +0 -4
  190. machineconfig/settings/broot/conf.toml +1 -1
  191. machineconfig/settings/helix/config.toml +16 -0
  192. machineconfig/settings/helix/languages.toml +13 -4
  193. machineconfig/settings/helix/yazi-picker.sh +12 -0
  194. machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
  195. machineconfig/settings/lf/linux/exe/previewer.sh +9 -3
  196. machineconfig/settings/lf/linux/lfrc +10 -12
  197. machineconfig/settings/lf/windows/fzf_edit.ps1 +2 -2
  198. machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
  199. machineconfig/settings/lf/windows/lfrc +18 -38
  200. machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
  201. machineconfig/settings/linters/.ruff.toml +1 -1
  202. machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
  203. machineconfig/settings/marimo/marimo.toml +80 -0
  204. machineconfig/settings/marimo/snippets/globalize.py +34 -0
  205. machineconfig/settings/pistol/pistol.conf +1 -1
  206. machineconfig/settings/shells/bash/init.sh +55 -31
  207. machineconfig/settings/shells/nushell/config.nu +1 -34
  208. machineconfig/settings/shells/nushell/init.nu +127 -0
  209. machineconfig/settings/shells/pwsh/init.ps1 +61 -43
  210. machineconfig/settings/shells/starship/starship.toml +16 -0
  211. machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
  212. machineconfig/settings/shells/wt/settings.json +32 -17
  213. machineconfig/settings/shells/zsh/init.sh +89 -0
  214. machineconfig/settings/svim/linux/init.toml +0 -4
  215. machineconfig/settings/svim/windows/init.toml +0 -3
  216. machineconfig/settings/yazi/init.lua +57 -0
  217. machineconfig/settings/yazi/keymap_linux.toml +79 -0
  218. machineconfig/settings/yazi/keymap_windows.toml +78 -0
  219. machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
  220. machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
  221. machineconfig/settings/yazi/yazi.toml +14 -1
  222. machineconfig/setup_linux/__init__.py +10 -0
  223. machineconfig/setup_linux/apps_desktop.sh +89 -0
  224. machineconfig/setup_linux/apps_gui.sh +64 -0
  225. machineconfig/setup_linux/{nix → others}/cli_installation.sh +9 -29
  226. machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
  227. machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
  228. machineconfig/setup_linux/uv.sh +15 -0
  229. machineconfig/setup_linux/web_shortcuts/interactive.sh +28 -203
  230. machineconfig/setup_mac/__init__.py +16 -0
  231. machineconfig/setup_mac/apps_gui.sh +248 -0
  232. machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
  233. machineconfig/setup_mac/uv.sh +36 -0
  234. machineconfig/setup_windows/__init__.py +8 -0
  235. machineconfig/setup_windows/others/power_options.ps1 +7 -0
  236. machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
  237. machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
  238. machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
  239. machineconfig/setup_windows/uv.ps1 +17 -0
  240. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -189
  241. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
  242. machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
  243. machineconfig/utils/accessories.py +52 -12
  244. machineconfig/utils/cloud/onedrive/README.md +139 -0
  245. machineconfig/utils/code.py +140 -93
  246. machineconfig/utils/files/art/fat_croco.txt +10 -0
  247. machineconfig/utils/files/art/halfwit_croco.txt +9 -0
  248. machineconfig/utils/files/art/happy_croco.txt +22 -0
  249. machineconfig/utils/files/art/water_croco.txt +11 -0
  250. machineconfig/utils/files/ascii_art.py +118 -0
  251. machineconfig/utils/files/dbms.py +257 -0
  252. machineconfig/utils/files/headers.py +68 -0
  253. machineconfig/utils/files/ouch/decompress.py +45 -0
  254. machineconfig/utils/files/read.py +95 -0
  255. machineconfig/utils/installer_utils/github_release_bulk.py +188 -0
  256. machineconfig/utils/installer_utils/install_from_url.py +180 -0
  257. machineconfig/utils/installer_utils/installer_class.py +239 -316
  258. machineconfig/utils/installer_utils/installer_cli.py +186 -0
  259. machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +90 -5
  260. machineconfig/utils/installer_utils/installer_runner.py +191 -0
  261. machineconfig/utils/io.py +77 -24
  262. machineconfig/utils/links.py +309 -100
  263. machineconfig/utils/meta.py +255 -0
  264. machineconfig/utils/notifications.py +1 -1
  265. machineconfig/utils/options.py +19 -47
  266. machineconfig/utils/path_extended.py +111 -121
  267. machineconfig/utils/path_helper.py +75 -22
  268. machineconfig/utils/procs.py +50 -74
  269. machineconfig/utils/scheduler.py +94 -97
  270. machineconfig/utils/scheduling.py +0 -3
  271. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +5 -17
  272. machineconfig/utils/schemas/installer/installer_types.py +28 -6
  273. machineconfig/utils/schemas/layouts/layout_types.py +34 -1
  274. machineconfig/utils/source_of_truth.py +3 -6
  275. machineconfig/utils/ssh.py +742 -254
  276. machineconfig/utils/ssh_utils/utils.py +0 -0
  277. machineconfig/utils/terminal.py +3 -140
  278. machineconfig/utils/tst.py +20 -0
  279. machineconfig/utils/upgrade_packages.py +109 -28
  280. machineconfig/utils/ve.py +13 -5
  281. machineconfig-7.69.dist-info/METADATA +124 -0
  282. machineconfig-7.69.dist-info/RECORD +454 -0
  283. machineconfig-7.69.dist-info/entry_points.txt +15 -0
  284. machineconfig/cluster/templates/cli_click.py +0 -102
  285. machineconfig/cluster/templates/cli_gooey.py +0 -115
  286. machineconfig/cluster/templates/utils.py +0 -51
  287. machineconfig/jobs/linux/msc/cli_agents.sh +0 -32
  288. machineconfig/jobs/python/create_bootable_media.py +0 -16
  289. machineconfig/jobs/python/python_cargo_build_share.py +0 -59
  290. machineconfig/jobs/python/python_ve_symlink.py +0 -29
  291. machineconfig/jobs/python/tasks.py +0 -3
  292. machineconfig/jobs/python/vscode/api.py +0 -48
  293. machineconfig/jobs/python/vscode/link_ve.py +0 -63
  294. machineconfig/jobs/python/vscode/select_interpreter.py +0 -87
  295. machineconfig/jobs/python/vscode/sync_code.py +0 -58
  296. machineconfig/jobs/python_custom_installers/archive/ngrok.py +0 -63
  297. machineconfig/jobs/python_custom_installers/dev/aider.py +0 -37
  298. machineconfig/jobs/python_custom_installers/dev/alacritty.py +0 -65
  299. machineconfig/jobs/python_custom_installers/dev/brave.py +0 -71
  300. machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +0 -50
  301. machineconfig/jobs/python_custom_installers/dev/code.py +0 -51
  302. machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -78
  303. machineconfig/jobs/python_custom_installers/dev/espanso.py +0 -90
  304. machineconfig/jobs/python_custom_installers/dev/goes.py +0 -55
  305. machineconfig/jobs/python_custom_installers/dev/lvim.py +0 -77
  306. machineconfig/jobs/python_custom_installers/dev/nerdfont.py +0 -68
  307. machineconfig/jobs/python_custom_installers/dev/redis.py +0 -65
  308. machineconfig/jobs/python_custom_installers/dev/reverse_proxy.md +0 -31
  309. machineconfig/jobs/python_custom_installers/dev/wezterm.py +0 -70
  310. machineconfig/jobs/python_custom_installers/docker.py +0 -74
  311. machineconfig/jobs/python_custom_installers/gh.py +0 -97
  312. machineconfig/jobs/python_custom_installers/scripts/linux/docker_start.sh +0 -45
  313. machineconfig/jobs/python_custom_installers/scripts/linux/pgsql.sh +0 -49
  314. machineconfig/jobs/python_custom_installers/scripts/linux/timescaledb.sh +0 -85
  315. machineconfig/jobs/python_custom_installers/warp-cli.py +0 -71
  316. machineconfig/jobs/python_generic_installers/config.json +0 -603
  317. machineconfig/jobs/python_generic_installers/config.json.bak +0 -414
  318. machineconfig/jobs/python_generic_installers/dev/config.archive.json +0 -18
  319. machineconfig/jobs/python_generic_installers/dev/config.json +0 -825
  320. machineconfig/jobs/python_generic_installers/dev/config.json.bak +0 -565
  321. machineconfig/jobs/python_linux_installers/archive/config.json +0 -18
  322. machineconfig/jobs/python_linux_installers/archive/config.json.bak +0 -10
  323. machineconfig/jobs/python_linux_installers/config.json +0 -145
  324. machineconfig/jobs/python_linux_installers/config.json.bak +0 -110
  325. machineconfig/jobs/python_linux_installers/dev/config.json +0 -276
  326. machineconfig/jobs/python_linux_installers/dev/config.json.bak +0 -206
  327. machineconfig/jobs/python_windows_installers/archive/file.json +0 -11
  328. machineconfig/jobs/python_windows_installers/config.json +0 -82
  329. machineconfig/jobs/python_windows_installers/config.json.bak +0 -56
  330. machineconfig/jobs/python_windows_installers/dev/config.json +0 -4
  331. machineconfig/jobs/python_windows_installers/dev/config.json.bak +0 -3
  332. machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
  333. machineconfig/jobs/windows/start_terminal.ps1 +0 -6
  334. machineconfig/jobs/windows/startup_file.cmd +0 -2
  335. machineconfig/profile/create.py +0 -169
  336. machineconfig/profile/shell.py +0 -176
  337. machineconfig/scripts/cloud/init.sh +0 -119
  338. machineconfig/scripts/linux/choose_wezterm_theme +0 -3
  339. machineconfig/scripts/linux/cloud_copy +0 -2
  340. machineconfig/scripts/linux/cloud_mount +0 -2
  341. machineconfig/scripts/linux/cloud_repo_sync +0 -2
  342. machineconfig/scripts/linux/cloud_sync +0 -2
  343. machineconfig/scripts/linux/croshell +0 -3
  344. machineconfig/scripts/linux/devops +0 -2
  345. machineconfig/scripts/linux/fire +0 -2
  346. machineconfig/scripts/linux/fire_agents +0 -2
  347. machineconfig/scripts/linux/ftpx +0 -2
  348. machineconfig/scripts/linux/fzf2g +0 -21
  349. machineconfig/scripts/linux/fzffg +0 -25
  350. machineconfig/scripts/linux/gh_models +0 -2
  351. machineconfig/scripts/linux/kill_process +0 -2
  352. machineconfig/scripts/linux/mcinit +0 -2
  353. machineconfig/scripts/linux/programs +0 -21
  354. machineconfig/scripts/linux/repos +0 -2
  355. machineconfig/scripts/linux/scheduler +0 -2
  356. machineconfig/scripts/linux/share_smb +0 -1
  357. machineconfig/scripts/linux/start_slidev +0 -2
  358. machineconfig/scripts/linux/start_terminals +0 -3
  359. machineconfig/scripts/linux/warp-cli.sh +0 -122
  360. machineconfig/scripts/linux/wifi_conn +0 -2
  361. machineconfig/scripts/linux/z_ls +0 -104
  362. machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
  363. machineconfig/scripts/python/archive/im2text.py +0 -34
  364. machineconfig/scripts/python/archive/tmate_conn.py +0 -41
  365. machineconfig/scripts/python/archive/tmate_start.py +0 -44
  366. machineconfig/scripts/python/cloud_repo_sync.py +0 -192
  367. machineconfig/scripts/python/cloud_sync.py +0 -85
  368. machineconfig/scripts/python/devops_devapps_install.py +0 -202
  369. machineconfig/scripts/python/devops_update_repos.py +0 -180
  370. machineconfig/scripts/python/dotfile.py +0 -52
  371. machineconfig/scripts/python/fire_agents.py +0 -176
  372. machineconfig/scripts/python/fire_agents_help_launch.py +0 -143
  373. machineconfig/scripts/python/fire_agents_load_balancer.py +0 -50
  374. machineconfig/scripts/python/fire_jobs_args_helper.py +0 -84
  375. machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -66
  376. machineconfig/scripts/python/get_zellij_cmd.py +0 -15
  377. machineconfig/scripts/python/gh_models.py +0 -104
  378. machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -114
  379. machineconfig/scripts/python/repos.py +0 -160
  380. machineconfig/scripts/python/snapshot.py +0 -25
  381. machineconfig/scripts/python/start_terminals.py +0 -121
  382. machineconfig/scripts/python/wsl_windows_transfer.py +0 -72
  383. machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
  384. machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
  385. machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
  386. machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
  387. machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
  388. machineconfig/scripts/windows/croshell.ps1 +0 -1
  389. machineconfig/scripts/windows/devops.ps1 +0 -1
  390. machineconfig/scripts/windows/dotfile.ps1 +0 -1
  391. machineconfig/scripts/windows/fire.ps1 +0 -1
  392. machineconfig/scripts/windows/ftpx.ps1 +0 -1
  393. machineconfig/scripts/windows/gpt.ps1 +0 -1
  394. machineconfig/scripts/windows/grep.ps1 +0 -2
  395. machineconfig/scripts/windows/kill_process.ps1 +0 -1
  396. machineconfig/scripts/windows/mcinit.ps1 +0 -1
  397. machineconfig/scripts/windows/nano.ps1 +0 -3
  398. machineconfig/scripts/windows/pomodoro.ps1 +0 -1
  399. machineconfig/scripts/windows/reload_path.ps1 +0 -3
  400. machineconfig/scripts/windows/repos.ps1 +0 -1
  401. machineconfig/scripts/windows/scheduler.ps1 +0 -1
  402. machineconfig/scripts/windows/snapshot.ps1 +0 -1
  403. machineconfig/scripts/windows/start_slidev.ps1 +0 -1
  404. machineconfig/scripts/windows/start_terminals.ps1 +0 -1
  405. machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
  406. machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
  407. machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
  408. machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
  409. machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
  410. machineconfig/setup_linux/web_shortcuts/ascii_art.sh +0 -93
  411. machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
  412. machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
  413. machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
  414. machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
  415. machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
  416. machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
  417. machineconfig/setup_windows/wt_and_pwsh/install_nerd_fonts.py +0 -100
  418. machineconfig/utils/ai/generate_file_checklist.py +0 -68
  419. machineconfig/utils/installer.py +0 -255
  420. machineconfig-3.7.dist-info/METADATA +0 -165
  421. machineconfig-3.7.dist-info/RECORD +0 -432
  422. machineconfig-3.7.dist-info/entry_points.txt +0 -18
  423. machineconfig/cluster/{templates → remote}/run_cloud.py +0 -0
  424. machineconfig/cluster/{templates → remote}/run_cluster.py +0 -0
  425. machineconfig/cluster/{templates → remote}/run_remote.py +0 -0
  426. machineconfig/jobs/{python → installer}/__init__.py +0 -0
  427. machineconfig/jobs/{python_custom_installers → installer/custom_dev}/__init__.py +0 -0
  428. machineconfig/{setup_windows/wt_and_pwsh → jobs/installer/powershell_scripts}/install_fonts.ps1 +0 -0
  429. machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
  430. machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
  431. machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
  432. machineconfig/{jobs/python_generic_installers → scripts/python/helpers_agents}/__init__.py +0 -0
  433. machineconfig/{jobs/python_linux_installers → scripts/python/helpers_agents/agentic_frameworks}/__init__.py +0 -0
  434. machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
  435. machineconfig/{jobs/python_linux_installers/dev → scripts/python/helpers_cloud}/__init__.py +0 -0
  436. machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
  437. /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
  438. /machineconfig/{jobs/python_windows_installers → scripts/python/helpers_croshell}/__init__.py +0 -0
  439. /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
  440. /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
  441. /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
  442. /machineconfig/{jobs/python_windows_installers/archive → scripts/python/helpers_devops}/__init__.py +0 -0
  443. /machineconfig/{jobs/python_windows_installers/dev → scripts/python/helpers_devops/themes}/__init__.py +0 -0
  444. /machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
  445. /machineconfig/scripts/python/{helpers → helpers_fire_command}/__init__.py +0 -0
  446. /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
  447. /machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/skrg +0 -0
  448. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfb.ps1 +0 -0
  449. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfg.ps1 +0 -0
  450. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfrga.bat +0 -0
  451. /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_sessions/__init__.py} +0 -0
  452. /machineconfig/scripts/{windows/share_nfs.ps1 → python/nw/__init__.py} +0 -0
  453. /machineconfig/scripts/{linux → python/nw}/mount_drive +0 -0
  454. /machineconfig/scripts/python/{mount_nw_drive.py → nw/mount_nw_drive.py} +0 -0
  455. /machineconfig/scripts/{linux → python/nw}/mount_smb +0 -0
  456. /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
  457. /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
  458. /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
  459. /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
  460. /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
  461. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
  462. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
  463. /machineconfig/{settings/yazi/keymap.toml → utils/files/ouch/__init__.py} +0 -0
  464. {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/WHEEL +0 -0
  465. {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,165 @@
1
+ #!/usr/bin/env python3
2
+ import json
3
+ import logging
4
+ import shutil
5
+ import subprocess
6
+ from datetime import datetime
7
+ from pathlib import Path
8
+ from typing import TYPE_CHECKING, Optional
9
+
10
+ from machineconfig.cluster.sessions_managers.zellij_utils.monitoring_types import ActiveSessionInfo, StartResult
11
+ from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
12
+
13
+ if TYPE_CHECKING:
14
+ from machineconfig.cluster.sessions_managers.zellij_local import ZellijLayoutGenerator
15
+
16
+
17
+ logger = logging.getLogger(__name__)
18
+ TMP_SERIALIZATION_DIR = Path.home() / "tmp_results" / "zellij_sessions" / "serialized"
19
+
20
+
21
+ def list_saved_sessions() -> list[str]:
22
+ """List all saved session IDs."""
23
+ if not TMP_SERIALIZATION_DIR.exists():
24
+ return []
25
+ sessions = []
26
+ for item in TMP_SERIALIZATION_DIR.iterdir():
27
+ if item.is_dir() and (item / "metadata.json").exists():
28
+ sessions.append(item.name)
29
+ return sorted(sessions)
30
+
31
+
32
+ def delete_session(session_id: str) -> bool:
33
+ """Delete a saved session."""
34
+ session_dir = TMP_SERIALIZATION_DIR / session_id
35
+ if not session_dir.exists():
36
+ logger.warning(f"Session directory not found: {session_dir}")
37
+ return False
38
+ try:
39
+ shutil.rmtree(session_dir)
40
+ logger.info(f"✅ Deleted session: {session_id}")
41
+ return True
42
+ except Exception as e:
43
+ logger.error(f"Failed to delete session {session_id}: {e}")
44
+ return False
45
+
46
+
47
+ def get_all_session_names(managers: list["ZellijLayoutGenerator"]) -> list[str]:
48
+ """Get all managed session names."""
49
+ return [manager.session_name for manager in managers]
50
+
51
+
52
+ def attach_to_session(managers: list["ZellijLayoutGenerator"], session_name: Optional[str]) -> str:
53
+ """
54
+ Generate command to attach to a specific session or list attachment commands for all.
55
+
56
+ Args:
57
+ managers: List of ZellijLayoutGenerator instances
58
+ session_name: Specific session to attach to, or None for all sessions
59
+
60
+ Returns:
61
+ Command string to attach to session(s)
62
+ """
63
+ if session_name:
64
+ for manager in managers:
65
+ if manager.session_name == session_name:
66
+ return f"zellij attach {session_name}"
67
+ raise ValueError(f"Session '{session_name}' not found")
68
+ else:
69
+ commands: list[str] = []
70
+ for manager in managers:
71
+ commands.append(f"# Attach to session '{manager.session_name}':")
72
+ commands.append(f"zellij attach {manager.session_name}")
73
+ commands.append("")
74
+ return "\n".join(commands)
75
+
76
+
77
+ def list_active_sessions(managers: list["ZellijLayoutGenerator"]) -> list[ActiveSessionInfo]:
78
+ """List currently active zellij sessions managed by this instance."""
79
+ active_sessions: list[ActiveSessionInfo] = []
80
+ try:
81
+ result = subprocess.run(["zellij", "list-sessions"], capture_output=True, text=True, timeout=10)
82
+ if result.returncode == 0:
83
+ all_sessions = result.stdout.strip().split("\n") if result.stdout.strip() else []
84
+ for manager in managers:
85
+ session_name = manager.session_name
86
+ is_active = any(session_name in session for session in all_sessions)
87
+ tab_info = []
88
+ tab_count = 0
89
+ if manager.layout_config:
90
+ tab_count = len(manager.layout_config["layoutTabs"])
91
+ tab_info = [tab["tabName"] for tab in manager.layout_config["layoutTabs"]]
92
+ active_sessions.append({"session_name": session_name, "is_active": is_active, "tab_count": tab_count, "tabs": tab_info})
93
+ except Exception as e:
94
+ logger.error(f"Error listing active sessions: {e}")
95
+ return active_sessions
96
+
97
+
98
+ def save_manager(session_layouts: list[LayoutConfig], managers: list["ZellijLayoutGenerator"], session_name_prefix: str, session_id: Optional[str]) -> str:
99
+ """Save the manager state to disk."""
100
+ if session_id is None:
101
+ import uuid
102
+ session_id = str(uuid.uuid4())[:8]
103
+ session_dir = TMP_SERIALIZATION_DIR / session_id
104
+ session_dir.mkdir(parents=True, exist_ok=True)
105
+ config_file = session_dir / "session_layouts.json"
106
+ text = json.dumps(session_layouts, indent=2, ensure_ascii=False)
107
+ config_file.write_text(text, encoding="utf-8")
108
+ metadata = {"session_name_prefix": session_name_prefix, "created_at": str(datetime.now()), "num_managers": len(managers), "sessions": [item["layoutName"] for item in session_layouts], "manager_type": "ZellijLocalManager"}
109
+ metadata_file = session_dir / "metadata.json"
110
+ text = json.dumps(metadata, indent=2, ensure_ascii=False)
111
+ metadata_file.write_text(text, encoding="utf-8")
112
+ managers_dir = session_dir / "managers"
113
+ managers_dir.mkdir(exist_ok=True)
114
+ for i, manager in enumerate(managers):
115
+ manager_data = {"session_name": manager.session_name, "layout_config": manager.layout_config, "layout_path": manager.layout_path}
116
+ manager_file = managers_dir / f"manager_{i}_{manager.session_name}.json"
117
+ text = json.dumps(manager_data, indent=2, ensure_ascii=False)
118
+ manager_file.write_text(text, encoding="utf-8")
119
+ logger.info(f"✅ Saved ZellijLocalManager session to: {session_dir}")
120
+ return session_id
121
+
122
+
123
+ def load_manager(session_id: str):
124
+ """Load a saved manager state from disk and return the data needed to reconstruct ZellijLocalManager."""
125
+ from machineconfig.cluster.sessions_managers.zellij_local import ZellijLayoutGenerator
126
+
127
+ session_dir = TMP_SERIALIZATION_DIR / session_id
128
+ if not session_dir.exists():
129
+ raise FileNotFoundError(f"Session directory not found: {session_dir}")
130
+ config_file = session_dir / "session_layouts.json"
131
+ if not config_file.exists():
132
+ raise FileNotFoundError(f"Configuration file not found: {config_file}")
133
+ text = config_file.read_text(encoding="utf-8")
134
+ session_layouts = json.loads(text)
135
+ managers = []
136
+ managers_dir = session_dir / "managers"
137
+ if managers_dir.exists():
138
+ manager_files = sorted(managers_dir.glob("manager_*.json"))
139
+ for manager_file in manager_files:
140
+ try:
141
+ text = manager_file.read_text(encoding="utf-8")
142
+ manager_data = json.loads(text)
143
+ manager = ZellijLayoutGenerator(layout_config=manager_data["layout_config"], session_name=manager_data["session_name"])
144
+ manager.layout_path = manager_data["layout_path"]
145
+ managers.append(manager)
146
+ except Exception as e:
147
+ logger.warning(f"Failed to load manager from {manager_file}: {e}")
148
+ logger.info(f"✅ Loaded ZellijLocalManager session from: {session_dir}")
149
+ return session_layouts, managers
150
+
151
+
152
+ def kill_all_sessions(managers: list["ZellijLayoutGenerator"]) -> dict[str, StartResult]:
153
+ """Kill all managed zellij sessions."""
154
+ results: dict[str, StartResult] = {}
155
+ for manager in managers:
156
+ try:
157
+ session_name = manager.session_name
158
+ cmd = f"zellij delete-session --force {session_name}"
159
+ logger.info(f"Killing session '{session_name}'")
160
+ result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=10)
161
+ results[session_name] = {"success": result.returncode == 0, "message": "Session killed" if result.returncode == 0 else result.stderr}
162
+ except Exception as e:
163
+ key = getattr(manager, "session_name", None) or f"manager_{managers.index(manager)}"
164
+ results[key] = {"success": False, "error": str(e)}
165
+ return results
@@ -1,22 +1,9 @@
1
- # """CI
2
- # """
3
1
 
4
-
5
- # import time
6
2
  import platform
7
-
8
- # from typing import Any
9
- # from rich.console import Console
10
- # from machineconfig.utils.utils2 import pprint
11
- # # from rich.progress import track
12
- from machineconfig.utils.source_of_truth import LIBRARY_ROOT
13
- # from machineconfig.utils.installer import get_installed_cli_apps
14
- # from typing import Optional
15
- # from datetime import datetime
16
- # import csv
3
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT
17
4
 
18
5
 
19
- APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lower()}/apps_summary_report.csv")
6
+ APP_SUMMARY_PATH = CONFIG_ROOT.joinpath(f"profile/records/{platform.system().lower()}/apps_summary_report.csv")
20
7
  # CLOUD: str = "gdw" # Read.ini(DEFAULTS_PATH)['general']['rclone_config_name']
21
8
  # # my onedrive doesn't allow sharing.
22
9
 
@@ -193,7 +180,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
193
180
  # else: return None
194
181
 
195
182
 
196
- # class PrecheckedCloudInstaller:
183
+ # class precheckedPackages:
197
184
  # def __init__(self):
198
185
  # # Read CSV using standard library
199
186
  # self.data = []
@@ -214,7 +201,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
214
201
  # @staticmethod
215
202
  # def install_cli_apps(app_url: str):
216
203
  # try:
217
- # exe = PrecheckedCloudInstaller.download_google_links(app_url)
204
+ # exe = precheckedPackages.download_google_links(app_url)
218
205
  # except Exception as ex: # type: ignore
219
206
  # print(f"❌ ERROR | Failed downloading {app_url}: {ex}")
220
207
  # return None
@@ -225,7 +212,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
225
212
  # exe.move(folder=PathExtended.home().joinpath("AppData/Local/Microsoft/WindowsApps"), overwrite=True)
226
213
  # return True
227
214
 
228
- # def download_safe_apps(self, name: str="AllEssentials"):
215
+ # def download_safe_apps(self, name: str="essentials"):
229
216
  # # if platform.system().lower() == "windows":
230
217
  # # from machineconfig.jobs.python.python_windows_installers_all import get_cli_py_installers
231
218
  # # cli_installers = get_cli_py_installers()
@@ -234,7 +221,6 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
234
221
  # # cli_installers = get_cli_py_installers()
235
222
  # # else: raise NotImplementedError(f"Platform {platform.system().lower()} is not supported yet.")
236
223
 
237
- # if name == "AllEssentials":
238
224
  # print(f"""
239
225
  # {'=' * 150}
240
226
  # 📥 DOWNLOAD | Downloading {len(self.data)} apps...
@@ -244,13 +230,13 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
244
230
  # app_urls = [item['app_url'] for item in self.data]
245
231
  # from concurrent.futures import ThreadPoolExecutor
246
232
  # with ThreadPoolExecutor(max_workers=20) as executor:
247
- # _res = list(executor.map(PrecheckedCloudInstaller.install_cli_apps, app_urls))
233
+ # _res = list(executor.map(precheckedPackages.install_cli_apps, app_urls))
248
234
  # else:
249
235
  # app_items = [item for item in self.data if item['app_name'] == name]
250
236
  # if not app_items:
251
237
  # raise ValueError(f"App '{name}' not found in data")
252
238
  # app_url = app_items[0]['app_url']
253
- # _res = PrecheckedCloudInstaller.install_cli_apps(app_url=app_url)
239
+ # _res = precheckedPackages.install_cli_apps(app_url=app_url)
254
240
 
255
241
  # # print("\n" * 3)
256
242
  # # for item_flag, item_name in zip(res, self.df["app_name"]):
@@ -0,0 +1,61 @@
1
+
2
+
3
+ import platform
4
+ from typing import Optional
5
+
6
+ from rich.console import Console
7
+ from rich.panel import Panel
8
+ from machineconfig.utils.installer_utils.installer_locator_utils import WINDOWS_INSTALL_PATH
9
+
10
+ from machineconfig.utils.installer_utils.installer_class import Installer
11
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData
12
+
13
+ installer_data_modified: InstallerData = {
14
+ "appName": "boxes",
15
+ "repoURL": "https://github.com/ascii-boxes/boxes",
16
+ "doc": "📦 ASCI draws boxes around text.",
17
+ "fileNamePattern": {
18
+ "amd64": {
19
+ "windows": "boxes-{version}-intel-win32.zip",
20
+ "linux": None,
21
+ "macos": None
22
+ },
23
+ "arm64": {
24
+ "linux": None,
25
+ "macos": None,
26
+ "windows": None
27
+ }
28
+ }
29
+ }
30
+
31
+ def main(installer_data: InstallerData, version: Optional[str] = None) -> None:
32
+ console = Console()
33
+ _ = installer_data
34
+ console.print(
35
+ Panel.fit(
36
+ "\n".join([f"🖥️ Platform: {platform.system()}", f"🔄 Version: {'latest' if version is None else version}"]),
37
+ title="📦 Boxes Installer",
38
+ border_style="blue",
39
+ )
40
+ )
41
+
42
+ installer = Installer(installer_data=installer_data_modified)
43
+ downloaded, _version_to_be_installed = installer.binary_download(version=version)
44
+ decomp_path = downloaded.decompress()
45
+ from pathlib import Path
46
+ for item in decomp_path.rglob("*"):
47
+ if "boxes.exe" in item.name:
48
+ dest_exe = Path(WINDOWS_INSTALL_PATH) / "boxes.exe"
49
+ if dest_exe.exists():
50
+ dest_exe.unlink()
51
+ item.rename(dest_exe)
52
+ if "boxes.cfg" in item.name:
53
+ dest_cfg = Path(WINDOWS_INSTALL_PATH) / "boxes.cfg"
54
+ if dest_cfg.exists():
55
+ dest_cfg.unlink()
56
+ item.rename(dest_cfg)
57
+ console.print("📦 Boxes downloaded and decompressed.", style="bold green")
58
+
59
+
60
+ if __name__ == "__main__":
61
+ pass
@@ -0,0 +1,128 @@
1
+ """gh-cli installer"""
2
+
3
+ import platform
4
+ import subprocess
5
+ from typing import Optional
6
+
7
+ from rich.console import Console
8
+ from rich.panel import Panel
9
+
10
+ from machineconfig.utils.installer_utils.installer_class import Installer
11
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData
12
+
13
+ r"""
14
+ https://github.com/cli/cli
15
+
16
+
17
+ # as per https://docs.github.com/en/copilot/github-copilot-in-the-cli/using-github-copilot-in-the-cli
18
+ # gh auth login
19
+ # gh extension install github/gh-copilot
20
+
21
+ # & 'C:\Program Files\GitHub CLI\gh.exe' extension install github/gh-copilot
22
+ # & 'C:\Program Files\GitHub CLI\gh.exe' extension install auth login
23
+
24
+ """
25
+
26
+ config_dict: InstallerData = {
27
+ "appName": "gh",
28
+ "repoURL": "https://github.com/cli/cli",
29
+ "doc": "GitHub CLI",
30
+ "fileNamePattern": {"amd64": {"windows": "gh_{version}_windows_amd64.msi", "linux": "gh_{version}_linux_amd64.deb", "macos": "gh_{version}_macOS_amd64.pkg"}, "arm64": {"windows": "gh_{version}_windows_arm64.msi", "linux": "gh_{version}_linux_arm64.deb", "macos": "gh_{version}_macOS_arm64.pkg"}},
31
+ }
32
+
33
+
34
+ console = Console()
35
+
36
+
37
+ def main(version: Optional[str]):
38
+ console.print(
39
+ Panel.fit(
40
+ "\n".join(
41
+ [
42
+ "[bold magenta]GitHub CLI Installer[/bold magenta]",
43
+ f"💻 Platform: {platform.system()}",
44
+ f"🔄 Version: {version or 'latest'}",
45
+ ]
46
+ ),
47
+ title="🔱 GitHub CLI",
48
+ border_style="magenta",
49
+ padding=(1, 2),
50
+ )
51
+ )
52
+
53
+ _ = version
54
+ inst = Installer(installer_data=config_dict)
55
+ console.print("[bold cyan]📦 INSTALLATION | Installing GitHub CLI base package...[/bold cyan]")
56
+ inst.install(version=version)
57
+
58
+ console.print(
59
+ Panel.fit(
60
+ "🤖 GITHUB COPILOT | Setting up GitHub Copilot CLI extension",
61
+ title="Extension Setup",
62
+ border_style="cyan",
63
+ )
64
+ )
65
+
66
+ if platform.system() == "Windows":
67
+ console.print(
68
+ Panel.fit(
69
+ "🪟 WINDOWS SETUP | Configuring GitHub CLI for Windows...",
70
+ border_style="blue",
71
+ title="Platform Setup",
72
+ )
73
+ )
74
+ program = "gh extension install github/gh-copilot"
75
+ elif platform.system() in ["Linux", "Darwin"]:
76
+ system_name = "LINUX" if platform.system() == "Linux" else "MACOS"
77
+ console.print(
78
+ Panel.fit(
79
+ f"🐧 {system_name} SETUP | Configuring GitHub CLI for {platform.system()}...",
80
+ border_style="blue",
81
+ title="Platform Setup",
82
+ )
83
+ )
84
+ program = """
85
+ gh extension install github/gh-copilot
86
+ """
87
+ else:
88
+ error_msg = f"Unsupported platform: {platform.system()}"
89
+ console.print(
90
+ Panel.fit(
91
+ f"❌ ERROR | {error_msg}",
92
+ title="Unsupported Platform",
93
+ border_style="red",
94
+ )
95
+ )
96
+ raise NotImplementedError(error_msg)
97
+
98
+ program += """
99
+ gh auth login --with-token $HOME/dotfiles/creds/git/gh_token.txt
100
+ """
101
+ console.print("[bold]🔐 AUTHENTICATION | Setting up GitHub authentication with token...[/bold]")
102
+
103
+ console.print("[bold]🔄 EXECUTING | Running GitHub Copilot extension installation and authentication...[/bold]")
104
+ try:
105
+ subprocess.run(program, shell=True, text=True, check=True)
106
+ console.print("[green]✅ Command executed successfully[/green]")
107
+ except subprocess.CalledProcessError as e:
108
+ console.print(f"❌ [red]Command failed with exit code {e.returncode}[/red]")
109
+ raise
110
+
111
+ console.print(
112
+ Panel.fit(
113
+ "\n".join(
114
+ [
115
+ "✅ SUCCESS | GitHub CLI installation completed",
116
+ "🚀 GitHub Copilot CLI extension installed",
117
+ "🔑 Authentication configured with token",
118
+ ]
119
+ ),
120
+ title="Installation Complete",
121
+ border_style="green",
122
+ padding=(1, 2),
123
+ )
124
+ )
125
+
126
+
127
+ if __name__ == "__main__":
128
+ pass
@@ -2,29 +2,40 @@
2
2
  Installers do not add runtime files to the machine, hence this script.
3
3
  """
4
4
 
5
- from machineconfig.utils.path_extended import PathExtended as PathExtended
6
- from machineconfig.utils.installer_utils.installer_abc import WINDOWS_INSTALL_PATH
5
+ from machineconfig.utils.path_extended import PathExtended
6
+ from machineconfig.utils.installer_utils.installer_locator_utils import WINDOWS_INSTALL_PATH
7
7
  from typing import Optional
8
8
  import platform
9
9
 
10
- from machineconfig.utils.installer_utils.installer_abc import LINUX_INSTALL_PATH
10
+ from machineconfig.utils.installer_utils.installer_locator_utils import LINUX_INSTALL_PATH
11
11
  from machineconfig.utils.installer_utils.installer_class import Installer
12
12
  from rich.console import Console
13
13
  from rich.panel import Panel
14
14
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
15
15
 
16
16
 
17
+ LANGUAGES_SUPPORTED_GRAMMER = ["python.so", "nu.so", "bash.so", "lua.so", "powershell.so"]
17
18
  config_dict: InstallerData = {
18
19
  "appName": "hx",
19
- "repoURL": "CUSTOM",
20
+ "repoURL": "CMD",
20
21
  "doc": "Helix is a post-modern modal text editor.",
21
- "filenameTemplate": {"amd64": {"windows": "helix-{}-x86_64-windows.zip", "linux": "helix-{}-x86_64-linux.tar.xz", "macos": ""}, "arm64": {"windows": "", "linux": "", "macos": ""}},
22
- "stripVersion": False,
23
- "exeName": "hx",
22
+ "fileNamePattern": {
23
+ "amd64": {
24
+ "linux": "helix-{version}-x86_64-linux.tar.xz",
25
+ "macos": "helix-{version}-x86_64-macos.tar.xz",
26
+ "windows": "helix-{version}-x86_64-windows.zip",
27
+ },
28
+ "arm64": {
29
+ "linux": "helix-{version}-arm64-linux.tar.xz",
30
+ "macos": "helix-{version}-arm64-macos.tar.xz",
31
+ "windows": "helix-{version}-arm64-windows.zip",
32
+ },
33
+ },
24
34
  }
25
35
 
26
36
 
27
- def main(version: Optional[str], install_lib: bool = False):
37
+ def main(installer_data: InstallerData, version: Optional[str], install_lib: bool = True):
38
+ _ = installer_data
28
39
  console = Console()
29
40
 
30
41
  console.print(Panel(f"HELIX EDITOR INSTALLER 🧬\nPlatform: {platform.system()}\nVersion: {'latest' if version is None else version}", title="Installer", expand=False))
@@ -34,7 +45,7 @@ def main(version: Optional[str], install_lib: bool = False):
34
45
  inst = Installer(installer_data=config_dict_copy)
35
46
 
36
47
  print("\n📥 [Step 1/5] Downloading Helix editor...")
37
- downloaded, _version_to_be_installed = inst.download(version=version)
48
+ downloaded, _version_to_be_installed = inst.binary_download(version=version)
38
49
  print(" ✨ Download complete.")
39
50
 
40
51
  print("\n🔍 [Step 2/5] Locating executable and components...")
@@ -48,6 +59,7 @@ def main(version: Optional[str], install_lib: bool = False):
48
59
  raise FileNotFoundError(f"Could not find 'hx' executable in {downloaded.name}")
49
60
 
50
61
  assert len(hx_file_search) == 1, f"Expected 1 'hx' executable, found {len(hx_file_search)}"
62
+
51
63
  hx_file = hx_file_search[0]
52
64
  contrib = hx_file.parent / "contrib"
53
65
  runtime = contrib.parent / "runtime"
@@ -63,21 +75,50 @@ def main(version: Optional[str], install_lib: bool = False):
63
75
  print("\n🗑️ [Step 3/5] Cleaning up previous installation (if any)...")
64
76
  runtime_path = PathExtended.home().joinpath(".config/helix/runtime")
65
77
  contrib_path = PathExtended.home().joinpath(".config/helix/contrib")
66
- runtime_path.delete(sure=True, verbose=False)
67
- contrib_path.delete(sure=True, verbose=False)
68
- print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
69
78
 
70
79
  print("\n📦 [Step 4/5] Installing Helix components...")
71
- target_config_dir = PathExtended("~/.config/helix").expanduser()
80
+ target_config_dir = PathExtended.home().joinpath(".config/helix").expanduser()
72
81
  target_config_dir.mkdir(parents=True, exist_ok=True)
73
82
 
74
83
  if platform.system() in ["Linux", "Darwin"]:
75
84
  target_bin_path = PathExtended(LINUX_INSTALL_PATH) if platform.system() == "Linux" else PathExtended("/usr/local/bin")
76
85
  exe_name = "hx"
77
86
  hx_file.move(folder=target_bin_path, overwrite=True)
87
+
88
+ # Always install contrib (regardless of install_lib flag) — treat it like the executable.
89
+ contrib_path.delete(sure=True, verbose=False)
90
+ contrib.move(folder=target_config_dir, overwrite=True)
91
+
92
+ # Install runtime only if install_lib is True. When copying runtime, copy all subfolders
93
+ # except 'grammars' (for which we only copy the specific python.so file if present).
78
94
  if install_lib:
79
- contrib.move(folder=target_config_dir, overwrite=True)
80
- runtime.move(folder=target_config_dir, overwrite=True)
95
+ runtime_path.delete(sure=True, verbose=False)
96
+ print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
97
+ target_runtime = target_config_dir.joinpath("runtime")
98
+ target_runtime.mkdir(parents=True, exist_ok=True)
99
+
100
+ # iterate runtime children and copy selectively
101
+ for child in runtime.iterdir():
102
+ # skip non-existent or weird entries
103
+ if not child.exists():
104
+ continue
105
+ if child.name == "grammars":
106
+ # copy only the specific language files from runtime/grammars if they exist
107
+ for a_language in LANGUAGES_SUPPORTED_GRAMMER:
108
+ lang_file = child.joinpath(a_language)
109
+ if lang_file.exists() and lang_file.is_file():
110
+ dest = target_runtime.joinpath("grammars")
111
+ lang_file.copy(folder=dest, overwrite=True)
112
+ else:
113
+ # copy the whole child (file or directory) into target_runtime
114
+ # for directories, copy will create target_runtime/<child.name>
115
+ try:
116
+ child.copy(folder=target_runtime, overwrite=True)
117
+ except Exception:
118
+ # fallback: try copying contents if it's a directory
119
+ if child.is_dir():
120
+ for sub in child.iterdir():
121
+ sub.copy(folder=target_runtime.joinpath(child.name), overwrite=True)
81
122
  system_name = "Linux" if platform.system() == "Linux" else "macOS"
82
123
  console.print(
83
124
  Panel(
@@ -93,9 +134,34 @@ def main(version: Optional[str], install_lib: bool = False):
93
134
  target_bin_path = PathExtended(WINDOWS_INSTALL_PATH)
94
135
  exe_name = "hx.exe"
95
136
  hx_file.move(folder=target_bin_path, overwrite=True)
137
+
138
+ # Always install contrib (regardless of install_lib flag)
139
+ contrib_path.delete(sure=True, verbose=False)
140
+ contrib.move(folder=target_config_dir, overwrite=True)
141
+
142
+ # Install runtime only if install_lib is True. Copy selectively as on POSIX.
96
143
  if install_lib:
97
- contrib.move(folder=target_config_dir, overwrite=True)
98
- runtime.move(folder=target_config_dir, overwrite=True)
144
+ runtime_path.delete(sure=True, verbose=False)
145
+ print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
146
+ target_runtime = target_config_dir.joinpath("runtime")
147
+ target_runtime.mkdir(parents=True, exist_ok=True)
148
+
149
+ for child in runtime.iterdir():
150
+ if not child.exists():
151
+ continue
152
+ if child.name == "grammars":
153
+ for a_language in LANGUAGES_SUPPORTED_GRAMMER:
154
+ lang_file = child.joinpath(a_language)
155
+ if lang_file.exists() and lang_file.is_file():
156
+ dest = target_runtime.joinpath("grammars")
157
+ lang_file.copy(folder=dest, overwrite=True)
158
+ else:
159
+ try:
160
+ child.copy(folder=target_runtime, overwrite=True)
161
+ except Exception:
162
+ if child.is_dir():
163
+ for sub in child.iterdir():
164
+ sub.copy(folder=target_runtime.joinpath(child.name), overwrite=True)
99
165
  console.print(
100
166
  Panel(
101
167
  f"""✅ SUCCESS | Helix editor installed successfully on Windows!
@@ -128,4 +194,4 @@ def main(version: Optional[str], install_lib: bool = False):
128
194
 
129
195
 
130
196
  if __name__ == "__main__":
131
- main(version=None)
197
+ pass