machineconfig 6.82__py3-none-any.whl → 8.51__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.
Files changed (461) hide show
  1. machineconfig/cluster/remote/cloud_manager.py +1 -1
  2. machineconfig/cluster/remote/run_cluster.py +1 -1
  3. machineconfig/cluster/remote/run_remote.py +1 -1
  4. machineconfig/cluster/sessions_managers/utils/maker.py +29 -15
  5. machineconfig/cluster/sessions_managers/wt_local.py +17 -222
  6. machineconfig/cluster/sessions_managers/wt_local_manager.py +56 -194
  7. machineconfig/cluster/sessions_managers/wt_remote_manager.py +42 -198
  8. machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
  9. machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
  10. machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
  11. machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
  12. machineconfig/cluster/sessions_managers/zellij_local.py +1 -1
  13. machineconfig/cluster/sessions_managers/zellij_local_manager.py +4 -2
  14. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
  15. machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +2 -2
  16. machineconfig/jobs/installer/checks/check_installations.py +133 -0
  17. machineconfig/jobs/installer/checks/install_utils.py +132 -0
  18. machineconfig/jobs/installer/checks/report_utils.py +39 -0
  19. machineconfig/jobs/installer/checks/vt_utils.py +89 -0
  20. machineconfig/jobs/installer/installer_data.json +1500 -310
  21. machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
  22. machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
  23. machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
  24. machineconfig/jobs/installer/package_groups.py +62 -91
  25. machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
  26. machineconfig/jobs/installer/{custom → python_scripts}/boxes.py +2 -3
  27. machineconfig/jobs/installer/{custom_dev → python_scripts}/brave.py +5 -3
  28. machineconfig/jobs/installer/python_scripts/cloudflare_warp_cli.py +23 -0
  29. machineconfig/jobs/installer/{custom_dev → python_scripts}/code.py +14 -9
  30. machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
  31. machineconfig/jobs/installer/python_scripts/hx.py +214 -0
  32. machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
  33. machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +32 -26
  34. machineconfig/jobs/installer/python_scripts/sysabc.py +145 -0
  35. machineconfig/jobs/installer/{custom_dev → python_scripts}/wezterm.py +2 -19
  36. machineconfig/jobs/installer/{custom_dev → python_scripts}/winget.py +10 -14
  37. machineconfig/jobs/installer/python_scripts/yazi.py +139 -0
  38. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
  39. machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
  40. machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +13 -0
  41. machineconfig/jobs/scripts/powershell_scripts/obs.ps1 +4 -0
  42. machineconfig/jobs/scripts_dynamic/a.py +428 -0
  43. machineconfig/logger.py +1 -2
  44. machineconfig/profile/create_helper.py +56 -18
  45. machineconfig/profile/create_links.py +79 -21
  46. machineconfig/profile/create_links_export.py +87 -36
  47. machineconfig/profile/create_shell_profile.py +92 -127
  48. machineconfig/profile/mapper_data.toml +45 -0
  49. machineconfig/profile/mapper_dotfiles.toml +249 -0
  50. machineconfig/scripts/__init__.py +0 -4
  51. machineconfig/scripts/linux/wrap_mcfg +46 -0
  52. machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
  53. machineconfig/scripts/python/agents.py +85 -165
  54. machineconfig/scripts/python/ai/initai.py +4 -2
  55. machineconfig/scripts/python/ai/scripts/__init__.py +1 -0
  56. machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
  57. machineconfig/scripts/python/ai/{command_runner → scripts}/command_runner.sh +1 -1
  58. machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +2 -0
  59. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +8 -6
  60. machineconfig/scripts/python/ai/solutions/claude/claude.py +1 -1
  61. machineconfig/scripts/python/ai/solutions/cline/cline.py +1 -1
  62. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
  63. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
  64. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
  65. machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +6 -6
  66. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +33 -0
  67. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
  68. machineconfig/scripts/python/ai/solutions/crush/crush.py +1 -1
  69. machineconfig/scripts/python/ai/solutions/cursor/cursors.py +1 -1
  70. machineconfig/scripts/python/ai/solutions/gemini/gemini.py +1 -1
  71. machineconfig/scripts/python/ai/solutions/gemini/settings.json +3 -0
  72. machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
  73. machineconfig/scripts/python/ai/{solutions → utils}/generic.py +2 -15
  74. machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +13 -5
  75. machineconfig/scripts/python/cloud.py +58 -11
  76. machineconfig/scripts/python/croshell.py +10 -162
  77. machineconfig/scripts/python/devops.py +73 -36
  78. machineconfig/scripts/python/devops_navigator.py +16 -6
  79. machineconfig/scripts/python/fire_jobs.py +8 -222
  80. machineconfig/scripts/python/ftpx.py +7 -200
  81. machineconfig/scripts/python/graph/cli_graph.json +8743 -0
  82. machineconfig/scripts/python/{env_manager → helper_env}/path_manager_tui.py +2 -2
  83. machineconfig/scripts/python/helpers/helper_env/env_manager_tui.py +204 -0
  84. machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
  85. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
  86. machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
  87. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
  88. machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
  89. machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
  90. machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
  91. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_launch.py +38 -16
  92. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_helper_types.py +11 -14
  93. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
  94. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
  95. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +1 -0
  96. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +10 -0
  97. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/gemini/settings.json +12 -0
  98. machineconfig/scripts/python/helpers/helpers_agents/privacy/privacy.py +109 -0
  99. machineconfig/scripts/python/helpers/helpers_agents/templates/prompt.txt +10 -0
  100. machineconfig/scripts/python/helpers/helpers_agents/templates/template.sh +34 -0
  101. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_copy.py +32 -25
  102. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_mount.py +29 -22
  103. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_sync.py +9 -8
  104. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers2.py +1 -1
  105. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/crosh.py +3 -3
  106. machineconfig/scripts/python/helpers/helpers_croshell/croshell_impl.py +225 -0
  107. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/scheduler.py +4 -4
  108. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/start_slidev.py +12 -12
  109. machineconfig/scripts/python/helpers/helpers_devops/backup_config.py +149 -0
  110. machineconfig/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +262 -0
  111. machineconfig/scripts/python/helpers/helpers_devops/cli_config.py +98 -0
  112. machineconfig/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +274 -0
  113. machineconfig/scripts/python/helpers/helpers_devops/cli_data.py +67 -0
  114. machineconfig/scripts/python/helpers/helpers_devops/cli_nw.py +201 -0
  115. machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +274 -0
  116. machineconfig/scripts/python/helpers/helpers_devops/cli_self.py +197 -0
  117. machineconfig/scripts/python/helpers/helpers_devops/cli_share_file.py +151 -0
  118. machineconfig/scripts/python/helpers/helpers_devops/cli_share_server.py +125 -0
  119. machineconfig/scripts/python/{helpers_devops/cli_terminal.py → helpers/helpers_devops/cli_share_terminal.py} +26 -22
  120. machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +167 -0
  121. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_status.py +17 -23
  122. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_update_repos.py +1 -1
  123. machineconfig/scripts/python/{interactive.py → helpers/helpers_devops/interactive.py} +78 -71
  124. machineconfig/scripts/python/helpers/helpers_devops/run_script.py +197 -0
  125. machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +41 -0
  126. machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +48 -0
  127. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_wezterm_theme.py +4 -4
  128. machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers/helpers_fire_command/file_wrangler.py} +57 -20
  129. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_args_helper.py +1 -0
  130. machineconfig/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +233 -0
  131. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_route_helper.py +26 -16
  132. machineconfig/scripts/python/helpers/helpers_msearch/__init__.py +5 -0
  133. machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +248 -0
  134. machineconfig/scripts/{linux → python/helpers/helpers_msearch/scripts_linux}/fzfg +6 -5
  135. machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
  136. machineconfig/scripts/python/helpers/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
  137. machineconfig/scripts/python/helpers/helpers_navigator/__init__.py +20 -0
  138. machineconfig/scripts/python/helpers/helpers_navigator/cli_graph_loader.py +234 -0
  139. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/command_builder.py +61 -13
  140. machineconfig/scripts/python/helpers/helpers_navigator/command_detail.py +153 -0
  141. machineconfig/scripts/python/helpers/helpers_navigator/command_tree.py +45 -0
  142. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/data_models.py +18 -11
  143. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/main_app.py +5 -5
  144. machineconfig/scripts/python/helpers/helpers_network/address.py +174 -0
  145. machineconfig/scripts/python/helpers/helpers_network/address_switch.py +78 -0
  146. machineconfig/scripts/python/helpers/helpers_network/ftpx_impl.py +276 -0
  147. machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nfs.py +2 -2
  148. machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_ssh.py +3 -3
  149. machineconfig/scripts/python/helpers/helpers_network/ssh_add_identity.py +73 -0
  150. machineconfig/scripts/python/helpers/helpers_network/ssh_add_ssh_key.py +175 -0
  151. machineconfig/scripts/python/helpers/helpers_network/ssh_debug_linux.py +319 -0
  152. machineconfig/scripts/python/helpers/helpers_network/ssh_debug_windows.py +275 -0
  153. machineconfig/scripts/python/{nw → helpers/helpers_network}/wifi_conn.py +1 -53
  154. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action.py +3 -3
  155. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action_helper.py +3 -3
  156. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/clone.py +0 -1
  157. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/cloud_repo_sync.py +159 -48
  158. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/grource.py +4 -3
  159. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/record.py +33 -12
  160. machineconfig/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +160 -0
  161. machineconfig/scripts/python/{helpers_repos/count_lines.py → helpers/helpers_repos/repo_analyzer_2.py} +156 -191
  162. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/update.py +0 -6
  163. machineconfig/scripts/python/helpers/helpers_search/ast_search.py +74 -0
  164. machineconfig/scripts/python/helpers/helpers_search/qr_code.py +166 -0
  165. machineconfig/scripts/python/helpers/helpers_search/repo_rag.py +325 -0
  166. machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -0
  167. machineconfig/scripts/python/helpers/helpers_search/symantic_search.py +25 -0
  168. machineconfig/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
  169. machineconfig/scripts/python/helpers/helpers_sessions/sessions_impl.py +186 -0
  170. machineconfig/scripts/python/{helpers_sessions → helpers/helpers_sessions}/sessions_multiprocess.py +20 -14
  171. machineconfig/scripts/python/helpers/helpers_terminal/__init__.py +0 -0
  172. machineconfig/scripts/python/helpers/helpers_terminal/terminal_impl.py +96 -0
  173. machineconfig/scripts/python/helpers/helpers_utils/download.py +150 -0
  174. machineconfig/scripts/python/helpers/helpers_utils/pdf.py +96 -0
  175. machineconfig/scripts/python/helpers/helpers_utils/python.py +210 -0
  176. machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
  177. machineconfig/scripts/python/mcfg_entry.py +143 -0
  178. machineconfig/scripts/python/msearch.py +26 -0
  179. machineconfig/scripts/python/sessions.py +69 -135
  180. machineconfig/scripts/python/terminal.py +58 -0
  181. machineconfig/scripts/python/utils.py +115 -38
  182. machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
  183. machineconfig/settings/atuin/config.toml +294 -0
  184. machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
  185. machineconfig/settings/broot/conf.toml +1 -1
  186. machineconfig/settings/helix/config.toml +16 -0
  187. machineconfig/settings/helix/languages.toml +13 -4
  188. machineconfig/settings/helix/yazi-picker.sh +12 -0
  189. machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
  190. machineconfig/settings/lf/linux/exe/previewer.sh +3 -2
  191. machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
  192. machineconfig/settings/lf/windows/lfrc +14 -16
  193. machineconfig/settings/linters/.ruff.toml +2 -1
  194. machineconfig/settings/marimo/marimo.toml +1 -1
  195. machineconfig/settings/marimo/snippets/globalize.py +34 -0
  196. machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
  197. machineconfig/settings/shells/bash/init.sh +47 -12
  198. machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
  199. machineconfig/settings/shells/nushell/config.nu +25 -33
  200. machineconfig/settings/shells/nushell/env.nu +21 -8
  201. machineconfig/settings/shells/nushell/init.nu +138 -0
  202. machineconfig/settings/shells/pwsh/init.ps1 +111 -17
  203. machineconfig/settings/shells/pwsh/search_pwsh_history.ps1 +99 -0
  204. machineconfig/settings/shells/starship/starship.toml +16 -0
  205. machineconfig/settings/shells/wezterm/wezterm.lua +6 -1
  206. machineconfig/settings/shells/wt/settings.json +27 -18
  207. machineconfig/settings/shells/zsh/init.sh +42 -23
  208. machineconfig/settings/television/cable_unix/alias.toml +8 -0
  209. machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
  210. machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
  211. machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
  212. machineconfig/settings/television/cable_unix/channels.toml +19 -0
  213. machineconfig/settings/television/cable_unix/dirs.toml +13 -0
  214. machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
  215. machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
  216. machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
  217. machineconfig/settings/television/cable_unix/env.toml +17 -0
  218. machineconfig/settings/television/cable_unix/files.toml +11 -0
  219. machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
  220. machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
  221. machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
  222. machineconfig/settings/television/cable_unix/git-log.toml +12 -0
  223. machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
  224. machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
  225. machineconfig/settings/television/cable_unix/guix.toml +20 -0
  226. machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
  227. machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
  228. machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
  229. machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
  230. machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
  231. machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
  232. machineconfig/settings/television/cable_unix/procs.toml +20 -0
  233. machineconfig/settings/television/cable_unix/text.toml +17 -0
  234. machineconfig/settings/television/cable_unix/tldr.toml +18 -0
  235. machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
  236. machineconfig/settings/television/cable_windows/alias.toml +7 -0
  237. machineconfig/settings/television/cable_windows/dirs.toml +13 -0
  238. machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
  239. machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
  240. machineconfig/settings/television/cable_windows/env.toml +17 -0
  241. machineconfig/settings/television/cable_windows/files.toml +14 -0
  242. machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
  243. machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
  244. machineconfig/settings/television/cable_windows/git-log.toml +11 -0
  245. machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
  246. machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
  247. machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
  248. machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
  249. machineconfig/settings/television/cable_windows/text.toml +17 -0
  250. machineconfig/settings/tv/config.toml +234 -0
  251. machineconfig/settings/tv/themes/catppuccin-mocha-sky.toml +22 -0
  252. machineconfig/settings/wsl/.wslconfig +5 -30
  253. machineconfig/settings/wt/__init__.py +0 -0
  254. machineconfig/settings/yazi/init.lua +61 -0
  255. machineconfig/settings/yazi/keymap_linux.toml +94 -0
  256. machineconfig/settings/yazi/keymap_windows.toml +78 -0
  257. machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
  258. machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
  259. machineconfig/settings/yazi/theme.toml +4 -0
  260. machineconfig/settings/yazi/yazi_linux.toml +94 -0
  261. machineconfig/settings/yazi/yazi_windows.toml +58 -0
  262. machineconfig/settings/zellij/layouts/st.kdl +40 -9
  263. machineconfig/settings/zellij/layouts/st2.kdl +1 -1
  264. machineconfig/setup_linux/__init__.py +2 -2
  265. machineconfig/setup_linux/apps_desktop.sh +8 -27
  266. machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -12
  267. machineconfig/setup_linux/web_shortcuts/live_from_github.sh +34 -0
  268. machineconfig/setup_mac/__init__.py +1 -4
  269. machineconfig/setup_mac/apps_gui.sh +248 -0
  270. machineconfig/setup_windows/__init__.py +2 -5
  271. machineconfig/setup_windows/uv.ps1 +8 -1
  272. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -12
  273. machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +31 -0
  274. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
  275. machineconfig/type_hinting/sql/__init__.py +1 -0
  276. machineconfig/type_hinting/sql/base.py +216 -0
  277. machineconfig/type_hinting/sql/core_schema.py +64 -0
  278. machineconfig/type_hinting/sql/core_schema_typeddict.py +41 -0
  279. machineconfig/type_hinting/sql/typeddict_codegen.py +222 -0
  280. machineconfig/type_hinting/typedict/__init__.py +1 -0
  281. machineconfig/type_hinting/typedict/ast_utils.py +130 -0
  282. machineconfig/type_hinting/typedict/generator_helpers.py +319 -0
  283. machineconfig/type_hinting/typedict/generators.py +231 -0
  284. machineconfig/type_hinting/typedict/polars_schema.py +24 -0
  285. machineconfig/type_hinting/typedict/polars_schema_typeddict.py +63 -0
  286. machineconfig/utils/accessories.py +31 -4
  287. machineconfig/utils/code.py +163 -51
  288. machineconfig/utils/files/ascii_art.py +11 -15
  289. machineconfig/utils/files/headers.py +6 -7
  290. machineconfig/utils/files/read.py +8 -1
  291. machineconfig/utils/installer_utils/github_release_bulk.py +95 -138
  292. machineconfig/utils/installer_utils/github_release_scraper.py +99 -0
  293. machineconfig/utils/installer_utils/install_from_url.py +183 -0
  294. machineconfig/utils/installer_utils/installer_class.py +53 -102
  295. machineconfig/utils/installer_utils/installer_cli.py +161 -0
  296. machineconfig/utils/installer_utils/installer_helper.py +129 -0
  297. machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +42 -91
  298. machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +20 -65
  299. machineconfig/utils/io.py +94 -9
  300. machineconfig/utils/links.py +56 -38
  301. machineconfig/utils/meta.py +38 -21
  302. machineconfig/utils/options.py +81 -23
  303. machineconfig/utils/options_utils/__init__.py +0 -0
  304. machineconfig/utils/options_utils/options_tv_linux.py +211 -0
  305. machineconfig/utils/options_utils/options_tv_windows.py +88 -0
  306. machineconfig/utils/options_utils/tv_options.py +37 -0
  307. machineconfig/utils/path_extended.py +52 -102
  308. machineconfig/utils/path_helper.py +76 -23
  309. machineconfig/utils/procs.py +1 -1
  310. machineconfig/utils/scheduler.py +26 -53
  311. machineconfig/utils/scheduling.py +0 -2
  312. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
  313. machineconfig/utils/schemas/layouts/layout_types.py +1 -1
  314. machineconfig/utils/source_of_truth.py +6 -1
  315. machineconfig/utils/ssh.py +216 -419
  316. machineconfig/utils/ssh_utils/abc.py +5 -0
  317. machineconfig/utils/ssh_utils/copy_from_here.py +116 -0
  318. machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
  319. machineconfig/utils/ssh_utils/utils.py +158 -0
  320. machineconfig/utils/ssh_utils/wsl.py +147 -0
  321. machineconfig/utils/ssh_utils/wsl_helper.py +217 -0
  322. machineconfig/utils/terminal.py +1 -0
  323. machineconfig/utils/upgrade_packages.py +107 -35
  324. machineconfig/utils/ve.py +12 -4
  325. machineconfig-8.51.dist-info/METADATA +140 -0
  326. machineconfig-8.51.dist-info/RECORD +543 -0
  327. {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/entry_points.txt +4 -1
  328. machineconfig/jobs/installer/check_installations.py +0 -248
  329. machineconfig/jobs/installer/custom/hx.py +0 -140
  330. machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
  331. machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
  332. machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
  333. machineconfig/jobs/installer/powershell_scripts/openssh-server_add_key.ps1 +0 -7
  334. machineconfig/jobs/installer/powershell_scripts/openssh-server_copy-ssh-id.ps1 +0 -14
  335. machineconfig/profile/backup.toml +0 -49
  336. machineconfig/profile/mapper.toml +0 -256
  337. machineconfig/scripts/linux/fzf2g +0 -21
  338. machineconfig/scripts/linux/fzfag +0 -17
  339. machineconfig/scripts/linux/fzffg +0 -25
  340. machineconfig/scripts/linux/fzfrga +0 -21
  341. machineconfig/scripts/linux/mcfgs +0 -38
  342. machineconfig/scripts/linux/other/share_smb +0 -1
  343. machineconfig/scripts/linux/other/switch_ip +0 -20
  344. machineconfig/scripts/linux/skrg +0 -4
  345. machineconfig/scripts/linux/warp-cli.sh +0 -122
  346. machineconfig/scripts/linux/z_ls +0 -104
  347. machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
  348. machineconfig/scripts/python/helpers_devops/cli_config.py +0 -120
  349. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -77
  350. machineconfig/scripts/python/helpers_devops/cli_data.py +0 -25
  351. machineconfig/scripts/python/helpers_devops/cli_nw.py +0 -73
  352. machineconfig/scripts/python/helpers_devops/cli_repos.py +0 -181
  353. machineconfig/scripts/python/helpers_devops/cli_self.py +0 -122
  354. machineconfig/scripts/python/helpers_devops/cli_share_server.py +0 -104
  355. machineconfig/scripts/python/helpers_devops/cli_utils.py +0 -221
  356. machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +0 -80
  357. machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +0 -3
  358. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -37
  359. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -44
  360. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -43
  361. machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
  362. machineconfig/scripts/python/helpers_fire/template.sh +0 -15
  363. machineconfig/scripts/python/helpers_navigator/__init__.py +0 -20
  364. machineconfig/scripts/python/helpers_navigator/command_detail.py +0 -44
  365. machineconfig/scripts/python/helpers_navigator/command_tree.py +0 -588
  366. machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +0 -17
  367. machineconfig/scripts/python/helpers_repos/entrypoint.py +0 -76
  368. machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
  369. machineconfig/scripts/python/mcfg.py +0 -48
  370. machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
  371. machineconfig/scripts/python/nw/devops_add_identity.py +0 -82
  372. machineconfig/scripts/python/nw/devops_add_ssh_key.py +0 -134
  373. machineconfig/scripts/python/nw/ssh_debug_linux.py +0 -391
  374. machineconfig/scripts/python/nw/ssh_debug_windows.py +0 -338
  375. machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
  376. machineconfig/scripts/windows/fzfb.ps1 +0 -3
  377. machineconfig/scripts/windows/fzfg.ps1 +0 -2
  378. machineconfig/scripts/windows/fzfrga.bat +0 -20
  379. machineconfig/scripts/windows/mcfgs.ps1 +0 -17
  380. machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -13
  381. machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
  382. machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
  383. machineconfig/settings/lf/windows/tst.ps1 +0 -1
  384. machineconfig/settings/yazi/yazi.toml +0 -4
  385. machineconfig/setup_linux/apps.sh +0 -66
  386. machineconfig/setup_linux/others/cli_installation.sh +0 -137
  387. machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -30
  388. machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
  389. machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
  390. machineconfig/setup_mac/apps.sh +0 -73
  391. machineconfig/setup_mac/ssh/openssh_setup.sh +0 -114
  392. machineconfig/setup_windows/apps.ps1 +0 -62
  393. machineconfig/setup_windows/others/obs.ps1 +0 -4
  394. machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
  395. machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
  396. machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
  397. machineconfig/utils/installer_utils/installer.py +0 -225
  398. machineconfig/utils/tst.py +0 -20
  399. machineconfig-6.82.dist-info/METADATA +0 -82
  400. machineconfig-6.82.dist-info/RECORD +0 -441
  401. machineconfig/jobs/installer/{custom_dev → checks}/__init__.py +0 -0
  402. machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
  403. machineconfig/{scripts/python/helpers_cloud → jobs/installer/python_scripts}/__init__.py +0 -0
  404. machineconfig/jobs/installer/{custom_dev → python_scripts}/alacritty.py +0 -0
  405. machineconfig/jobs/installer/{custom_dev → python_scripts}/bypass_paywall.py +0 -0
  406. machineconfig/jobs/installer/{custom_dev → python_scripts}/cursor.py +0 -0
  407. machineconfig/jobs/installer/{custom_dev → python_scripts}/espanso.py +0 -0
  408. machineconfig/jobs/installer/{custom → python_scripts}/gh.py +0 -0
  409. machineconfig/jobs/installer/{custom_dev → python_scripts}/goes.py +0 -0
  410. machineconfig/jobs/installer/{custom_dev → python_scripts}/lvim.py +0 -0
  411. machineconfig/jobs/installer/{custom_dev → python_scripts}/redis.py +0 -0
  412. machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/android.sh +0 -0
  413. machineconfig/jobs/{installer/linux_scripts → scripts/bash_scripts}/lid.sh +0 -0
  414. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_drive +0 -0
  415. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nw_drive +0 -0
  416. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_smb +0 -0
  417. machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_cloud.sh +0 -0
  418. machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_nfs +0 -0
  419. machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/start_docker +0 -0
  420. machineconfig/{scripts → jobs/scripts/powershell_scripts}/Restore-ThunderbirdProfile.ps1 +0 -0
  421. machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/docker.ps1 +0 -0
  422. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nfs.ps1 +0 -0
  423. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nw.ps1 +0 -0
  424. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_smb.ps1 +0 -0
  425. machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/power_options.ps1 +0 -0
  426. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_cloud.cmd +0 -0
  427. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_smb.ps1 +0 -0
  428. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/unlock_bitlocker.ps1 +0 -0
  429. machineconfig/scripts/python/{helpers_croshell → ai/utils}/__init__.py +0 -0
  430. machineconfig/scripts/python/ai/{solutions/_shared.py → utils/shared.py} +0 -0
  431. machineconfig/scripts/python/{helpers_devops → graph}/__init__.py +0 -0
  432. machineconfig/scripts/python/{helpers_devops/themes → helpers}/__init__.py +0 -0
  433. machineconfig/scripts/python/{env_manager → helpers/helper_env}/__init__.py +0 -0
  434. machineconfig/scripts/python/{env_manager → helpers/helper_env}/path_manager_backend.py +0 -0
  435. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/__init__.py +0 -0
  436. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/__init__.py +0 -0
  437. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_search.py +0 -0
  438. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_load_balancer.py +0 -0
  439. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents/templates}/template.ps1 +0 -0
  440. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_cloud}/__init__.py +0 -0
  441. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_helpers.py +1 -1
  442. /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers5.py +0 -0
  443. /machineconfig/scripts/python/{helpers_sessions → helpers/helpers_croshell}/__init__.py +0 -0
  444. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/pomodoro.py +0 -0
  445. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer.py +0 -0
  446. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer_template.py +0 -0
  447. /machineconfig/scripts/python/{nw → helpers/helpers_devops}/__init__.py +0 -0
  448. /machineconfig/{setup_windows/wt_and_pwsh → scripts/python/helpers/helpers_devops/themes}/__init__.py +0 -0
  449. /machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
  450. /machineconfig/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_fire_command/__init__.py} +0 -0
  451. /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/cloud_manager.py +0 -0
  452. /machineconfig/scripts/python/{helpers_fire_command/fire_jobs_streamlit_helper.py → helpers/helpers_fire_command/f.py} +0 -0
  453. /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
  454. /machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/search_bar.py +0 -0
  455. /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers/helpers_network/__init__.py} +0 -0
  456. /machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nw_drive.py +0 -0
  457. /machineconfig/scripts/python/{nw → helpers/helpers_network}/onetimeshare.py +0 -0
  458. /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/sync.py +0 -0
  459. /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
  460. {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/WHEEL +0 -0
  461. {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,214 @@
1
+ """
2
+ Installers do not add runtime files to the machine, hence this script.
3
+ """
4
+
5
+ from machineconfig.utils.path_extended import PathExtended
6
+ from machineconfig.utils.installer_utils.installer_locator_utils import WINDOWS_INSTALL_PATH
7
+ from typing import Optional
8
+ import platform
9
+
10
+ from machineconfig.utils.installer_utils.installer_locator_utils import LINUX_INSTALL_PATH
11
+ from machineconfig.utils.installer_utils.installer_class import Installer
12
+ from rich.console import Console
13
+ from rich.panel import Panel
14
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData
15
+
16
+
17
+ LANGUAGES_SUPPORTED = ["python", "nu", "bash", "lua", "powershell", "json", "json5", "toml", "ini", "yaml", "markdown", "markdoc", "markdown_inline"]
18
+ config_dict: InstallerData = {
19
+ "appName": "hx",
20
+ "repoURL": "CMD",
21
+ "doc": "Helix is a post-modern modal text editor.",
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
+ },
34
+ }
35
+
36
+
37
+ def main(installer_data: InstallerData, version: Optional[str], install_lib: bool = True):
38
+ _ = installer_data
39
+ console = Console()
40
+
41
+ console.print(Panel(f"HELIX EDITOR INSTALLER 🧬\nPlatform: {platform.system()}\nVersion: {'latest' if version is None else version}", title="Installer", expand=False))
42
+
43
+ config_dict_copy = config_dict.copy()
44
+ config_dict_copy["repoURL"] = "https://github.com/helix-editor/helix"
45
+ inst = Installer(installer_data=config_dict_copy)
46
+
47
+ print("\n📥 [Step 1/5] Downloading Helix editor...")
48
+ downloaded, _version_to_be_installed = inst.binary_download(version=version)
49
+ print(" ✨ Download complete.")
50
+
51
+ print("\n🔍 [Step 2/5] Locating executable and components...")
52
+ if platform.system() == "Windows":
53
+ hx_file_search = [p for p in downloaded.rglob("hx.exe") if p.is_file()]
54
+ else:
55
+ hx_file_search = [p for p in downloaded.rglob("hx") if p.is_file()]
56
+
57
+ if not hx_file_search:
58
+ console.print(Panel("❌ ERROR: Could not find 'hx' executable in downloaded files.", title="Error", expand=False))
59
+ raise FileNotFoundError(f"Could not find 'hx' executable in {downloaded.name}")
60
+
61
+ assert len(hx_file_search) == 1, f"Expected 1 'hx' executable, found {len(hx_file_search)}"
62
+
63
+ hx_file = hx_file_search[0]
64
+ contrib = hx_file.parent / "contrib"
65
+ runtime = contrib.parent / "runtime"
66
+
67
+ if not runtime.exists():
68
+ console.print(Panel(f"❌ ERROR: 'runtime' directory not found at expected location: {runtime}", title="Error", expand=False))
69
+ raise FileNotFoundError(f"'runtime' directory not found at expected location: {runtime}")
70
+ if not contrib.exists():
71
+ console.print(Panel(f"❌ ERROR: 'contrib' directory not found at expected location: {contrib}", title="Error", expand=False))
72
+ raise FileNotFoundError(f"'contrib' directory not found at expected location: {contrib}")
73
+ print(" ✨ Executable and components located.")
74
+
75
+ print("\n🗑️ [Step 3/5] Cleaning up previous installation (if any)...")
76
+ if platform.system() in ["Linux", "Darwin"]:
77
+ runtime_path = PathExtended.home().joinpath(".config/helix/runtime")
78
+ contrib_path = PathExtended.home().joinpath(".config/helix/contrib")
79
+ target_config_dir = PathExtended.home().joinpath(".config/helix").expanduser()
80
+ target_config_dir.mkdir(parents=True, exist_ok=True)
81
+ elif platform.system() == "Windows":
82
+ runtime_path = PathExtended.home().joinpath("AppData/Roaming/helix/runtime")
83
+ contrib_path = PathExtended.home().joinpath("AppData/Roaming/helix/contrib")
84
+ target_config_dir = PathExtended.home().joinpath("AppData/Roaming/helix").expanduser()
85
+ target_config_dir.mkdir(parents=True, exist_ok=True)
86
+ else:
87
+ console.print(
88
+ Panel(
89
+ f"""⚠️ WARNING | Unsupported operating system: {platform.system()}
90
+ | Installation aborted.""",
91
+ title="Warning",
92
+ expand=False,
93
+ )
94
+ )
95
+ print("\n🧹 [Step 5/5] Cleaning up temporary download files...")
96
+ downloaded.delete(sure=True)
97
+ print(" ✨ Cleanup complete.")
98
+ return f"Error: Unsupported OS: {platform.system()}"
99
+
100
+ if platform.system() in ["Linux", "Darwin"]:
101
+ target_bin_path = PathExtended(LINUX_INSTALL_PATH) if platform.system() == "Linux" else PathExtended("/usr/local/bin")
102
+ exe_name = "hx"
103
+ hx_file.move(folder=target_bin_path, overwrite=True)
104
+
105
+ # Always install contrib (regardless of install_lib flag) — treat it like the executable.
106
+ contrib_path.delete(sure=True, verbose=False)
107
+ contrib.move(folder=target_config_dir, overwrite=True)
108
+
109
+ # Install runtime only if install_lib is True. When copying runtime, copy all subfolders
110
+ # except 'grammars' (for which we only copy the specific python.so file if present).
111
+ if install_lib:
112
+ runtime_path.delete(sure=True, verbose=False)
113
+ print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
114
+ target_runtime = target_config_dir.joinpath("runtime")
115
+ target_runtime.mkdir(parents=True, exist_ok=True)
116
+
117
+ # iterate runtime children and copy selectively
118
+ for child in runtime.iterdir():
119
+ # skip non-existent or weird entries
120
+ if not child.exists():
121
+ continue
122
+ if child.name == "grammars":
123
+ # copy only the specific language files from runtime/grammars if they exist
124
+ for a_language in LANGUAGES_SUPPORTED:
125
+ lang_file = child.joinpath(f"{a_language}.so")
126
+ if lang_file.exists() and lang_file.is_file():
127
+ dest = target_runtime.joinpath("grammars")
128
+ lang_file.copy(folder=dest, overwrite=True)
129
+ else:
130
+ # copy the whole child (file or directory) into target_runtime
131
+ # for directories, copy will create target_runtime/<child.name>
132
+ try:
133
+ child.copy(folder=target_runtime, overwrite=True)
134
+ except Exception:
135
+ # fallback: try copying contents if it's a directory
136
+ if child.is_dir():
137
+ for sub in child.iterdir():
138
+ sub.copy(folder=target_runtime.joinpath(child.name), overwrite=True)
139
+ system_name = "Linux" if platform.system() == "Linux" else "macOS"
140
+ console.print(
141
+ Panel(
142
+ f"""✅ SUCCESS | Helix editor installed successfully on {system_name}!
143
+
144
+ 📂 Executable: {target_bin_path / exe_name}
145
+ 🔧 Config: {target_config_dir}""",
146
+ title="Success",
147
+ expand=False,
148
+ )
149
+ )
150
+ elif platform.system() == "Windows":
151
+ target_bin_path = PathExtended(WINDOWS_INSTALL_PATH)
152
+ exe_name = "hx.exe"
153
+ hx_file.move(folder=target_bin_path, overwrite=True)
154
+
155
+ # Always install contrib (regardless of install_lib flag)
156
+ contrib_path.delete(sure=True, verbose=False)
157
+ contrib.move(folder=target_config_dir, overwrite=True)
158
+
159
+ # Install runtime only if install_lib is True. Copy selectively as on POSIX.
160
+ if install_lib:
161
+ runtime_path.delete(sure=True, verbose=False)
162
+ print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
163
+ target_runtime = target_config_dir.joinpath("runtime")
164
+ target_runtime.mkdir(parents=True, exist_ok=True)
165
+
166
+ for child in runtime.iterdir():
167
+ if not child.exists():
168
+ continue
169
+ if child.name == "grammars":
170
+ for a_language in LANGUAGES_SUPPORTED:
171
+ lang_file = child.joinpath(f"{a_language}.dll")
172
+ if lang_file.exists() and lang_file.is_file():
173
+ dest = target_runtime.joinpath("grammars")
174
+ lang_file.copy(folder=dest, overwrite=True)
175
+ else:
176
+ try:
177
+ child.copy(folder=target_runtime, overwrite=True)
178
+ except Exception:
179
+ if child.is_dir():
180
+ for sub in child.iterdir():
181
+ sub.copy(folder=target_runtime.joinpath(child.name), overwrite=True)
182
+ console.print(
183
+ Panel(
184
+ f"""✅ SUCCESS | Helix editor installed successfully on Windows!
185
+ 📂 Executable: {target_bin_path / exe_name}
186
+ 🔧 Config: {target_config_dir}""",
187
+ title="Success",
188
+ expand=False,
189
+ )
190
+ )
191
+ else:
192
+ console.print(
193
+ Panel(
194
+ f"""⚠️ WARNING | Unsupported operating system: {platform.system()}
195
+ | Installation aborted.""",
196
+ title="Warning",
197
+ expand=False,
198
+ )
199
+ )
200
+ print("\n🧹 [Step 5/5] Cleaning up temporary download files...")
201
+ downloaded.delete(sure=True)
202
+ print(" ✨ Cleanup complete.")
203
+ return f"Error: Unsupported OS: {platform.system()}"
204
+
205
+ print("\n🧹 [Step 5/5] Cleaning up temporary download files...")
206
+ downloaded.delete(sure=True)
207
+ print(" ✨ Cleanup complete.")
208
+
209
+ console.print(Panel("🎉 Installation Finished Successfully! 🎉", title="Finished", expand=False))
210
+ return ""
211
+
212
+
213
+ if __name__ == "__main__":
214
+ pass
@@ -32,7 +32,7 @@ def main(installer_data: InstallerData, version: Optional[str]) -> None:
32
32
 
33
33
  if current_platform == "Windows":
34
34
  console.print("🪟 Installing Nerd Fonts on Windows...", style="bold")
35
- from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
35
+ from machineconfig.jobs.installer.python_scripts.nerfont_windows_helper import install_nerd_fonts
36
36
 
37
37
  try:
38
38
  install_nerd_fonts()
@@ -108,4 +108,4 @@ def main(installer_data: InstallerData, version: Optional[str]) -> None:
108
108
 
109
109
 
110
110
  if __name__ == "__main__":
111
- pass
111
+ main(1, None) # type: ignore
@@ -13,12 +13,12 @@ from rich.console import Console
13
13
  from rich.panel import Panel
14
14
 
15
15
  from machineconfig.utils.path_extended import PathExtended
16
+ from machineconfig.utils.accessories import randstr
16
17
  from machineconfig.utils.source_of_truth import LIBRARY_ROOT
17
18
  from machineconfig.utils.installer_utils.installer_class import Installer
18
19
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
19
20
 
20
21
 
21
- # Nerd Fonts installer configuration data
22
22
  nerd_fonts: InstallerData = {
23
23
  "appName": "Cascadia Code Nerd Font",
24
24
  "repoURL": "https://github.com/ryanoasis/nerd-fonts",
@@ -38,14 +38,6 @@ nerd_fonts: InstallerData = {
38
38
  }
39
39
 
40
40
 
41
- # Patterns to match any installed variant (NF, Nerd Font, Mono, Propo, style weights) of Cascadia/Caskaydia
42
- # We'll compile them at runtime for flexibility. Keep them simple to avoid false positives.
43
- # REQUIRED_FONT_PATTERNS: tuple[str, ...] = (
44
- # r"caskaydiacove.*(nf|nerd ?font)",
45
- # r"cascadiacode.*(nf|nerd ?font)"
46
- # )
47
-
48
-
49
41
  console = Console()
50
42
 
51
43
 
@@ -80,22 +72,28 @@ def _list_installed_fonts() -> list[str]:
80
72
 
81
73
 
82
74
  def _missing_required_fonts(installed_fonts: Iterable[str]) -> list[str]:
83
- """Check which required font patterns are missing from installed fonts.
84
-
75
+ """Check which feature fonts are missing from installed fonts.
76
+
85
77
  Args:
86
78
  installed_fonts: List of installed font names
87
-
79
+
88
80
  Returns:
89
- List of missing font patterns
81
+ List of descriptions for missing font groups
90
82
  """
91
- import re
92
83
 
93
- installed_norm = [f.lower().replace(" ", "") for f in installed_fonts]
84
+ def _normalize(name: str) -> str:
85
+ return name.lower().replace(" ", "").replace("_", "")
86
+
87
+ installed_norm = [_normalize(font) for font in installed_fonts]
88
+ requirements: list[tuple[str, str]] = [
89
+ ("cascadiacode", "Cascadia Code family"),
90
+ ("caskaydiacove", "Caskaydia Cove Nerd Font family"),
91
+ ]
92
+
94
93
  missing: list[str] = []
95
- for pattern in ["cascadiacode*"]:
96
- regex = re.compile(pattern)
97
- if not any(regex.search(f) for f in installed_norm):
98
- missing.append(pattern)
94
+ for needle, label in requirements:
95
+ if not any(needle in font for font in installed_norm):
96
+ missing.append(label)
99
97
  return missing
100
98
 
101
99
 
@@ -125,18 +123,22 @@ def install_nerd_fonts() -> None:
125
123
  console.print(f"🔍 Missing fonts detected: {', '.join(missing)}. Proceeding with installation...")
126
124
  console.print("🔍 Downloading Nerd Fonts package...")
127
125
 
128
- folder, _version_to_be_installed = Installer(installer_data=nerd_fonts).download(version=None)
126
+ folder, _version_to_be_installed = Installer(installer_data=nerd_fonts).binary_download(version=None)
129
127
 
130
128
  console.print("🧹 Cleaning up unnecessary files...")
131
- [p.delete(sure=True) for p in folder.search("*Windows*")]
132
- [p.delete(sure=True) for p in folder.search("*readme*")]
133
- [p.delete(sure=True) for p in folder.search("*LICENSE*")]
129
+ [PathExtended(p).delete(sure=True) for p in folder.glob("*Windows*")]
130
+ [PathExtended(p).delete(sure=True) for p in folder.glob("*readme*")]
131
+ [PathExtended(p).delete(sure=True) for p in folder.glob("*LICENSE*")]
132
+
133
+ print("Fonts to be installed:")
134
+ for font in (list(folder.glob("*.ttf")) + list(folder.glob("*.otf"))):
135
+ print(f" - {font}")
134
136
 
135
137
  console.print("⚙️ Installing fonts via PowerShell...")
136
- file = PathExtended.tmpfile(suffix=".ps1")
138
+ file = PathExtended("~/tmp_results/tmp_files").expanduser().joinpath(f"{randstr()}.ps1")
137
139
  file.parent.mkdir(parents=True, exist_ok=True)
138
-
139
- raw_content = LIBRARY_ROOT.joinpath("jobs/installer/pwsh_scripts/install_fonts.ps1").read_text(encoding="utf-8").replace(r".\fonts-to-be-installed", str(folder))
140
+
141
+ raw_content = LIBRARY_ROOT.joinpath("jobs/installer/powershell_scripts/install_fonts.ps1").read_text(encoding="utf-8").replace(r".\fonts-to-be-installed", str(folder))
140
142
  # PowerShell 5.1 can choke on certain unicode chars in some locales; keep ASCII only.
141
143
  content = "".join(ch for ch in raw_content if ord(ch) < 128)
142
144
  file.write_text(content, encoding="utf-8")
@@ -156,3 +158,7 @@ def install_nerd_fonts() -> None:
156
158
  console.print()
157
159
  render_banner("✅ Nerd Fonts installation complete! ✅", "Nerd Fonts Installer", "green", box.DOUBLE)
158
160
  console.print()
161
+
162
+
163
+ if __name__ == "__main__":
164
+ install_nerd_fonts()
@@ -0,0 +1,145 @@
1
+
2
+
3
+ import platform
4
+ from typing import Optional
5
+ from rich import box
6
+ from rich.console import Console
7
+ from rich.panel import Panel
8
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData
9
+
10
+ ps1 = r"""
11
+ $winget = Get-Command winget -ErrorAction SilentlyContinue
12
+ if (-not $winget) {
13
+ Write-Host "winget not found. Installing..."
14
+ $finalUrl = (Invoke-WebRequest 'https://github.com/microsoft/winget-cli/releases/latest' -UseBasicParsing).BaseResponse.ResponseUri.AbsoluteUri
15
+ $releaseTag = $finalUrl.Split('/')[-1]
16
+ $DownloadUrl = "https://github.com/microsoft/winget-cli/releases/download/$releaseTag/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
17
+ $DestDir = Join-Path $HOME "Downloads"
18
+ $DestFile = Join-Path $DestDir "Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
19
+ # Create folder if it doesn't exist
20
+ if (-not (Test-Path $DestDir)) {
21
+ New-Item -ItemType Directory -Path $DestDir | Out-Null
22
+ }
23
+ Write-Host "Downloading winget installer..."
24
+ # Invoke-WebRequest -Uri $DownloadUrl -OutFile $DestFile
25
+ # Start-BitsTransfer -Source $DownloadUrl -Destination $DestFile #
26
+ #Invoke-WebRequest -Uri $DownloadUrl -OutFile $DestFile -UseBasicParsing
27
+ curl.exe -L -o $DestFile $DownloadUrl
28
+ Write-Host "Saved to: $DestFile"
29
+ # We MUST run Add-AppxPackage in Windows PowerShell
30
+ Write-Host "Installing package via Windows PowerShell..."
31
+ powershell.exe -NoLogo -NoProfile -Command "Add-AppxPackage -Path `"$DestFile`" "
32
+ Write-Host "Installation complete."
33
+ }
34
+ else {
35
+ Write-Host "winget already available. Skipping installation."
36
+ }
37
+
38
+ winget install --no-upgrade --name "Powershell" --Id "Microsoft.PowerShell" --source winget --scope user --accept-package-agreements --accept-source-agreements # powershell require admin
39
+ winget install --no-upgrade --name "Windows Terminal" --Id "Microsoft.WindowsTerminal" --source winget --scope user --accept-package-agreements --accept-source-agreements # Terminal is is installed by default on W 11
40
+ winget install --no-upgrade --name "Git" --Id "Git.Git" --source winget --scope user --accept-package-agreements --accept-source-agreements
41
+ powershell -c "irm bun.sh/install.ps1|iex"
42
+
43
+ # --GROUP:gui:Brave+VSCode+Git+WezTerm
44
+ # --GROUP:dev2:VSRedistrib+VSBuildTools+Codeblocks+GnuWin32: Make+GnuPG+graphviz+WinFsp+SSHFS-win+xming+Node.js+Rustup+Cloudflare+Cloudflare WARP+Microsoft Garage Mouse without Borders
45
+ # --GROUP:user:nu+Chrome+ChromeRemoteDesktop+Zoom+7zip+Firefox+Thunderbird+StreamlabsOBS+OBSStudio+MiKTeX+TexMaker+notepad+++Lapce+TesseractOCR+perl+DB Browser for SQLite+sql server management studio+Adobe Acrobat Reader DC+julia+Chafa+bottom+onefetch+Just+hyperfine+AWS CLI
46
+ # Install-Module -Name Terminal-Icons -Repository PSGallery -Force -AcceptLicense -PassThru -Confirm # -RequiredVersion 2.5.10
47
+ # [System.Environment]::SetEnvironmentVariable('PYTHONUTF8', '1', 'User')
48
+ # [System.Environment]::SetEnvironmentVariable('PYTHONIOENCODING', 'utf-8', 'User')
49
+
50
+
51
+ """
52
+
53
+ zsh = r"""
54
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
55
+ echo "🔄 Updating Homebrew..."
56
+ brew update || true
57
+
58
+ curl -fsSL https://bun.com/install | bash
59
+
60
+ # Note: git and nano are pre-installed on macOS, but we install via Homebrew to ensure latest versions
61
+ # brew install git || true
62
+ # brew install nano || true
63
+ # brew install curl || true
64
+ # nvm install node || true
65
+ # brew install make
66
+ # brew install ffmpeg
67
+ # brew install openssl
68
+
69
+
70
+ echo "✅ Essential tools installation complete."
71
+ """
72
+
73
+ bash = r"""
74
+ sudo apt update -y || true
75
+ sudo apt install nala -y || true
76
+ sudo nala install curl wget gpg lsb-release apt-transport-https -y || true
77
+ sudo nala install git net-tools htop nano -y || true
78
+ sudo nala install build-essential python3-dev -y || true # C build toolchain: Where build-essential brings gcc, make, etc., and python3-dev ensures headers for your Python version.
79
+ # sudo nala install libssl-dev -y
80
+ # sudo nala install libaa-bin -y
81
+
82
+ # curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
83
+ # source ~/.bashrc || true
84
+ # nvm install node || true
85
+
86
+ sudo nala install unzip -y # required by bun installer
87
+ curl -fsSL https://bun.com/install | bash
88
+ . ~/.bashrc || true
89
+ # sudo ln -s $(which bun) /usr/local/bin/node # trick programs that expect node to use bun runtime.
90
+ sudo ln -s ~/.bun/bin/bun /usr/local/bin/node
91
+
92
+
93
+ sudo nala install samba -y || true
94
+ sudo nala install fuse3 -y || true
95
+ sudo nala install nfs-common -y || true
96
+
97
+ # echo 'keyboard-configuration keyboard-configuration/layout select US English' | sudo debconf-set-selections
98
+ # echo 'keyboard-configuration keyboard-configuration/layoutcode string us' | sudo debconf-set-selections
99
+ # sudo DEBIAN_FRONTEND=noninteractive nala install -y cmatrix
100
+ # sudo nala install hollywood -y || true
101
+
102
+ # sudo nala install ffmpeg -y || true # Required by some dev tools
103
+ # sudo nala install make -y || true # Required by LunarVim and SpaceVim
104
+ # (curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) || true
105
+
106
+ """
107
+
108
+
109
+ def main(installer_data: InstallerData, version: Optional[str]) -> None:
110
+ console = Console()
111
+ _ = installer_data
112
+ console.print(
113
+ Panel.fit(
114
+ "\n".join([f"💻 Platform: {platform.system()}", f"🔄 Version: {'latest' if version is None else version}"]),
115
+ title="🔧 ABC Installer",
116
+ border_style="blue",
117
+ box=box.ROUNDED,
118
+ )
119
+ )
120
+
121
+ _ = version
122
+ if platform.system() == "Windows":
123
+ console.print("🪟 Installing ABC on Windows using winget...", style="bold")
124
+ program = ps1
125
+ elif platform.system() == "Linux":
126
+ console.print("🐧 Installing ABC on Linux...", style="bold")
127
+ program = bash
128
+ elif platform.system() == "Darwin":
129
+ console.print("🍎 Installing ABC on macOS...", style="bold")
130
+ program = zsh
131
+ else:
132
+ error_msg = f"Unsupported platform: {platform.system()}"
133
+ console.print(
134
+ Panel.fit(
135
+ "\n".join([error_msg]),
136
+ title="❌ Error",
137
+ subtitle="⚠️ Unsupported platform",
138
+ border_style="red",
139
+ box=box.ROUNDED,
140
+ )
141
+ )
142
+ raise NotImplementedError(error_msg)
143
+ from machineconfig.utils.code import print_code, run_shell_script
144
+ print_code(code=program, lexer="shell", desc="Installation Script Preview")
145
+ run_shell_script(program, display_script=True, clean_env=False)
@@ -9,10 +9,6 @@ from rich.panel import Panel
9
9
 
10
10
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
11
11
 
12
-
13
- # config_dict: InstallerData = {"appName": "Wezterm", "repoURL": "CMD", "doc": "Modern, GPU-accelerated terminal emulator"}
14
-
15
-
16
12
  console = Console()
17
13
 
18
14
 
@@ -35,21 +31,8 @@ def main(installer_data: InstallerData, version: Optional[str]):
35
31
 
36
32
  _ = version
37
33
  if platform.system() == "Windows":
38
- error_msg = "WezTerm installation not supported on Windows through this installer"
39
- console.print(
40
- Panel.fit(
41
- "\n".join(
42
- [
43
- f"❌ ERROR | {error_msg}",
44
- "💡 TIP: Please download and install manually from the WezTerm website",
45
- ]
46
- ),
47
- title="Unsupported Platform",
48
- border_style="red",
49
- padding=(1, 2),
50
- )
51
- )
52
- raise NotImplementedError(error_msg)
34
+ program = """winget install --no-upgrade --name "WezTerm" --Id "wez.wezterm" --source winget --accept-package-agreements --accept-source-agreements
35
+ """
53
36
  elif platform.system() in ["Linux", "Darwin"]:
54
37
  system_name = "LINUX" if platform.system() == "Linux" else "MACOS"
55
38
  console.print(
@@ -3,11 +3,16 @@ import requests
3
3
  import tempfile
4
4
  from pathlib import Path
5
5
  from typing import Optional
6
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData
6
7
 
7
8
 
8
- # config_dict: InstallerData = {"appName": "winget", "repoURL": "CMD", "doc": "winget installer"}
9
- # on older windows, use this to get winget for first time: Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe as per https://learn.microsoft.com/en-us/windows/package-manager/winget/
10
-
9
+ r"""
10
+ # download latest from
11
+ cd $HOME/Downloads
12
+ d u "https://github.com/microsoft/winget-cli/releases/download/v1.12.170-preview/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
13
+ # this must be run in windows powershell, not in pwsh
14
+ Add-AppxPackage .\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
15
+ """
11
16
 
12
17
  def is_winget_available() -> bool:
13
18
  """
@@ -110,7 +115,7 @@ def install_msix_package(package_path: Path) -> bool:
110
115
  return False
111
116
 
112
117
 
113
- def ensure_winget_available() -> bool:
118
+ def main(installer_data: InstallerData, version: Optional[str]) -> bool:
114
119
  """
115
120
  Ensure winget is available on the system. If not available, download and install it.
116
121
 
@@ -118,6 +123,7 @@ def ensure_winget_available() -> bool:
118
123
  bool: True if winget is available (either was already installed or successfully installed),
119
124
  False if installation failed
120
125
  """
126
+ _ = installer_data
121
127
  # First check if winget is already available
122
128
  if is_winget_available():
123
129
  print("Winget is already available on the system.")
@@ -164,13 +170,3 @@ def ensure_winget_available() -> bool:
164
170
  else:
165
171
  print("Installation completed but winget is still not available. You may need to restart your terminal or add it to PATH.")
166
172
  return False
167
-
168
-
169
- if __name__ == "__main__":
170
- # Example usage
171
- print("=== Winget Installation ===\n")
172
-
173
- if ensure_winget_available():
174
- print("Winget is ready to use!")
175
- else:
176
- print("Failed to ensure winget availability.")