machineconfig 5.15__py3-none-any.whl → 7.98__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 (472) hide show
  1. machineconfig/__init__.py +0 -28
  2. machineconfig/cluster/remote/cloud_manager.py +1 -1
  3. machineconfig/cluster/remote/distribute.py +0 -1
  4. machineconfig/cluster/remote/file_manager.py +0 -2
  5. machineconfig/cluster/remote/script_execution.py +0 -1
  6. machineconfig/cluster/sessions_managers/{utils → helpers}/enhanced_command_runner.py +4 -6
  7. machineconfig/cluster/sessions_managers/utils/load_balancer.py +1 -1
  8. machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
  9. machineconfig/cluster/sessions_managers/wt_local.py +114 -289
  10. machineconfig/cluster/sessions_managers/wt_local_manager.py +70 -210
  11. machineconfig/cluster/sessions_managers/wt_remote.py +51 -43
  12. machineconfig/cluster/sessions_managers/wt_remote_manager.py +52 -198
  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 +25 -170
  21. machineconfig/cluster/sessions_managers/zellij_remote.py +40 -41
  22. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +16 -12
  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 +2 -3
  32. machineconfig/jobs/installer/custom/boxes.py +61 -0
  33. machineconfig/jobs/installer/custom/hx.py +76 -19
  34. machineconfig/jobs/installer/custom/yazi.py +119 -0
  35. machineconfig/jobs/installer/custom_dev/alacritty.py +4 -4
  36. machineconfig/jobs/installer/custom_dev/brave.py +5 -9
  37. machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
  38. machineconfig/jobs/installer/custom_dev/code.py +4 -1
  39. machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
  40. machineconfig/jobs/installer/custom_dev/nerdfont.py +1 -1
  41. machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +33 -28
  42. machineconfig/jobs/installer/custom_dev/sysabc.py +139 -0
  43. machineconfig/jobs/installer/custom_dev/wezterm.py +2 -19
  44. machineconfig/jobs/installer/custom_dev/winget.py +10 -14
  45. machineconfig/jobs/installer/installer_data.json +1487 -229
  46. machineconfig/jobs/installer/linux_scripts/brave.sh +4 -14
  47. machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +5 -17
  48. machineconfig/jobs/installer/linux_scripts/docker.sh +5 -17
  49. machineconfig/jobs/installer/linux_scripts/docker_start.sh +6 -14
  50. machineconfig/jobs/installer/linux_scripts/edge.sh +3 -11
  51. machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
  52. machineconfig/jobs/installer/linux_scripts/nerdfont.sh +5 -17
  53. machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
  54. machineconfig/jobs/installer/linux_scripts/q.sh +10 -6
  55. machineconfig/jobs/installer/linux_scripts/redis.sh +6 -17
  56. machineconfig/jobs/installer/linux_scripts/vscode.sh +5 -17
  57. machineconfig/jobs/installer/linux_scripts/wezterm.sh +4 -12
  58. machineconfig/jobs/installer/package_groups.py +106 -177
  59. machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
  60. machineconfig/logger.py +0 -1
  61. machineconfig/profile/backup.toml +49 -0
  62. machineconfig/profile/bash_shell_profiles.md +11 -0
  63. machineconfig/profile/create_helper.py +62 -0
  64. machineconfig/profile/create_links.py +288 -0
  65. machineconfig/profile/create_links_export.py +100 -0
  66. machineconfig/profile/create_shell_profile.py +147 -0
  67. machineconfig/profile/mapper.toml +263 -0
  68. machineconfig/scripts/__init__.py +0 -4
  69. machineconfig/scripts/linux/{share_cloud.sh → other/share_cloud.sh} +14 -25
  70. machineconfig/scripts/linux/wrap_mcfg +46 -0
  71. machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
  72. machineconfig/scripts/python/agents.py +123 -117
  73. machineconfig/scripts/python/ai/initai.py +3 -28
  74. machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
  75. machineconfig/scripts/python/ai/scripts/command_runner.sh +9 -0
  76. machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +17 -18
  77. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +17 -18
  78. machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
  79. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
  80. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
  81. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
  82. machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +5 -5
  83. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +5 -1
  84. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
  85. machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
  86. machineconfig/scripts/python/ai/solutions/generic.py +28 -5
  87. machineconfig/scripts/python/ai/utils/generate_files.py +348 -0
  88. machineconfig/scripts/python/ai/utils/vscode_tasks.py +37 -0
  89. machineconfig/scripts/python/cloud.py +29 -0
  90. machineconfig/scripts/python/croshell.py +137 -113
  91. machineconfig/scripts/python/devops.py +61 -101
  92. machineconfig/scripts/python/devops_navigator.py +6 -0
  93. machineconfig/scripts/python/env_manager/__init__.py +1 -0
  94. machineconfig/scripts/python/env_manager/env_manager_tui.py +204 -0
  95. machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
  96. machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
  97. machineconfig/scripts/python/fire_jobs.py +110 -150
  98. machineconfig/scripts/python/ftpx.py +51 -24
  99. machineconfig/scripts/python/helpers/ast_search.py +74 -0
  100. machineconfig/scripts/python/helpers/qr_code.py +166 -0
  101. machineconfig/scripts/python/helpers/repo_rag.py +325 -0
  102. machineconfig/scripts/python/helpers/run_py_script.py +79 -0
  103. machineconfig/scripts/python/helpers/symantic_search.py +25 -0
  104. machineconfig/scripts/python/helpers/tmp_py_scripts/a.py +26 -0
  105. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +14 -0
  106. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
  107. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
  108. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
  109. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
  110. machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +126 -0
  111. machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +41 -0
  112. machineconfig/scripts/python/helpers_agents/templates/prompt.txt +10 -0
  113. machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
  114. machineconfig/scripts/python/helpers_agents/templates/template.sh +32 -0
  115. machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +30 -23
  116. machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +29 -35
  117. machineconfig/scripts/python/{cloud_sync.py → helpers_cloud/cloud_sync.py} +12 -18
  118. machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +1 -1
  119. machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
  120. machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +8 -9
  121. machineconfig/scripts/python/helpers_devops/cli_config.py +105 -0
  122. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
  123. machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
  124. machineconfig/scripts/python/helpers_devops/cli_nw.py +214 -0
  125. machineconfig/scripts/python/helpers_devops/cli_repos.py +215 -0
  126. machineconfig/scripts/python/helpers_devops/cli_self.py +172 -0
  127. machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
  128. machineconfig/scripts/python/helpers_devops/cli_share_server.py +142 -0
  129. machineconfig/scripts/python/{share_terminal.py → helpers_devops/cli_share_terminal.py} +45 -35
  130. machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
  131. machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
  132. machineconfig/scripts/python/helpers_devops/devops_status.py +499 -0
  133. machineconfig/scripts/python/{devops_update_repos.py → helpers_devops/devops_update_repos.py} +68 -49
  134. machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
  135. machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
  136. machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +3 -3
  137. machineconfig/scripts/python/helpers_fire_command/__init__.py +0 -0
  138. machineconfig/scripts/python/helpers_fire_command/f.py +0 -0
  139. machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +56 -20
  140. machineconfig/scripts/python/{fire_jobs_args_helper.py → helpers_fire_command/fire_jobs_args_helper.py} +5 -1
  141. machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +121 -0
  142. machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
  143. machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
  144. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +3 -3
  145. machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
  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_network/__init__.py +0 -0
  154. machineconfig/scripts/python/helpers_network/address.py +132 -0
  155. machineconfig/scripts/python/{devops_add_identity.py → helpers_network/devops_add_identity.py} +0 -2
  156. machineconfig/scripts/python/helpers_network/devops_add_ssh_key.py +153 -0
  157. machineconfig/scripts/{linux → python/helpers_network}/mount_nfs +0 -1
  158. machineconfig/scripts/python/{mount_nfs.py → helpers_network/mount_nfs.py} +3 -3
  159. machineconfig/scripts/{linux → python/helpers_network}/mount_nw_drive +1 -2
  160. machineconfig/scripts/python/{mount_ssh.py → helpers_network/mount_ssh.py} +3 -3
  161. machineconfig/scripts/python/{onetimeshare.py → helpers_network/onetimeshare.py} +0 -1
  162. machineconfig/scripts/python/helpers_network/ssh_debug_linux.py +391 -0
  163. machineconfig/scripts/python/helpers_network/ssh_debug_windows.py +338 -0
  164. machineconfig/scripts/python/{wifi_conn.py → helpers_network/wifi_conn.py} +1 -53
  165. machineconfig/scripts/python/{wsl_windows_transfer.py → helpers_network/wsl_windows_transfer.py} +5 -4
  166. machineconfig/scripts/python/helpers_repos/action.py +209 -0
  167. machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
  168. machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +2 -3
  169. machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
  170. machineconfig/scripts/python/{repos_helper.py → helpers_repos/entrypoint.py} +9 -17
  171. machineconfig/scripts/python/helpers_repos/grource.py +340 -0
  172. machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +4 -3
  173. machineconfig/scripts/python/helpers_repos/repo_analyzer_1.py +160 -0
  174. machineconfig/scripts/python/{count_lines.py → helpers_repos/repo_analyzer_2.py} +113 -192
  175. machineconfig/scripts/python/helpers_repos/sync.py +66 -0
  176. machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
  177. machineconfig/scripts/python/helpers_sessions/__init__.py +0 -0
  178. machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +65 -0
  179. machineconfig/scripts/python/helpers_utils/download.py +150 -0
  180. machineconfig/scripts/python/helpers_utils/path.py +185 -0
  181. machineconfig/scripts/python/interactive.py +64 -84
  182. machineconfig/scripts/python/mcfg_entry.py +58 -0
  183. machineconfig/scripts/python/msearch.py +71 -0
  184. machineconfig/scripts/python/sessions.py +119 -45
  185. machineconfig/scripts/python/terminal.py +133 -0
  186. machineconfig/scripts/python/utils.py +64 -0
  187. machineconfig/scripts/windows/mounts/Restore-ThunderbirdProfile.ps1 +92 -0
  188. machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
  189. machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
  190. machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
  191. machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
  192. machineconfig/settings/broot/br.sh +0 -4
  193. machineconfig/settings/broot/conf.toml +1 -1
  194. machineconfig/settings/helix/config.toml +16 -0
  195. machineconfig/settings/helix/languages.toml +13 -4
  196. machineconfig/settings/helix/yazi-picker.sh +12 -0
  197. machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
  198. machineconfig/settings/lf/linux/exe/previewer.sh +9 -3
  199. machineconfig/settings/lf/linux/lfrc +10 -12
  200. machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
  201. machineconfig/settings/lf/windows/lfrc +18 -38
  202. machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
  203. machineconfig/settings/linters/.ruff.toml +1 -1
  204. machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
  205. machineconfig/settings/marimo/marimo.toml +80 -0
  206. machineconfig/settings/marimo/snippets/globalize.py +34 -0
  207. machineconfig/settings/pistol/pistol.conf +1 -1
  208. machineconfig/settings/shells/bash/init.sh +82 -31
  209. machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
  210. machineconfig/settings/shells/nushell/config.nu +2 -35
  211. machineconfig/settings/shells/nushell/env.nu +45 -6
  212. machineconfig/settings/shells/nushell/init.nu +314 -0
  213. machineconfig/settings/shells/pwsh/init.ps1 +61 -43
  214. machineconfig/settings/shells/starship/starship.toml +16 -0
  215. machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
  216. machineconfig/settings/shells/wt/settings.json +32 -17
  217. machineconfig/settings/shells/zsh/init.sh +89 -0
  218. machineconfig/settings/svim/linux/init.toml +0 -4
  219. machineconfig/settings/svim/windows/init.toml +0 -3
  220. machineconfig/settings/television/cable_unix/alias.toml +8 -0
  221. machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
  222. machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
  223. machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
  224. machineconfig/settings/television/cable_unix/channels.toml +19 -0
  225. machineconfig/settings/television/cable_unix/dirs.toml +13 -0
  226. machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
  227. machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
  228. machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
  229. machineconfig/settings/television/cable_unix/env.toml +17 -0
  230. machineconfig/settings/television/cable_unix/files.toml +11 -0
  231. machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
  232. machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
  233. machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
  234. machineconfig/settings/television/cable_unix/git-log.toml +12 -0
  235. machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
  236. machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
  237. machineconfig/settings/television/cable_unix/guix.toml +20 -0
  238. machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
  239. machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
  240. machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
  241. machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
  242. machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
  243. machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
  244. machineconfig/settings/television/cable_unix/procs.toml +20 -0
  245. machineconfig/settings/television/cable_unix/text.toml +17 -0
  246. machineconfig/settings/television/cable_unix/tldr.toml +18 -0
  247. machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
  248. machineconfig/settings/television/cable_windows/alias.toml +7 -0
  249. machineconfig/settings/television/cable_windows/dirs.toml +13 -0
  250. machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
  251. machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
  252. machineconfig/settings/television/cable_windows/env.toml +17 -0
  253. machineconfig/settings/television/cable_windows/files.toml +14 -0
  254. machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
  255. machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
  256. machineconfig/settings/television/cable_windows/git-log.toml +11 -0
  257. machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
  258. machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
  259. machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
  260. machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
  261. machineconfig/settings/television/cable_windows/text.toml +17 -0
  262. machineconfig/settings/yazi/init.lua +61 -0
  263. machineconfig/settings/yazi/keymap_linux.toml +94 -0
  264. machineconfig/settings/yazi/keymap_windows.toml +78 -0
  265. machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
  266. machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
  267. machineconfig/settings/yazi/theme.toml +4 -0
  268. machineconfig/settings/yazi/yazi_linux.toml +84 -0
  269. machineconfig/settings/yazi/yazi_windows.toml +58 -0
  270. machineconfig/setup_linux/__init__.py +11 -0
  271. machineconfig/setup_linux/apps_desktop.sh +89 -0
  272. machineconfig/setup_linux/apps_gui.sh +64 -0
  273. machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
  274. machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
  275. machineconfig/setup_linux/uv.sh +15 -0
  276. machineconfig/setup_linux/web_shortcuts/interactive.sh +26 -6
  277. machineconfig/setup_linux/web_shortcuts/live_from_github.sh +31 -0
  278. machineconfig/setup_mac/__init__.py +16 -0
  279. machineconfig/setup_mac/apps_gui.sh +248 -0
  280. machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
  281. machineconfig/setup_mac/uv.sh +36 -0
  282. machineconfig/setup_windows/__init__.py +11 -0
  283. machineconfig/setup_windows/others/power_options.ps1 +7 -0
  284. machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
  285. machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
  286. machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
  287. machineconfig/setup_windows/uv.ps1 +17 -0
  288. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +27 -10
  289. machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +30 -0
  290. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
  291. machineconfig/utils/accessories.py +7 -5
  292. machineconfig/utils/cloud/onedrive/README.md +139 -0
  293. machineconfig/utils/code.py +155 -105
  294. machineconfig/utils/files/art/fat_croco.txt +10 -0
  295. machineconfig/utils/files/art/halfwit_croco.txt +9 -0
  296. machineconfig/utils/files/art/happy_croco.txt +22 -0
  297. machineconfig/utils/files/art/water_croco.txt +11 -0
  298. machineconfig/utils/files/ascii_art.py +1 -1
  299. machineconfig/utils/files/dbms.py +257 -0
  300. machineconfig/utils/files/headers.py +11 -14
  301. machineconfig/utils/files/ouch/__init__.py +0 -0
  302. machineconfig/utils/files/ouch/decompress.py +45 -0
  303. machineconfig/utils/files/read.py +10 -18
  304. machineconfig/utils/installer_utils/github_release_bulk.py +156 -119
  305. machineconfig/utils/installer_utils/install_from_url.py +183 -0
  306. machineconfig/utils/installer_utils/installer_class.py +64 -181
  307. machineconfig/utils/installer_utils/installer_cli.py +175 -0
  308. machineconfig/utils/installer_utils/installer_helper.py +129 -0
  309. machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +66 -97
  310. machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +49 -82
  311. machineconfig/utils/io.py +77 -23
  312. machineconfig/utils/links.py +254 -162
  313. machineconfig/utils/meta.py +256 -0
  314. machineconfig/utils/notifications.py +1 -1
  315. machineconfig/utils/options.py +46 -18
  316. machineconfig/utils/options_tv.py +119 -0
  317. machineconfig/utils/path_extended.py +48 -101
  318. machineconfig/utils/path_helper.py +76 -23
  319. machineconfig/utils/procs.py +50 -70
  320. machineconfig/utils/scheduler.py +88 -124
  321. machineconfig/utils/scheduling.py +0 -3
  322. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
  323. machineconfig/utils/schemas/layouts/layout_types.py +1 -1
  324. machineconfig/utils/source_of_truth.py +3 -6
  325. machineconfig/utils/ssh.py +263 -274
  326. machineconfig/utils/ssh_utils/abc.py +5 -0
  327. machineconfig/utils/ssh_utils/copy_from_here.py +111 -0
  328. machineconfig/utils/ssh_utils/copy_to_here.py +302 -0
  329. machineconfig/utils/ssh_utils/utils.py +142 -0
  330. machineconfig/utils/ssh_utils/wsl.py +210 -0
  331. machineconfig/utils/terminal.py +3 -113
  332. machineconfig/utils/tst.py +20 -0
  333. machineconfig/utils/upgrade_packages.py +114 -28
  334. machineconfig/utils/ve.py +12 -4
  335. machineconfig-7.98.dist-info/METADATA +132 -0
  336. machineconfig-7.98.dist-info/RECORD +504 -0
  337. machineconfig-7.98.dist-info/entry_points.txt +13 -0
  338. machineconfig/cluster/sessions_managers/ffile.py +0 -4
  339. machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -49
  340. machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -85
  341. machineconfig/jobs/linux/msc/cli_agents.sh +0 -16
  342. machineconfig/jobs/python/python_ve_symlink.py +0 -37
  343. machineconfig/jobs/python/vscode/api.py +0 -57
  344. machineconfig/jobs/python/vscode/sync_code.py +0 -73
  345. machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
  346. machineconfig/jobs/windows/start_terminal.ps1 +0 -6
  347. machineconfig/jobs/windows/startup_file.cmd +0 -2
  348. machineconfig/profile/create.py +0 -303
  349. machineconfig/profile/shell.py +0 -176
  350. machineconfig/scripts/cloud/init.sh +0 -119
  351. machineconfig/scripts/linux/agents +0 -2
  352. machineconfig/scripts/linux/choose_wezterm_theme +0 -3
  353. machineconfig/scripts/linux/cloud_copy +0 -2
  354. machineconfig/scripts/linux/cloud_mount +0 -2
  355. machineconfig/scripts/linux/cloud_repo_sync +0 -2
  356. machineconfig/scripts/linux/cloud_sync +0 -2
  357. machineconfig/scripts/linux/croshell +0 -3
  358. machineconfig/scripts/linux/devops +0 -2
  359. machineconfig/scripts/linux/fire +0 -2
  360. machineconfig/scripts/linux/ftpx +0 -2
  361. machineconfig/scripts/linux/fzf2g +0 -21
  362. machineconfig/scripts/linux/fzfag +0 -17
  363. machineconfig/scripts/linux/fzffg +0 -25
  364. machineconfig/scripts/linux/fzfrga +0 -21
  365. machineconfig/scripts/linux/gh_models +0 -2
  366. machineconfig/scripts/linux/initai +0 -2
  367. machineconfig/scripts/linux/kill_process +0 -2
  368. machineconfig/scripts/linux/scheduler +0 -2
  369. machineconfig/scripts/linux/sessions +0 -2
  370. machineconfig/scripts/linux/share_smb +0 -1
  371. machineconfig/scripts/linux/skrg +0 -4
  372. machineconfig/scripts/linux/start_slidev +0 -2
  373. machineconfig/scripts/linux/start_terminals +0 -3
  374. machineconfig/scripts/linux/warp-cli.sh +0 -122
  375. machineconfig/scripts/linux/wifi_conn +0 -2
  376. machineconfig/scripts/linux/z_ls +0 -104
  377. machineconfig/scripts/python/ai/generate_files.py +0 -83
  378. machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
  379. machineconfig/scripts/python/cloud_repo_sync.py +0 -190
  380. machineconfig/scripts/python/count_lines_frontend.py +0 -16
  381. machineconfig/scripts/python/devops_add_ssh_key.py +0 -120
  382. machineconfig/scripts/python/dotfile.py +0 -78
  383. machineconfig/scripts/python/fire_agents_help_launch.py +0 -120
  384. machineconfig/scripts/python/fire_agents_helper_types.py +0 -12
  385. machineconfig/scripts/python/fire_jobs_route_helper.py +0 -65
  386. machineconfig/scripts/python/get_zellij_cmd.py +0 -15
  387. machineconfig/scripts/python/gh_models.py +0 -104
  388. machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -116
  389. machineconfig/scripts/python/repos.py +0 -132
  390. machineconfig/scripts/python/repos_helper_action.py +0 -378
  391. machineconfig/scripts/python/snapshot.py +0 -25
  392. machineconfig/scripts/python/start_terminals.py +0 -121
  393. machineconfig/scripts/python/t4.py +0 -17
  394. machineconfig/scripts/windows/agents.ps1 +0 -1
  395. machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
  396. machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
  397. machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
  398. machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
  399. machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
  400. machineconfig/scripts/windows/croshell.ps1 +0 -1
  401. machineconfig/scripts/windows/devops.ps1 +0 -1
  402. machineconfig/scripts/windows/dotfile.ps1 +0 -1
  403. machineconfig/scripts/windows/fire.ps1 +0 -1
  404. machineconfig/scripts/windows/ftpx.ps1 +0 -1
  405. machineconfig/scripts/windows/fzfb.ps1 +0 -3
  406. machineconfig/scripts/windows/fzfg.ps1 +0 -2
  407. machineconfig/scripts/windows/fzfrga.bat +0 -20
  408. machineconfig/scripts/windows/gpt.ps1 +0 -1
  409. machineconfig/scripts/windows/grep.ps1 +0 -2
  410. machineconfig/scripts/windows/initai.ps1 +0 -1
  411. machineconfig/scripts/windows/kill_process.ps1 +0 -1
  412. machineconfig/scripts/windows/nano.ps1 +0 -3
  413. machineconfig/scripts/windows/pomodoro.ps1 +0 -1
  414. machineconfig/scripts/windows/reload_path.ps1 +0 -3
  415. machineconfig/scripts/windows/scheduler.ps1 +0 -1
  416. machineconfig/scripts/windows/sessions.ps1 +0 -1
  417. machineconfig/scripts/windows/snapshot.ps1 +0 -1
  418. machineconfig/scripts/windows/start_slidev.ps1 +0 -1
  419. machineconfig/scripts/windows/start_terminals.ps1 +0 -1
  420. machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
  421. machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
  422. machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
  423. machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
  424. machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
  425. machineconfig/settings/lf/windows/tst.ps1 +0 -1
  426. machineconfig/settings/yazi/yazi.toml +0 -4
  427. machineconfig/setup_linux/nix/cli_installation.sh +0 -157
  428. machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
  429. machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
  430. machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
  431. machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
  432. machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
  433. machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
  434. machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
  435. machineconfig/utils/ai/generate_file_checklist.py +0 -68
  436. machineconfig/utils/installer_utils/installer.py +0 -189
  437. machineconfig-5.15.dist-info/METADATA +0 -188
  438. machineconfig-5.15.dist-info/RECORD +0 -415
  439. machineconfig-5.15.dist-info/entry_points.txt +0 -18
  440. machineconfig/cluster/sessions_managers/{utils → helpers}/load_balancer_helper.py +0 -0
  441. machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
  442. machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
  443. machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
  444. machineconfig/{jobs/python → scripts/python/ai/utils}/__init__.py +0 -0
  445. machineconfig/scripts/python/{helpers → helpers_agents}/__init__.py +0 -0
  446. machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_agents/agentic_frameworks/__init__.py} +0 -0
  447. machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
  448. machineconfig/scripts/python/{fire_agents_load_balancer.py → helpers_agents/fire_agents_load_balancer.py} +0 -0
  449. machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_cloud/__init__.py} +0 -0
  450. machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
  451. /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
  452. /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_croshell/__init__.py} +0 -0
  453. /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
  454. /machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -0
  455. /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
  456. /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
  457. /machineconfig/scripts/{windows/share_nfs.ps1 → python/helpers_devops/__init__.py} +0 -0
  458. /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers_devops/themes/__init__.py} +0 -0
  459. /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
  460. /machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -0
  461. /machineconfig/scripts/{linux → python/helpers_network}/mount_drive +0 -0
  462. /machineconfig/scripts/python/{mount_nw_drive.py → helpers_network/mount_nw_drive.py} +0 -0
  463. /machineconfig/scripts/{linux → python/helpers_network}/mount_smb +0 -0
  464. /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
  465. /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
  466. /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
  467. /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
  468. /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
  469. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
  470. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
  471. {machineconfig-5.15.dist-info → machineconfig-7.98.dist-info}/WHEEL +0 -0
  472. {machineconfig-5.15.dist-info → machineconfig-7.98.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,185 @@
1
+ import typer
2
+ from typing import Optional, Annotated, Literal, TypedDict, cast
3
+
4
+
5
+ def tui_env(which: Annotated[Literal["PATH", "p", "ENV", "e"], typer.Argument(help="Which environment variable to display.")] = "ENV") -> None:
6
+ """📚 NAVIGATE PATH variable with TUI"""
7
+ from machineconfig.scripts.python import env_manager as navigator
8
+ from pathlib import Path
9
+
10
+ match which:
11
+ case "PATH" | "p":
12
+ path = Path(navigator.__file__).resolve().parent.joinpath("path_manager_tui.py")
13
+ case "ENV" | "e":
14
+ path = Path(navigator.__file__).resolve().parent.joinpath("env_manager_tui.py")
15
+ from machineconfig.utils.code import run_shell_script, get_uv_command_executing_python_script
16
+
17
+ uv_with = ["textual"]
18
+ uv_project_dir = None
19
+ if not Path.home().joinpath("code/machineconfig").exists():
20
+ uv_with.append("machineconfig>=7.98")
21
+ else:
22
+ uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
23
+ run_shell_script(
24
+ get_uv_command_executing_python_script(python_script=path.read_text(encoding="utf-8"), uv_with=uv_with, uv_project_dir=uv_project_dir)[0]
25
+ )
26
+
27
+
28
+ def init_project(
29
+ name: Annotated[Optional[str], typer.Option("--name", "-n", help="Name of the project.")] = None,
30
+ tmp_dir: Annotated[
31
+ bool, typer.Option("--tmp-dir", "-t", help="Use a temporary directory for the project initialization.")
32
+ ] = False,
33
+ python: Annotated[Literal["3.13", "3.14"], typer.Option("--python", "-p", help="Python version for the uv virtual environment.")] = "3.13",
34
+ libraries: Annotated[Optional[str], typer.Option("--libraries", "-l", help="Additional packages to include in the uv virtual environment.")] = None,
35
+ group: Annotated[Optional[str], typer.Option("--group", "-g", help="group of packages names (no separation) p:plot, t:types, l:linting, i:interactive, d:data")] = "ptlid",
36
+ # types_packages: Annotated[
37
+ # bool, typer.Option("--types-packages/--no-types-packages", "-T/-NT", help="Include types packages for better type hinting.")
38
+ # ] = True,
39
+ # linting_debug_packages: Annotated[
40
+ # bool, typer.Option("--linting-debug-packages/--no-linting-debug-packages", "-L/-NL", help="Include linting and debugging packages.")
41
+ # ] = True,
42
+ # ia_packages: Annotated[bool, typer.Option("--ia-packages/--no-ia-packages", "-I/-NI", help="Include interactive and IA packages.")] = True,
43
+ # plot_packages: Annotated[bool, typer.Option("--plot-packages/--no-plot-packages", "-P/-NP", help="Include plotting packages.")] = True,
44
+ # data_packages: Annotated[bool, typer.Option("--data-packages/--no-data-packages", "-D/-ND", help="Include data manipulation packages.")] = True,
45
+
46
+ ) -> None:
47
+ if libraries is not None:
48
+ packages_add_line = f"uv add {libraries}"
49
+ else:
50
+ packages_add_line = ""
51
+ from pathlib import Path
52
+ if not tmp_dir:
53
+ repo_root = Path.cwd()
54
+ if not (repo_root / "pyproject.toml").exists():
55
+ typer.echo(f"❌ Error: pyproject.toml not found in {repo_root}", err=True)
56
+ raise typer.Exit(code=1)
57
+ starting_code = ""
58
+ else:
59
+ if name is not None:
60
+ from machineconfig.utils.accessories import randstr
61
+ repo_root = Path.home().joinpath(f"tmp_results/tmp_projects/{name}")
62
+ else:
63
+ from machineconfig.utils.accessories import randstr
64
+ repo_root = Path.home().joinpath(f"tmp_results/tmp_projects/{randstr(6)}")
65
+ repo_root.mkdir(parents=True, exist_ok=True)
66
+ print(f"Using temporary directory for project initialization: {repo_root}")
67
+ starting_code = f"""
68
+ cd {repo_root}
69
+ uv init --python {python}
70
+ uv venv
71
+ """
72
+ print(f"Adding group `{group}` with common data science and plotting packages...")
73
+ total_packages: list[str] = []
74
+ if group is not None:
75
+ if "t" in group:
76
+ total_packages.append(
77
+ "types-python-dateutil types-pyyaml types-requests types-tqdm types-mysqlclient types-paramiko types-pytz types-sqlalchemy types-toml types-urllib3"
78
+ )
79
+ if "l" in group:
80
+ total_packages.append("mypy pyright ruff pylint pyrefly cleanpy ipdb pudb")
81
+ if "i" in group:
82
+ total_packages.append("ipython ipykernel jupyterlab nbformat marimo")
83
+ if "p" in group:
84
+ total_packages.append("python-magic matplotlib plotly kaleido")
85
+ if "d" in group:
86
+ total_packages.append("numpy pandas polars duckdb-engine sqlalchemy psycopg2-binary pyarrow tqdm openpyxl")
87
+ from machineconfig.utils.ve import get_ve_activate_line
88
+
89
+ script = f"""
90
+ {starting_code}
91
+ {packages_add_line}
92
+ uv add --group {group} {" ".join(total_packages)}
93
+ {get_ve_activate_line(ve_root=str(repo_root.joinpath(".venv")))}
94
+ ls
95
+ """
96
+ from machineconfig.utils.code import exit_then_run_shell_script
97
+
98
+ exit_then_run_shell_script(script)
99
+
100
+
101
+ def edit_file_with_hx(
102
+ path: Annotated[Optional[str], typer.Argument(..., help="The root directory of the project to edit, or a file path.")] = None,
103
+ ) -> None:
104
+ from pathlib import Path
105
+
106
+ if path is None:
107
+ root_path = Path.cwd()
108
+ print(f"No path provided. Using current working directory: {root_path}")
109
+ else:
110
+ root_path = Path(path).expanduser().resolve()
111
+ print(f"Using provided path: {root_path}")
112
+ from machineconfig.utils.accessories import get_repo_root
113
+
114
+ repo_root = get_repo_root(root_path)
115
+ if repo_root is not None and repo_root.joinpath("pyproject.toml").exists():
116
+ code = f"""
117
+ cd {repo_root}
118
+ uv add --dev pylsp-mypy python-lsp-server[all] pyright ruff-lsp # for helix editor.
119
+ source ./.venv/bin/activate
120
+ """
121
+ else:
122
+ code = ""
123
+ if root_path.is_file():
124
+ code += f"hx {root_path}"
125
+ else:
126
+ code += "hx"
127
+ from machineconfig.utils.code import exit_then_run_shell_script
128
+
129
+ exit_then_run_shell_script(code)
130
+
131
+
132
+ class MachineSpecs(TypedDict):
133
+ system: Literal["Windows", "Linux", "Darwin"]
134
+ distro: str
135
+ home_dir: str
136
+ hostname: str
137
+ release: str
138
+ version: str
139
+ machine: str
140
+ processor: str
141
+ python_version: str
142
+ user: str
143
+
144
+
145
+ def get_machine_specs() -> MachineSpecs:
146
+ """Write print and return the local machine specs."""
147
+ import platform
148
+ from machineconfig.utils.code import get_uv_run_command
149
+
150
+ uv_run_cmd = get_uv_run_command(platform=platform.system()) # type: ignore
151
+ command = f"""{uv_run_cmd} --with distro python -c "import distro; print(distro.name(pretty=True))" """
152
+ import subprocess
153
+ from pathlib import Path
154
+ import socket
155
+ import os
156
+
157
+ distro = subprocess.run(command, shell=True, capture_output=True, text=True).stdout.strip()
158
+ system = platform.system()
159
+ if system not in {"Windows", "Linux", "Darwin"}:
160
+ system = "Linux"
161
+ specs: MachineSpecs = {
162
+ "system": cast(Literal["Windows", "Linux", "Darwin"], system),
163
+ "distro": distro,
164
+ "home_dir": str(Path.home()),
165
+ "hostname": socket.gethostname(),
166
+ "release": platform.release(),
167
+ "version": platform.version(),
168
+ "machine": platform.machine(),
169
+ "processor": platform.processor() or "Unknown",
170
+ "python_version": platform.python_version(),
171
+ "user": os.getenv("USER") or os.getenv("USERNAME") or "Unknown",
172
+ }
173
+ print(specs)
174
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT
175
+
176
+ path = CONFIG_ROOT.joinpath("machine_specs.json")
177
+ CONFIG_ROOT.mkdir(parents=True, exist_ok=True)
178
+ import json
179
+
180
+ path.write_text(json.dumps(specs, indent=4), encoding="utf-8")
181
+ return specs
182
+
183
+
184
+ if __name__ == "__main__":
185
+ get_machine_specs()
@@ -19,9 +19,7 @@ for better user experience with checkbox selections.
19
19
 
20
20
  import sys
21
21
  from pathlib import Path
22
- from platform import system
23
- from typing import cast
24
-
22
+ import platform
25
23
  import questionary
26
24
  from questionary import Choice
27
25
  from rich.console import Console
@@ -29,14 +27,42 @@ from rich.panel import Panel
29
27
  from rich.text import Text
30
28
  from machineconfig.utils.code import run_shell_script
31
29
 
32
- _ = cast
33
30
  console = Console()
34
31
 
35
32
 
36
33
  def display_header() -> None:
37
- header_text = Text("MACHINE CONFIGURATION", style="bold magenta")
38
- subtitle_text = Text("Interactive Installation Script", style="italic cyan")
39
- console.print(Panel(f"📦 {header_text}\n{subtitle_text}", border_style="blue", padding=(1, 2)))
34
+ from machineconfig.utils.installer_utils.installer_runner import get_machineconfig_version
35
+ from rich.align import Align
36
+
37
+ # Fancy ASCII art header
38
+ ascii_art = """
39
+ ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
40
+ ║ ║
41
+ ║ ███╗ ███╗ █████╗ ██████╗██╗ ██╗██╗███╗ ██╗███████╗ ██████╗ ██████╗ ███╗ ██╗███████╗██╗ ██████╗ ║
42
+ ║ ████╗ ████║██╔══██╗██╔════╝██║ ██║██║████╗ ██║██╔════╝██╔════╝██╔═══██╗████╗ ██║██╔════╝██║██╔════╝ ║
43
+ ║ ██╔████╔██║███████║██║ ███████║██║██╔██╗ ██║█████╗ ██║ ██║ ██║██╔██╗ ██║█████╗ ██║██║ ███╗ ║
44
+ ║ ██║╚██╔╝██║██╔══██║██║ ██╔══██║██║██║╚██╗██║██╔══╝ ██║ ██║ ██║██║╚██╗██║██╔══╝ ██║██║ ██║ ║
45
+ ║ ██║ ╚═╝ ██║██║ ██║╚██████╗██║ ██║██║██║ ╚████║███████╗╚██████╗╚██████╔╝██║ ╚████║██║ ██║╚██████╔╝ ║
46
+ ║ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═════╝ ║
47
+ ║ ║
48
+ ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
49
+ """
50
+
51
+ version = get_machineconfig_version()
52
+ title = f"✨ MACHINE CONFIGURATION v{version} ✨"
53
+ subtitle = "🎯 Your digital life manager. Dotfiles, data, code and more."
54
+ bug_report = "🐛 Please report bugs to Alex Al-Saffar @ https://github.com/thisismygitrepo/machineconfig"
55
+
56
+ # Print ASCII art
57
+ console.print(Text(ascii_art, style="bold cyan"))
58
+ console.print()
59
+
60
+ # Print centered text elements
61
+ console.print(Align.center(Text(title, style="bold bright_magenta")))
62
+ console.print(Align.center(Text(subtitle, style="italic bright_blue")))
63
+ console.print()
64
+ console.print(Align.center(Text(bug_report, style="dim white")))
65
+ console.print()
40
66
  def display_completion_message() -> None:
41
67
  completion_text = Text("INSTALLATION COMPLETE", style="bold green")
42
68
  subtitle_text = Text("System setup finished successfully", style="italic green")
@@ -67,68 +93,40 @@ def display_dotfiles_instructions() -> None:
67
93
  def get_installation_choices() -> list[str]:
68
94
  """Get user choices for installation options."""
69
95
  choices = [
70
- Choice(value="upgrade_system", title="🔄 Upgrade System Packages - Update all system packages", checked=False),
71
- Choice(value="ESSENTIAL_SYSTEM", title="📥 Install Apps - Install base system applications", checked=False),
72
- Choice(value="ESSENTIAL", title="⚡ Install CLI Apps - Command-line tools installation", checked=False),
73
- Choice(value="DEV_SYSTEM", title="🛠️ Install Development Tools - rust, libssl-dev, ffmpeg, wezterm, brave, code", checked=False),
74
- Choice(value="TerminalEyeCandy", title="🎨 Install ASCII Art Libraries - Terminal visualization tools", checked=False),
75
- Choice(value="install_repos", title="🐍 Install Repos - Set up Python environment and repositories permanently.", checked=False),
76
- Choice(value="install_ssh_server", title="🔒 Install SSH Server - Set up remote access", checked=False),
77
- Choice(value="install_shell_profile", title="🐚 Configure Shell Profile - Source machineconfig shell initialization", checked=False),
78
- Choice(value="create_symlinks", title="🔗 Create Symlinks - Set up configuration symlinks (finish dotfiles transfer first)", checked=False),
79
- Choice(value="retrieve_repositories", title="📚 Retrieve Repositories - Clone repositories to ~/code", checked=False),
80
- Choice(value="retrieve_data", title="💾 Retrieve Data - Backup restoration", checked=False),
96
+ Choice(value="install_machineconfig", title="🐍 Install machineconfig cli.", checked=False),
97
+ Choice(value="sysabc", title="📥 Install System Package Manager (Needed for other apps to be installed).", checked=False),
98
+ Choice(value="termabc", title="⚡ Install Terminal CLI apps essentials (group `termabc`)", checked=False),
99
+ Choice(value="install_shell_profile", title="🐚 Configure Shell Profile And Map Other Configs.", checked=False),
100
+ Choice(value="install_ssh_server", title="🔒 [ADVANCED] Configure SSH Server", checked=False),
101
+ Choice(value="retrieve_repositories", title="📚 [ADVANCED] Retrieve Repositories", checked=False),
102
+ Choice(value="retrieve_data", title="💾 [ADVANCED] Retrieve Data.", checked=False),
81
103
  ]
82
- # Add Windows-specific options
83
- if system() == "Windows":
84
- choices.append(Choice(value="install_windows_desktop", title="💻 Install Windows Desktop Apps - Brave, Windows Terminal, PowerShell, VSCode (Windows only)", checked=False))
85
104
  selected = questionary.checkbox("Select the installation options you want to execute:", choices=choices, show_description=True).ask()
86
105
  return selected or []
87
106
 
88
107
 
89
108
  def execute_installations(selected_options: list[str]) -> None:
90
- if system() == "Windows":
91
- from machineconfig import setup_windows as module
92
- script_path = Path(module.__file__).parent / "ve.ps1"
93
- run_shell_script(script_path.read_text(encoding="utf-8"))
94
- else:
95
- from machineconfig import setup_linux as module
96
- script_path = Path(module.__file__).parent / "ve.sh"
97
- run_shell_script(script_path.read_text(encoding="utf-8"))
98
-
99
109
  for maybe_a_group in selected_options:
100
- if maybe_a_group in ("ESSENTIAL", "DEV", "ESSENTIAL_SYSTEM", "DEV_SYSTEM", "TerminalEyeCandy"):
110
+ if maybe_a_group in ("termabc", "sysabc"):
101
111
  console.print(Panel("⚡ [bold bright_yellow]CLI APPLICATIONS[/bold bright_yellow]\n[italic]Command-line tools installation[/italic]", border_style="bright_yellow"))
102
112
  console.print("🔧 Installing CLI applications", style="bold cyan")
103
113
  try:
104
- from machineconfig.utils.installer_utils.installer import main as devops_devapps_install_main
105
- devops_devapps_install_main(group=maybe_a_group) # type: ignore
114
+ from machineconfig.utils.installer_utils.installer_cli import main_installer_cli as devops_devapps_install_main
115
+ devops_devapps_install_main(group=True, which=maybe_a_group, interactive=False)
106
116
  console.print("✅ CLI applications installed successfully", style="bold green")
107
117
  except Exception as e:
108
118
  console.print(f"❌ Error installing CLI applications: {e}", style="bold red")
109
- run_shell_script(". $HOME/.bashrc")
110
-
111
- if "upgrade_system" in selected_options:
112
- if system() == "Windows":
113
- console.print("❌ System upgrade is not applicable on Windows via this script.", style="bold red")
114
- elif system() == "Linux":
115
- console.print(Panel("🔄 [bold magenta]SYSTEM UPDATE[/bold magenta]\n[italic]Package management[/italic]", border_style="magenta"))
116
- run_shell_script("sudo nala upgrade -y")
117
- else:
118
- console.print(f"❌ System upgrade not supported on {system()}.", style="bold red")
119
- if "install_repos" in selected_options:
119
+ if platform.system() != "Windows":
120
+ run_shell_script(". $HOME/.bashrc")
121
+
122
+ if "install_machineconfig" in selected_options:
120
123
  console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
121
- if system() == "Windows":
122
- from machineconfig import setup_windows as module
123
- script_path = Path(module.__file__).parent / "repos.ps1"
124
- else:
125
- from machineconfig import setup_linux as module
126
- script_path = Path(module.__file__).parent / "repos.sh"
127
- run_shell_script(script_path.read_text(encoding="utf-8"))
124
+ from machineconfig.scripts.python.helpers_devops.cli_self import install
125
+ install()
128
126
 
129
127
  if "install_ssh_server" in selected_options:
130
128
  console.print(Panel("🔒 [bold red]SSH SERVER[/bold red]\n[italic]Remote access setup[/italic]", border_style="red"))
131
- if system() == "Windows":
129
+ if platform.system() == "Windows":
132
130
  powershell_script = """Write-Host "🔧 Installing and configuring SSH server..."
133
131
  Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
134
132
  Start-Service sshd
@@ -141,54 +139,36 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
141
139
  console.print(Panel("🐚 [bold green]SHELL PROFILE[/bold green]\n[italic]Shell configuration setup[/italic]", border_style="green"))
142
140
  console.print("🔧 Configuring shell profile", style="bold cyan")
143
141
  try:
144
- from machineconfig.profile.create import main_profile
145
-
146
- main_profile()
142
+ from machineconfig.profile.create_shell_profile import create_default_shell_profile
143
+ create_default_shell_profile()
147
144
  console.print("✅ Shell profile configured successfully", style="bold green")
145
+ from machineconfig.profile.create_links_export import main_public_from_parser
146
+ main_public_from_parser(method="copy", on_conflict="overwrite-default-path", which="all", interactive=False)
147
+ if platform.system() == "Windows":
148
+ from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
149
+ install_nerd_fonts()
150
+ from machineconfig.setup_windows.wt_and_pwsh.set_wt_settings import main as set_wt_settings_main
151
+ set_wt_settings_main()
148
152
  except Exception as e:
149
153
  console.print(f"❌ Error configuring shell profile: {e}", style="bold red")
150
154
 
151
- if "create_symlinks" in selected_options:
152
- display_dotfiles_instructions()
153
- dotfiles_ready = questionary.confirm("📂 Have you finished copying dotfiles?", default=True).ask()
154
- if dotfiles_ready:
155
- console.print(Panel("🔗 [bold cyan]SYMLINK CREATION[/bold cyan]\n[italic]Configuration setup[/italic]", border_style="cyan"))
156
- console.print("🔧 Creating symlinks", style="bold cyan")
157
- try:
158
- from machineconfig.profile.create import main_symlinks
159
- main_symlinks()
160
- console.print("✅ Symlinks created successfully", style="bold green")
161
- except Exception as e:
162
- console.print(f"❌ Error creating symlinks: {e}", style="bold red")
163
- run_shell_script("sudo chmod 600 $HOME/.ssh/*")
164
- run_shell_script("sudo chmod 700 $HOME/.ssh")
165
- else:
166
- console.print("⏭️ Skipping symlink creation - finish dotfiles transfer first", style="yellow")
167
-
168
155
  if "retrieve_repositories" in selected_options:
169
156
  console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
170
- from machineconfig.scripts.python import repos
171
- repos.clone(directory=str(Path.home() / "code"), cloud="odg1")
157
+ from machineconfig.scripts.python.helpers_devops import cli_repos
158
+ cli_repos.clone(directory=str(Path.home() / "code"), cloud="odg1")
172
159
 
173
160
  if "retrieve_data" in selected_options:
174
161
  console.print(Panel("💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]", border_style="bright_cyan"))
175
162
  console.print("🔧 Retrieving backup data", style="bold cyan")
176
163
  try:
177
- from machineconfig.scripts.python.devops_backup_retrieve import main_backup_retrieve
178
- main_backup_retrieve(direction="RETRIEVE")
164
+ from machineconfig.scripts.python.helpers_devops.devops_backup_retrieve import main_backup_retrieve
165
+ main_backup_retrieve(direction="RETRIEVE", cloud=None, which=None)
179
166
  console.print("✅ Backup data retrieved successfully", style="bold green")
180
167
  except Exception as e:
181
168
  console.print(f"❌ Error retrieving backup data: {e}", style="bold red")
182
169
 
183
- if "install_windows_desktop" in selected_options:
184
- from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
185
- install_nerd_fonts()
186
- from machineconfig.setup_windows.wt_and_pwsh.set_wt_settings import main as set_wt_settings_main
187
- set_wt_settings_main()
188
-
189
170
 
190
171
  def main() -> None:
191
- """Main function to run the interactive installation."""
192
172
  display_header()
193
173
  selected_options = get_installation_choices()
194
174
  if not selected_options:
@@ -199,7 +179,7 @@ def main() -> None:
199
179
  if not proceed:
200
180
  console.print("❌ Installation cancelled.", style="bold red")
201
181
  sys.exit(0)
202
- execute_installations(selected_options)
182
+ execute_installations(selected_options=selected_options)
203
183
  display_completion_message()
204
184
 
205
185
 
@@ -0,0 +1,58 @@
1
+
2
+ from machineconfig.scripts.python.devops import get_app as get_devops_app
3
+ from machineconfig.scripts.python.cloud import get_app as get_cloud_app
4
+ from machineconfig.scripts.python.agents import get_app as get_agents_app
5
+ from machineconfig.scripts.python.sessions import get_app as get_sessions_app
6
+ from machineconfig.scripts.python.utils import get_app as get_utils_app
7
+
8
+ from machineconfig.scripts.python.ftpx import ftpx as ftpx_func
9
+ from machineconfig.scripts.python.croshell import croshell as croshell_func
10
+ from machineconfig.scripts.python.fire_jobs import fire as get_fire_jobs_app
11
+ from machineconfig.scripts.python.terminal import get_app as get_terminal_app
12
+
13
+ def get_app():
14
+ import typer
15
+ app = typer.Typer(help="MachineConfig CLI - Manage your machine configurations and workflows", no_args_is_help=True, add_help_option=False, add_completion=False)
16
+ devops_app = get_devops_app()
17
+ app.add_typer(devops_app, name="devops", help="[d] DevOps related commands", no_args_is_help=True)
18
+ app.add_typer(devops_app, name="d", hidden=True) # short alias
19
+
20
+ cloud_app = get_cloud_app()
21
+ app.add_typer(cloud_app, name="cloud", help="[c] Cloud management commands", no_args_is_help=True)
22
+ app.add_typer(cloud_app, name="c", hidden=True) # short alias
23
+
24
+ sessions_app = get_sessions_app()
25
+ app.add_typer(sessions_app, name="sessions", help="[s] Session and layout management", no_args_is_help=True)
26
+ app.add_typer(sessions_app, name="s", hidden=True) # short alias
27
+
28
+
29
+ agents_app = get_agents_app()
30
+ app.add_typer(agents_app, name="agents", help="[a] 🤖 AI Agents management commands", no_args_is_help=True)
31
+ app.add_typer(agents_app, name="a", hidden=True) # short alias
32
+
33
+ app.command(name="fire", help="[f] Fire and manage jobs", no_args_is_help=False)(get_fire_jobs_app)
34
+ app.command(name="f", hidden=True, no_args_is_help=False)(get_fire_jobs_app)
35
+ app.command("ftpx", no_args_is_help=True, help="[ff] File transfer utility though SSH")(ftpx_func)
36
+ app.command("ff", no_args_is_help=True, hidden=True)(ftpx_func) # short alias
37
+ app.command("croshell", no_args_is_help=False, help="[r] Cross-shell command execution")(croshell_func)
38
+ app.command("r", no_args_is_help=False, hidden=True)(croshell_func) # short alias
39
+
40
+ utils_app = get_utils_app()
41
+ app.add_typer(utils_app, name="utils", help="[u] Utility commands", no_args_is_help=True)
42
+ app.add_typer(utils_app, name="u", hidden=True) # short alias
43
+
44
+
45
+ terminal_app = get_terminal_app()
46
+ app.add_typer(terminal_app, name="terminal", help="[t] Terminal management commands", no_args_is_help=True)
47
+ app.add_typer(terminal_app, name="t", hidden=True) # short alias
48
+
49
+ return app
50
+
51
+
52
+ def main():
53
+ app = get_app()
54
+ app()
55
+
56
+
57
+ if __name__ == "__main__":
58
+ main()
@@ -0,0 +1,71 @@
1
+
2
+ import typer
3
+ from typing import Annotated
4
+
5
+
6
+ def machineconfig_search(
7
+ directory: Annotated[str, typer.Option(..., "--directory", "-d", help="The directory to search")] = ".",
8
+ ast: Annotated[bool, typer.Option(..., "--ast", "-a", help="The abstract syntax tree search/ tree sitter search of symbols")] = False,
9
+ symantic: Annotated[bool, typer.Option(..., "--symantic", "-s", help="The symantic search of symbols")] = False,
10
+ extension: Annotated[str, typer.Option(..., "--extension", "-e", help="File extension to filter by (e.g., .py, .js)")] = "",
11
+ file: Annotated[bool, typer.Option(..., "--file", "-f", help="File search using fzf")] = False,
12
+ no_dotfiles: Annotated[bool, typer.Option(..., "--no-dotfiles", "-D", help="Exclude dotfiles from search")] = False,
13
+ rga: Annotated[bool, typer.Option(..., "--rga", "-a", help="Use ripgrep-all for searching instead of ripgrep")] = False,
14
+ install_dependencies: Annotated[bool, typer.Option(..., "--install-dependencies", "-p", help="Install required dependencies if missing")] = False
15
+ ):
16
+ if install_dependencies:
17
+ from machineconfig.utils.installer_utils.installer_cli import install_if_missing
18
+ install_if_missing("fzf")
19
+ install_if_missing("tv")
20
+ install_if_missing("bat")
21
+ install_if_missing("fd")
22
+ install_if_missing("rg") # ripgrep
23
+ install_if_missing("rga") # ripgrep-all
24
+ # install_if_missing("tree-sitter-cli")
25
+ return
26
+ if symantic:
27
+ script = ""
28
+ for an_ex in extension.split(","):
29
+ script = script + f"""\nparse *.{an_ex} """
30
+ from machineconfig.utils.code import run_shell_script
31
+ run_shell_script(script=script)
32
+ return
33
+ if ast:
34
+ from machineconfig.scripts.python.helpers.ast_search import get_repo_symbols
35
+ symbols = get_repo_symbols(directory)
36
+ from machineconfig.utils.options import choose_from_options
37
+ try:
38
+ res = choose_from_options(options=symbols, msg="Select a symbol to search for:", tv=True, multi=False)
39
+ from rich import print_json
40
+ import json
41
+ res_json = json.dumps(res, indent=4)
42
+ print_json(res_json)
43
+ return None
44
+ except Exception as e:
45
+ print(f"❌ Error during selection: {e}")
46
+ return None
47
+ if file:
48
+ script = """fzf --ansi --preview-window 'right:60%' --preview 'bat --color=always --style=numbers,grid,header --line-range :300 {}' """
49
+ if no_dotfiles:
50
+ script = "fd | " + script
51
+ from machineconfig.utils.code import run_shell_script
52
+ run_shell_script(script=script)
53
+ return
54
+ from machineconfig.scripts.python.helpers_msearch import FZFG_LINUX_PATH, FZFG_WINDOWS_PATH
55
+ import platform
56
+ if platform.system() == "Linux" or platform.system() == "Darwin":
57
+ script = FZFG_LINUX_PATH.read_text(encoding="utf-8")
58
+ elif platform.system() == "Windows":
59
+ script = FZFG_WINDOWS_PATH.read_text(encoding="utf-8")
60
+ else:
61
+ raise RuntimeError("Unsupported platform")
62
+ if rga:
63
+ script = script.replace("rg ", "rga ").replace("ripgrep", "ripgrep-all")
64
+ from machineconfig.utils.code import exit_then_run_shell_script
65
+ exit_then_run_shell_script(script=script, strict=False)
66
+
67
+
68
+ def main():
69
+ app = typer.Typer(add_completion=False, no_args_is_help=True)
70
+ app.command(name="msearch", help="machineconfig search helper", no_args_is_help=False)(machineconfig_search)
71
+ app()