machineconfig 8.12__py3-none-any.whl → 8.45__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (273) hide show
  1. machineconfig/cluster/remote/run_cluster.py +1 -1
  2. machineconfig/cluster/remote/run_remote.py +1 -1
  3. machineconfig/cluster/sessions_managers/utils/maker.py +10 -8
  4. machineconfig/cluster/sessions_managers/wt_local.py +1 -1
  5. machineconfig/cluster/sessions_managers/wt_local_manager.py +1 -1
  6. machineconfig/cluster/sessions_managers/zellij_local.py +1 -1
  7. machineconfig/cluster/sessions_managers/zellij_local_manager.py +1 -1
  8. machineconfig/jobs/installer/checks/check_installations.py +133 -0
  9. machineconfig/jobs/installer/checks/install_utils.py +132 -0
  10. machineconfig/jobs/installer/checks/report_utils.py +39 -0
  11. machineconfig/jobs/installer/checks/vt_utils.py +89 -0
  12. machineconfig/jobs/installer/installer_data.json +225 -140
  13. machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
  14. machineconfig/jobs/installer/package_groups.py +10 -9
  15. machineconfig/jobs/installer/python_scripts/boxes.py +1 -2
  16. machineconfig/jobs/installer/python_scripts/code.py +10 -8
  17. machineconfig/jobs/installer/python_scripts/hx.py +30 -13
  18. machineconfig/jobs/installer/python_scripts/nerfont_windows_helper.py +6 -5
  19. machineconfig/jobs/installer/python_scripts/sysabc.py +25 -19
  20. machineconfig/jobs/installer/python_scripts/yazi.py +33 -17
  21. machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
  22. machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +1 -1
  23. machineconfig/jobs/scripts_dynamic/a.py +413 -10
  24. machineconfig/profile/create_links.py +77 -20
  25. machineconfig/profile/create_links_export.py +40 -51
  26. machineconfig/profile/mapper_data.toml +30 -0
  27. machineconfig/profile/mapper_dotfiles.toml +253 -0
  28. machineconfig/scripts/python/agents.py +70 -172
  29. machineconfig/scripts/python/ai/initai.py +3 -1
  30. machineconfig/scripts/python/ai/scripts/__init__.py +1 -0
  31. machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +2 -0
  32. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +7 -5
  33. machineconfig/scripts/python/ai/solutions/claude/claude.py +1 -1
  34. machineconfig/scripts/python/ai/solutions/cline/cline.py +1 -1
  35. machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +1 -1
  36. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +29 -0
  37. machineconfig/scripts/python/ai/solutions/crush/crush.py +1 -1
  38. machineconfig/scripts/python/ai/solutions/cursor/cursors.py +1 -1
  39. machineconfig/scripts/python/ai/solutions/gemini/gemini.py +1 -1
  40. machineconfig/scripts/python/ai/solutions/gemini/settings.json +3 -0
  41. machineconfig/scripts/python/ai/{solutions → utils}/generic.py +2 -15
  42. machineconfig/scripts/python/ai/utils/vscode_tasks.py +6 -3
  43. machineconfig/scripts/python/cloud.py +58 -11
  44. machineconfig/scripts/python/croshell.py +4 -156
  45. machineconfig/scripts/python/devops.py +57 -40
  46. machineconfig/scripts/python/devops_navigator.py +17 -3
  47. machineconfig/scripts/python/fire_jobs.py +8 -207
  48. machineconfig/scripts/python/ftpx.py +5 -225
  49. machineconfig/scripts/python/graph/cli_graph.json +8743 -0
  50. machineconfig/scripts/python/{env_manager → helper_env}/path_manager_tui.py +2 -2
  51. machineconfig/scripts/python/{env_manager → helpers/helper_env}/env_manager_tui.py +1 -1
  52. machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
  53. machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_crush.py +1 -1
  54. machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_cursor_agents.py +1 -1
  55. machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_gemini.py +1 -1
  56. machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_qwen.py +1 -1
  57. machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
  58. machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/fire_agents_help_launch.py +5 -5
  59. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_copy.py +6 -6
  60. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_mount.py +10 -5
  61. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_sync.py +3 -3
  62. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers2.py +1 -1
  63. machineconfig/scripts/python/helpers/helpers_croshell/croshell_impl.py +225 -0
  64. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/scheduler.py +4 -4
  65. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/start_slidev.py +7 -6
  66. machineconfig/scripts/python/helpers/helpers_devops/backup_config.py +149 -0
  67. machineconfig/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +267 -0
  68. machineconfig/scripts/python/helpers/helpers_devops/cli_config.py +98 -0
  69. machineconfig/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +274 -0
  70. machineconfig/scripts/python/helpers/helpers_devops/cli_data.py +76 -0
  71. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_nw.py +52 -72
  72. machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +265 -0
  73. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_self.py +45 -21
  74. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_share_file.py +44 -30
  75. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_share_server.py +26 -43
  76. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_share_terminal.py +12 -6
  77. machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +167 -0
  78. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_status.py +12 -6
  79. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_update_repos.py +1 -1
  80. machineconfig/scripts/python/{interactive.py → helpers/helpers_devops/interactive.py} +69 -45
  81. machineconfig/scripts/python/helpers/helpers_devops/run_script.py +197 -0
  82. machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +41 -0
  83. machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +48 -0
  84. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_wezterm_theme.py +3 -3
  85. machineconfig/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +233 -0
  86. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_route_helper.py +3 -3
  87. machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +248 -0
  88. machineconfig/scripts/python/{helpers_msearch → helpers/helpers_msearch}/scripts_linux/fzfg +4 -3
  89. machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
  90. machineconfig/scripts/python/{helpers_msearch → helpers/helpers_msearch}/scripts_windows/fzfg.ps1 +1 -1
  91. machineconfig/scripts/python/helpers/helpers_navigator/__init__.py +20 -0
  92. machineconfig/scripts/python/helpers/helpers_navigator/cli_graph_loader.py +234 -0
  93. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/command_builder.py +61 -13
  94. machineconfig/scripts/python/helpers/helpers_navigator/command_detail.py +153 -0
  95. machineconfig/scripts/python/helpers/helpers_navigator/command_tree.py +45 -0
  96. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/data_models.py +18 -11
  97. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/main_app.py +5 -5
  98. machineconfig/scripts/python/helpers/helpers_network/__init__.py +0 -0
  99. machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/address.py +15 -17
  100. machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/address_switch.py +1 -1
  101. machineconfig/scripts/python/helpers/helpers_network/ftpx_impl.py +276 -0
  102. machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/mount_ssh.py +2 -2
  103. machineconfig/scripts/python/helpers/helpers_network/ssh_add_identity.py +73 -0
  104. machineconfig/scripts/python/helpers/helpers_network/ssh_add_ssh_key.py +175 -0
  105. machineconfig/scripts/python/helpers/helpers_network/ssh_debug_linux.py +319 -0
  106. machineconfig/scripts/python/helpers/helpers_network/ssh_debug_windows.py +275 -0
  107. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action.py +3 -3
  108. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action_helper.py +3 -3
  109. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/cloud_repo_sync.py +116 -33
  110. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/grource.py +3 -2
  111. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/record.py +33 -13
  112. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/repo_analyzer_2.py +63 -19
  113. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/update.py +0 -6
  114. machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -0
  115. machineconfig/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
  116. machineconfig/scripts/python/helpers/helpers_sessions/sessions_impl.py +177 -0
  117. machineconfig/scripts/python/{helpers_sessions → helpers/helpers_sessions}/sessions_multiprocess.py +1 -1
  118. machineconfig/scripts/python/helpers/helpers_terminal/__init__.py +0 -0
  119. machineconfig/scripts/python/helpers/helpers_terminal/terminal_impl.py +96 -0
  120. machineconfig/scripts/python/{helpers_utils → helpers/helpers_utils}/download.py +1 -1
  121. machineconfig/scripts/python/{helpers_utils → helpers/helpers_utils}/python.py +49 -29
  122. machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
  123. machineconfig/scripts/python/mcfg_entry.py +133 -48
  124. machineconfig/scripts/python/msearch.py +15 -61
  125. machineconfig/scripts/python/sessions.py +59 -194
  126. machineconfig/scripts/python/terminal.py +18 -96
  127. machineconfig/scripts/python/utils.py +101 -20
  128. machineconfig/settings/atuin/config.toml +294 -0
  129. machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
  130. machineconfig/settings/linters/.ruff.toml +1 -0
  131. machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
  132. machineconfig/settings/shells/bash/init.sh +6 -3
  133. machineconfig/settings/shells/pwsh/init.ps1 +69 -1
  134. machineconfig/settings/shells/pwsh/search_pwsh_history.ps1 +99 -0
  135. machineconfig/settings/shells/wezterm/wezterm.lua +4 -1
  136. machineconfig/settings/shells/wt/settings.json +20 -7
  137. machineconfig/settings/shells/zsh/init.sh +34 -4
  138. machineconfig/settings/television/cable_unix/bash-history.toml +1 -1
  139. machineconfig/settings/television/cable_windows/pwsh-history.toml +1 -1
  140. machineconfig/settings/tv/config.toml +234 -0
  141. machineconfig/settings/tv/themes/catppuccin-mocha-sky.toml +22 -0
  142. machineconfig/settings/wsl/.wslconfig +5 -30
  143. machineconfig/settings/yazi/yazi_linux.toml +18 -8
  144. machineconfig/settings/zellij/layouts/st.kdl +2 -2
  145. machineconfig/settings/zellij/layouts/st2.kdl +1 -1
  146. machineconfig/setup_linux/web_shortcuts/interactive.sh +10 -10
  147. machineconfig/setup_linux/web_shortcuts/live_from_github.sh +3 -0
  148. machineconfig/setup_mac/__init__.py +0 -2
  149. machineconfig/setup_windows/__init__.py +0 -1
  150. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +14 -13
  151. machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +4 -3
  152. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +3 -3
  153. machineconfig/type_hinting/sql/__init__.py +1 -0
  154. machineconfig/type_hinting/sql/base.py +216 -0
  155. machineconfig/type_hinting/sql/core_schema.py +64 -0
  156. machineconfig/type_hinting/sql/core_schema_typeddict.py +41 -0
  157. machineconfig/type_hinting/sql/typeddict_codegen.py +222 -0
  158. machineconfig/type_hinting/typedict/__init__.py +1 -0
  159. machineconfig/type_hinting/typedict/ast_utils.py +130 -0
  160. machineconfig/type_hinting/typedict/generator_helpers.py +319 -0
  161. machineconfig/type_hinting/typedict/generators.py +231 -0
  162. machineconfig/type_hinting/typedict/polars_schema.py +24 -0
  163. machineconfig/type_hinting/typedict/polars_schema_typeddict.py +63 -0
  164. machineconfig/utils/accessories.py +24 -0
  165. machineconfig/utils/code.py +79 -37
  166. machineconfig/utils/files/ascii_art.py +10 -14
  167. machineconfig/utils/files/headers.py +3 -5
  168. machineconfig/utils/files/read.py +8 -1
  169. machineconfig/utils/installer_utils/github_release_bulk.py +1 -0
  170. machineconfig/utils/installer_utils/install_from_url.py +1 -1
  171. machineconfig/utils/installer_utils/installer_class.py +12 -4
  172. machineconfig/utils/installer_utils/installer_cli.py +1 -15
  173. machineconfig/utils/installer_utils/installer_helper.py +2 -2
  174. machineconfig/utils/installer_utils/installer_locator_utils.py +13 -13
  175. machineconfig/utils/installer_utils/installer_runner.py +4 -4
  176. machineconfig/utils/meta.py +6 -4
  177. machineconfig/utils/options.py +49 -19
  178. machineconfig/utils/options_utils/__init__.py +0 -0
  179. machineconfig/utils/options_utils/options_tv_linux.py +211 -0
  180. machineconfig/utils/options_utils/options_tv_windows.py +88 -0
  181. machineconfig/utils/options_utils/tv_options.py +37 -0
  182. machineconfig/utils/path_extended.py +6 -6
  183. machineconfig/utils/scheduler.py +8 -2
  184. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
  185. machineconfig/utils/source_of_truth.py +6 -1
  186. machineconfig/utils/ssh.py +73 -22
  187. machineconfig/utils/ssh_utils/abc.py +1 -1
  188. machineconfig/utils/ssh_utils/copy_from_here.py +2 -2
  189. machineconfig/utils/ssh_utils/utils.py +2 -2
  190. machineconfig/utils/ssh_utils/wsl.py +107 -170
  191. machineconfig/utils/ssh_utils/wsl_helper.py +217 -0
  192. machineconfig/utils/upgrade_packages.py +4 -8
  193. {machineconfig-8.12.dist-info → machineconfig-8.45.dist-info}/METADATA +29 -22
  194. {machineconfig-8.12.dist-info → machineconfig-8.45.dist-info}/RECORD +249 -211
  195. machineconfig/jobs/installer/check_installations.py +0 -248
  196. machineconfig/jobs/scripts/bash_scripts/mint_keyboard_shortcuts.sh +0 -30
  197. machineconfig/profile/backup.toml +0 -49
  198. machineconfig/profile/mapper.toml +0 -263
  199. machineconfig/scripts/python/helpers_devops/cli_config.py +0 -105
  200. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -89
  201. machineconfig/scripts/python/helpers_devops/cli_data.py +0 -25
  202. machineconfig/scripts/python/helpers_devops/cli_repos.py +0 -208
  203. machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +0 -80
  204. machineconfig/scripts/python/helpers_devops/run_script.py +0 -168
  205. machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +0 -3
  206. machineconfig/scripts/python/helpers_navigator/__init__.py +0 -20
  207. machineconfig/scripts/python/helpers_navigator/command_detail.py +0 -44
  208. machineconfig/scripts/python/helpers_navigator/command_tree.py +0 -620
  209. machineconfig/scripts/python/helpers_network/ssh_add_identity.py +0 -116
  210. machineconfig/scripts/python/helpers_network/ssh_add_ssh_key.py +0 -153
  211. machineconfig/scripts/python/helpers_network/ssh_debug_linux.py +0 -391
  212. machineconfig/scripts/python/helpers_network/ssh_debug_windows.py +0 -338
  213. machineconfig/scripts/python/helpers_repos/entrypoint.py +0 -77
  214. machineconfig/setup_mac/ssh/openssh_setup.sh +0 -114
  215. machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
  216. machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
  217. machineconfig/utils/options_tv.py +0 -119
  218. machineconfig/utils/tst.py +0 -20
  219. /machineconfig/{scripts/python/helpers_agents → jobs/installer/checks}/__init__.py +0 -0
  220. /machineconfig/scripts/python/ai/{solutions/_shared.py → utils/shared.py} +0 -0
  221. /machineconfig/scripts/python/{helpers_agents/agentic_frameworks → graph}/__init__.py +0 -0
  222. /machineconfig/scripts/python/{helpers_cloud → helpers}/__init__.py +0 -0
  223. /machineconfig/scripts/python/{env_manager → helpers/helper_env}/__init__.py +0 -0
  224. /machineconfig/scripts/python/{env_manager → helpers/helper_env}/path_manager_backend.py +0 -0
  225. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_agents}/__init__.py +0 -0
  226. /machineconfig/scripts/python/{helpers_devops → helpers/helpers_agents/agentic_frameworks}/__init__.py +0 -0
  227. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_crush.json +0 -0
  228. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/fire_agents_help_search.py +0 -0
  229. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/fire_agents_helper_types.py +0 -0
  230. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/fire_agents_load_balancer.py +0 -0
  231. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/configs/aichat/config.yaml +0 -0
  232. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/configs/aider/.aider.conf.yml +0 -0
  233. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/configs/copilot/config.yml +0 -0
  234. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/configs/crush/crush.json +0 -0
  235. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/configs/gemini/settings.json +0 -0
  236. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/privacy.py +0 -0
  237. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/templates/prompt.txt +0 -0
  238. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/templates/template.ps1 +0 -0
  239. /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/templates/template.sh +0 -0
  240. /machineconfig/scripts/python/{helpers_devops/themes → helpers/helpers_cloud}/__init__.py +0 -0
  241. /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_helpers.py +0 -0
  242. /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers5.py +0 -0
  243. /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_croshell}/__init__.py +0 -0
  244. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/crosh.py +0 -0
  245. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/pomodoro.py +0 -0
  246. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer.py +0 -0
  247. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer_template.py +0 -0
  248. /machineconfig/scripts/python/{helpers_network → helpers/helpers_devops}/__init__.py +0 -0
  249. /machineconfig/scripts/python/{helpers_sessions → helpers/helpers_devops/themes}/__init__.py +0 -0
  250. /machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
  251. /machineconfig/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_fire_command/__init__.py} +0 -0
  252. /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/cloud_manager.py +0 -0
  253. /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/f.py +0 -0
  254. /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/file_wrangler.py +0 -0
  255. /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_args_helper.py +0 -0
  256. /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_streamlit_helper.py +0 -0
  257. /machineconfig/scripts/python/{helpers_msearch → helpers/helpers_msearch}/__init__.py +0 -0
  258. /machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/search_bar.py +0 -0
  259. /machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/mount_nfs.py +0 -0
  260. /machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/mount_nw_drive.py +0 -0
  261. /machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/onetimeshare.py +0 -0
  262. /machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/wifi_conn.py +0 -0
  263. /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/clone.py +0 -0
  264. /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/repo_analyzer_1.py +0 -0
  265. /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/sync.py +0 -0
  266. /machineconfig/scripts/python/helpers/{ast_search.py → helpers_search/ast_search.py} +0 -0
  267. /machineconfig/scripts/python/helpers/{qr_code.py → helpers_search/qr_code.py} +0 -0
  268. /machineconfig/scripts/python/helpers/{repo_rag.py → helpers_search/repo_rag.py} +0 -0
  269. /machineconfig/scripts/python/helpers/{symantic_search.py → helpers_search/symantic_search.py} +0 -0
  270. /machineconfig/scripts/python/{helpers_utils → helpers/helpers_utils}/pdf.py +0 -0
  271. {machineconfig-8.12.dist-info → machineconfig-8.45.dist-info}/WHEEL +0 -0
  272. {machineconfig-8.12.dist-info → machineconfig-8.45.dist-info}/entry_points.txt +0 -0
  273. {machineconfig-8.12.dist-info → machineconfig-8.45.dist-info}/top_level.txt +0 -0
@@ -2,17 +2,6 @@
2
2
  """
3
3
  Interactive Machine Configuration Setup Script
4
4
 
5
- A Python version of the interactive installation script that uses questionary
6
- for better user experience with checkbox selections.
7
-
8
-
9
- # echo # 📧 Thunderbird Setup Note:
10
- # Run after installing Thunderbird and starting it once:
11
- # cd ~/AppData/Roaming/ThunderBird/Profiles
12
- # $res = ls
13
- # $name = $res[0].Name
14
- # mv $backup_folder $name
15
- #
16
5
 
17
6
 
18
7
  """
@@ -63,31 +52,6 @@ def display_header() -> None:
63
52
  console.print()
64
53
  console.print(Align.center(Text(bug_report, style="dim white")))
65
54
  console.print()
66
- def display_completion_message() -> None:
67
- completion_text = Text("INSTALLATION COMPLETE", style="bold green")
68
- subtitle_text = Text("System setup finished successfully", style="italic green")
69
- console.print(Panel(f"✨ {completion_text}\n{subtitle_text}\n\n🎉 Your system has been configured successfully!\n🔄 You may need to reboot to apply all changes.", border_style="green", padding=(1, 2)))
70
- def display_dotfiles_instructions() -> None:
71
- header_text = Text("DOTFILES MIGRATION", style="bold yellow")
72
- subtitle_text = Text("Configuration transfer options", style="italic yellow")
73
- instructions = """
74
- 🖱️ [bold blue]Method 1: USING MOUSE WITHOUT KB OR BROWSER SHARE[/bold blue]
75
- On original machine, run:
76
- [dim]cd ~/dotfiles/creds/msc
77
- easy-sharing . --password rew --username al[/dim]
78
- Then open brave on new machine to get MouseWithoutBorders password
79
-
80
- 🔐 [bold blue]Method 2: USING SSH[/bold blue]
81
- FROM REMOTE, RUN:
82
- [dim]fptx ~/dotfiles $USER@$(hostname):^ -z
83
- # OR, using IP address if router has not yet found the hostname:
84
- fptx ~/dotfiles $USER@$(hostname -I | awk '{print $1}'):^ -z[/dim]
85
-
86
- ☁️ [bold blue]Method 3: USING INTERNET SECURE SHARE[/bold blue]
87
- [dim]cd ~
88
- cloud_copy SHARE_URL . --config ss[/dim]
89
- (requires symlinks to be created first)"""
90
- console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
91
55
 
92
56
 
93
57
  def get_installation_choices() -> list[str]:
@@ -121,8 +85,8 @@ def execute_installations(selected_options: list[str]) -> None:
121
85
 
122
86
  if "install_machineconfig" in selected_options:
123
87
  console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
124
- from machineconfig.scripts.python.helpers_devops.cli_self import install
125
- install()
88
+ from machineconfig.scripts.python.helpers.helpers_devops.cli_self import install
89
+ install(copy_assets=True, dev=False)
126
90
 
127
91
  if "install_ssh_server" in selected_options:
128
92
  console.print(Panel("🔒 [bold red]SSH SERVER[/bold red]\n[italic]Remote access setup[/italic]", border_style="red"))
@@ -142,8 +106,8 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
142
106
  from machineconfig.profile.create_shell_profile import create_default_shell_profile
143
107
  create_default_shell_profile()
144
108
  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)
109
+ from machineconfig.profile.create_links_export import main_from_parser
110
+ main_from_parser(sensitivity="public", method="copy", on_conflict="overwrite-default-path", which="all")
147
111
  if platform.system() == "Windows":
148
112
  from machineconfig.jobs.installer.python_scripts.nerfont_windows_helper import install_nerd_fonts
149
113
  install_nerd_fonts()
@@ -152,20 +116,66 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
152
116
  except Exception as e:
153
117
  console.print(f"❌ Error configuring shell profile: {e}", style="bold red")
154
118
 
119
+ if "retrieve_repositories" in selected_options or "retrieve_data" in selected_options:
120
+ # we cannot proceed before dotfiles are in place
121
+ if Path.home().joinpath("dotfiles").exists():
122
+ console.print("✅ Dotfiles directory found.", style="bold green")
123
+ else:
124
+ header_text = Text("DOTFILES MIGRATION", style="bold yellow")
125
+ subtitle_text = Text("Configuration transfer options", style="italic yellow")
126
+ instructions = """
127
+ On remote, run:
128
+ devops config export-dotfiles --password pwd
129
+ On new machine, run:
130
+ devops config import-dotfiles --password pwd
131
+ """
132
+ console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
133
+ options: list[str] = [
134
+ "I have sorted out dotfiles migration already and want to proceed.",
135
+ "Exit now and sort out dotfiles migration first.",
136
+ "I already exposed dotfiles over LAN, let's fetch them now.",
137
+ "I wanted to bring them using SSH SCP now.",
138
+ ]
139
+ answer = questionary.select("⚠️ DOTFILES NOT FOUND. How do you want to proceed?", choices=options).ask()
140
+ if answer == options[0]:
141
+ console.print("✅ Proceeding as per user confirmation.", style="bold green")
142
+ elif answer == options[1]:
143
+ console.print("❌ Exiting for dotfiles migration.", style="bold red")
144
+ sys.exit(0)
145
+ elif answer == options[2]:
146
+ from machineconfig.scripts.python.helpers.helpers_devops.cli_config_dotfile import import_dotfiles
147
+ import_dotfiles(use_ssh=False)
148
+ elif answer == options[3]:
149
+ from machineconfig.scripts.python.helpers.helpers_devops.cli_config_dotfile import import_dotfiles
150
+ import_dotfiles(use_ssh=True)
151
+ if not Path.home().joinpath("dotfiles").exists():
152
+ console.print("❌ Dotfiles directory still not found after attempted import. Exiting...", style="bold red")
153
+ sys.exit(1)
154
+ # devops config sync --sensitivity public --method symlink --on-conflict overwrite-default-path
155
+ # devops config sync --sensitivity private --method symlink --on-conflict overwrite-default-path
156
+ from machineconfig.profile.create_links_export import main_from_parser
157
+ main_from_parser(sensitivity="private", method="symlink", on_conflict="overwrite-default-path", which="all")
158
+
155
159
  if "retrieve_repositories" in selected_options:
156
160
  console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
157
- from machineconfig.scripts.python.helpers_devops import cli_repos
158
- cli_repos.clone(directory=str(Path.home() / "code"), cloud="odg1")
161
+ from machineconfig.scripts.python.helpers.helpers_devops import cli_repos
162
+ cli_repos.clone(directory=str(Path.home() / "code"))
159
163
 
160
164
  if "retrieve_data" in selected_options:
161
165
  console.print(Panel("💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]", border_style="bright_cyan"))
162
166
  console.print("🔧 Retrieving backup data", style="bold cyan")
163
167
  try:
164
- from machineconfig.scripts.python.helpers_devops.devops_backup_retrieve import main_backup_retrieve
165
- main_backup_retrieve(direction="RETRIEVE", cloud=None, which=None)
168
+ from machineconfig.scripts.python.helpers.helpers_devops.cli_backup_retrieve import main_backup_retrieve
169
+ main_backup_retrieve(direction="RETRIEVE", cloud=None, which=None, repo="all")
166
170
  console.print("✅ Backup data retrieved successfully", style="bold green")
167
171
  except Exception as e:
168
172
  console.print(f"❌ Error retrieving backup data: {e}", style="bold red")
173
+ # echo # 📧 Thunderbird Setup Note:
174
+ # Run after installing Thunderbird and starting it once:
175
+ # cd ~/AppData/Roaming/ThunderBird/Profiles
176
+ # $res = ls
177
+ # $name = $res[0].Name
178
+ # mv $backup_folder $name
169
179
 
170
180
 
171
181
  def main() -> None:
@@ -180,7 +190,21 @@ def main() -> None:
180
190
  console.print("❌ Installation cancelled.", style="bold red")
181
191
  sys.exit(0)
182
192
  execute_installations(selected_options=selected_options)
183
- display_completion_message()
193
+ completion_text = Text("INSTALLATION COMPLETE", style="bold green")
194
+ subtitle_text = Text("System setup finished successfully", style="italic green")
195
+ console.print(Panel(f"✨ {completion_text}\n{subtitle_text}\n\n🎉 Your system has been configured successfully!\n🔄 You may need to reboot to apply all changes.", border_style="green", padding=(1, 2)))
196
+
197
+ from machineconfig.utils.code import exit_then_run_shell_script
198
+ if platform.system() == "Windows":
199
+ reload_init_script = "pwsh $PROFILE"
200
+ elif platform.system() == "Darwin":
201
+ reload_init_script = "source $HOME/.zshrc"
202
+ elif platform.system() == "Linux":
203
+ reload_init_script = "source $HOME/.bashrc"
204
+ else:
205
+ reload_init_script = ""
206
+ exit_then_run_shell_script(reload_init_script)
207
+
184
208
 
185
209
 
186
210
  if __name__ == "__main__":
@@ -0,0 +1,197 @@
1
+
2
+
3
+ """run python/shell scripts from pre-defined directorys, or, run command/file in the machineconfig environment
4
+
5
+ Recursively Searched Predefined Directories:
6
+
7
+
8
+ * 'private' : $HOME/dotfiles/scripts
9
+
10
+ * 'public' : $HOME/.config/machineconfig/scripts
11
+
12
+ * 'library' : $MACHINECONFIG_LIBRARY_ROOT/jobs/scripts
13
+
14
+ * 'dynamic' : fetched from GitHub repository on the fly (relies on latest commit, rather than the version currently installed)
15
+
16
+ * 'custom' : custom directories from comma separated entry 'scripts' under 'general' section @ ~/dotfiles/machineconfig/defaults.ini
17
+
18
+ """
19
+
20
+
21
+ import typer
22
+ from typing import Annotated, Optional, Literal
23
+
24
+
25
+ def run_py_script(ctx: typer.Context,
26
+ name: Annotated[str, typer.Argument(help="Name of script to run, e.g., 'a' for a.py, or command to execute")] = "",
27
+ where: Annotated[Literal["all", "a", "private", "p", "public", "b", "library", "l", "dynamic", "d", "custom", "c"], typer.Option("--where", "-w", help="Where to look for the script")] = "all",
28
+ interactive: Annotated[bool, typer.Option(..., "--interactive", "-i", help="Interactive selection of scripts to run")] = False,
29
+ command: Annotated[Optional[bool], typer.Option(..., "--command", "-c", help="Run as command")] = False,
30
+ list_scripts: Annotated[bool, typer.Option(..., "--list", "-l", help="List available scripts in all locations")] = False,
31
+ ) -> None:
32
+ if command:
33
+ exec(name)
34
+ return
35
+
36
+ from pathlib import Path
37
+ if list_scripts:
38
+ from machineconfig.scripts.python.helpers.helpers_search.script_help import list_available_scripts
39
+ list_available_scripts(where=where)
40
+ return
41
+
42
+ if not interactive and not name:
43
+ typer.echo("❌ ERROR: You must provide a script name or use --interactive option to select a script.")
44
+ raise typer.Exit(code=1)
45
+ target_file: Optional[Path] = None
46
+
47
+ if where in ["dynamic", "d"]:
48
+ # src/machineconfig/jobs/scripts/python_scripts/a.py
49
+ if "." in name: resolved_names: list[str] = [name]
50
+ else: resolved_names = [f"{name}{a_suffix}" for a_suffix in [".py", ".sh", "", ".ps1", ".bat", ".cmd"]]
51
+ urls = [f"""https://raw.githubusercontent.com/thisismygitrepo/machineconfig/refs/heads/main/src/machineconfig/jobs/scripts_dynamic/{a_resolved_name}""" for a_resolved_name in resolved_names]
52
+ for a_url in urls:
53
+ try:
54
+ print(f"Fetching temporary script from {a_url} ...")
55
+ import requests
56
+ response = requests.get(a_url)
57
+ if response.status_code != 200:
58
+ print(f"❌ ERROR: Could not fetch script '{name}.py' from repository. Status Code: {response.status_code}")
59
+ raise RuntimeError(f"Could not fetch script '{name}.py' from repository.")
60
+ script_content = response.text
61
+ target_file = Path.home().joinpath("tmp_results", "tmp_scripts", "python", f"{name}.py")
62
+ target_file.parent.mkdir(parents=True, exist_ok=True)
63
+ target_file.write_text(script_content, encoding="utf-8")
64
+ except Exception as _e:
65
+ pass
66
+
67
+
68
+ if target_file is None and Path(name).is_file():
69
+ if name.endswith(".py"):
70
+ import machineconfig
71
+ import subprocess
72
+ import sys
73
+ subprocess.run([sys.executable, name], cwd=machineconfig.__path__[0])
74
+ return
75
+ else:
76
+ if Path(name).suffix in [".sh", ".ps1", ".bat", ".cmd", ""]:
77
+ target_file = Path(name)
78
+ else:
79
+ print(f"❌ Error: File '{name}' is not a recognized script type. Supported types are {'.py', '.sh', '.ps1', '.bat', '.cmd', ''}.")
80
+ raise typer.Exit(code=1)
81
+
82
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT, LIBRARY_ROOT, DEFAULTS_PATH
83
+ private_root = Path.home().joinpath("dotfiles/scripts") # local directory
84
+ public_root = CONFIG_ROOT.joinpath("scripts") # local machineconfig directory
85
+ library_root = LIBRARY_ROOT.joinpath("jobs", "scripts")
86
+
87
+ def get_custom_roots() -> list[Path]:
88
+ custom_roots: list[Path] = []
89
+ if DEFAULTS_PATH.is_file():
90
+ from configparser import ConfigParser
91
+ config = ConfigParser()
92
+ config.read(DEFAULTS_PATH)
93
+ if config.has_section("general") and config.has_option("general", "scripts"):
94
+ custom_dirs = config.get("general", "scripts").split(",")
95
+ for custom_dir in custom_dirs:
96
+ custom_path = Path(custom_dir.strip()).expanduser().resolve()
97
+ if custom_path.is_dir():
98
+ custom_roots.append(custom_path)
99
+ return custom_roots
100
+
101
+ roots: list[Path] = []
102
+ match where:
103
+ case "all" | "a":
104
+ roots = [private_root, public_root, library_root] + get_custom_roots()
105
+ case "private" | "p":
106
+ roots = [private_root]
107
+ case "public" | "b":
108
+ roots = [public_root]
109
+ case "library" | "l":
110
+ roots = [library_root]
111
+ case "dynamic" | "d":
112
+ roots = []
113
+ case "custom" | "c":
114
+ roots = get_custom_roots()
115
+
116
+ suffixes: list[str]
117
+ if "." in name:
118
+ suffixes = [""]
119
+ else:
120
+ import platform
121
+ if platform.system() == "Windows":
122
+ suffixes = [".py", ".bat", ".cmd", ".ps1"]
123
+ elif platform.system() == "Darwin" or platform.system() == "Linux":
124
+ suffixes = [""] # files without suffix could be shell scripts, and that already cover files with .sh suffix without duplications
125
+ else:
126
+ suffixes = [".py"]
127
+
128
+ # Finding target file
129
+ potential_matches: list[Path] = []
130
+ if target_file is None:
131
+ for a_root in roots:
132
+ for a_suffix in suffixes:
133
+ if a_root.joinpath(f"{name}{a_suffix}").is_file():
134
+ target_file = a_root.joinpath(f"{name}{a_suffix}")
135
+ break # perfect match
136
+ potential_matches += [a_file for a_file in a_root.rglob(f"*{name}*{a_suffix}") if a_file.is_file()]
137
+
138
+ if target_file is None:
139
+ if len(potential_matches) == 1:
140
+ target_file = potential_matches[0]
141
+ elif len(potential_matches) == 0:
142
+ typer.echo(ctx.get_help())
143
+ typer.echo()
144
+ typer.echo(typer.style(f"❌ ERROR: Could not find script '{name}'.", fg=typer.colors.RED, bold=True))
145
+ typer.echo("Searched in:")
146
+ for r in roots:
147
+ typer.echo(f" - {r}")
148
+ raise typer.Exit(code=1)
149
+ else:
150
+ typer.echo(typer.style(f"Warning: Could not find script '{name}'. Checked {len(potential_matches)} candidate files, trying interactively:", fg=typer.colors.YELLOW))
151
+ from machineconfig.utils.options import choose_from_options
152
+ options = [str(p) for p in potential_matches]
153
+ chosen_file_part = choose_from_options(options, multi=False, msg="Select the script to run:", tv=True, preview="bat")
154
+ target_file = Path(chosen_file_part)
155
+
156
+ typer.echo(typer.style(f"✅ Found script at: {target_file}", fg=typer.colors.GREEN))
157
+ if target_file.suffix == ".py":
158
+ from machineconfig.utils.code import get_uv_command_executing_python_file, exit_then_run_shell_script
159
+ shell_script = get_uv_command_executing_python_file(python_file=str(target_file), uv_project_dir=None, uv_with=None, prepend_print=False)
160
+ exit_then_run_shell_script(script=shell_script)
161
+ else:
162
+ from machineconfig.utils.code import exit_then_run_shell_file
163
+ exit_then_run_shell_file(script_path=str(target_file), strict=True)
164
+
165
+
166
+ def copy_script_to_local(ctx: typer.Context,
167
+ name: Annotated[str, typer.Argument(help="Name of the temporary python script to copy, e.g., 'a' for a.py")],
168
+ alias: Annotated[Optional[str], typer.Option("--alias", "-a", help="Whether to create call it a different name locally")] = None
169
+ ) -> None:
170
+ """
171
+ Copy a temporary python script stored in machineconfig/scripts/python/helpers/tmp_py_scripts to the local machine.
172
+ """
173
+ url = f"""https://raw.githubusercontent.com/thisismygitrepo/machineconfig/refs/heads/main/src/machineconfig/scripts/python/helpers/tmp_py_scripts/{name}.py"""
174
+ import requests
175
+ response = requests.get(url)
176
+ if response.status_code != 200:
177
+ typer.echo(ctx.get_help())
178
+ typer.echo()
179
+ typer.echo(typer.style(f"❌ ERROR: Could not fetch script '{name}.py' from repository. Status Code: {response.status_code}", fg=typer.colors.RED, bold=True))
180
+ raise typer.Exit(code=1)
181
+ script_content = response.text
182
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT
183
+ local_path = CONFIG_ROOT.joinpath(f"scripts_python/{alias or name}.py")
184
+ with open(local_path, "w") as f:
185
+ f.write(script_content)
186
+ typer.echo(typer.style(f"✅ Script '{name}.py' has been copied to '{local_path}'.", fg=typer.colors.GREEN))
187
+
188
+
189
+ def get_app():
190
+ app = typer.Typer(
191
+ name="run-tmp-script",
192
+ help="Helper to run temporary python scripts stored in machineconfig/scripts/python/helpers/tmp_py_scripts",
193
+ no_args_is_help=True,
194
+ )
195
+ from machineconfig.jobs.scripts_dynamic import a
196
+ app.command()(a.main)
197
+ return app
@@ -0,0 +1,41 @@
1
+ $presets = @{
2
+ "nerd-font-symbols" = "Changes the symbols for each module to use Nerd Font symbols."
3
+ "no-nerd-font" = "Changes the symbols so that no Nerd Font symbols are used."
4
+ "bracketed-segments" = "Changes the format to show segments in brackets."
5
+ "plain-text-symbols" = "Changes the symbols for each module into plain text."
6
+ "no-runtime-versions" = "Hides the version of language runtimes."
7
+ "no-empty-icons" = "Does not show icons if the toolset is not found."
8
+ "pure-preset" = "Emulates the look and behavior of Pure."
9
+ "pastel-powerline" = "Inspired by M365Princess."
10
+ "tokyo-night" = "Inspired by tokyo-night-vscode-theme."
11
+ "gruvbox-rainbow" = "Inspired by Pastel Powerline and Tokyo Night."
12
+ "jetpack" = "Pseudo minimalist preset inspired by geometry and spaceship."
13
+ }
14
+
15
+ $input_list = $presets.Keys | ForEach-Object { "$_`t$($presets[$_])" }
16
+
17
+ $preview_config = "$env:TEMP/starship_preview.toml"
18
+
19
+ # Preview command for PowerShell
20
+ # We need to split the line and get the first part.
21
+ # tv replaces {} with the line.
22
+ # We use powershell -c for the preview command to be safe and consistent.
23
+
24
+ $preview_cmd = "powershell -c `"`$preset = '{}'.Split('`t')[0]; starship preset `$preset > $preview_config; `$env:STARSHIP_CONFIG='$preview_config'; `$env:STARSHIP_SHELL='powershell'; starship prompt`""
25
+
26
+ if (Get-Command "tv" -ErrorAction SilentlyContinue) {
27
+ $selected_line = $input_list | tv --preview-command $preview_cmd --preview-size 50
28
+ } elseif (Get-Command "fzf" -ErrorAction SilentlyContinue) {
29
+ # fzf fallback
30
+ $selected_line = $input_list | fzf --ansi --delimiter "`t" --with-nth 1,2 --preview "powershell -c `"`$preset = {1}; starship preset `$preset > $preview_config; `$env:STARSHIP_CONFIG='$preview_config'; `$env:STARSHIP_SHELL='powershell'; starship prompt`"" --preview-window bottom:50%
31
+ } else {
32
+ Write-Host "Error: 'tv' or 'fzf' not found."
33
+ exit 1
34
+ }
35
+
36
+ if ($selected_line) {
37
+ $selected_preset = $selected_line.Split("`t")[0]
38
+ Write-Host "Applying $selected_preset..."
39
+ starship preset $selected_preset -o "$HOME/.config/starship.toml"
40
+ Write-Host "Done!"
41
+ }
@@ -0,0 +1,48 @@
1
+ #!/bin/bash
2
+
3
+ # Ensure UTF-8 encoding for symbols and CLI tools
4
+ export LANG=C.UTF-8
5
+ export LC_ALL=C.UTF-8
6
+ export LC_CTYPE=C.UTF-8
7
+ export PYTHONIOENCODING=utf-8
8
+
9
+ # Presets
10
+ presets=(
11
+ "nerd-font-symbols Changes the symbols for each module to use Nerd Font symbols."
12
+ "no-nerd-font Changes the symbols so that no Nerd Font symbols are used."
13
+ "bracketed-segments Changes the format to show segments in brackets."
14
+ "plain-text-symbols Changes the symbols for each module into plain text."
15
+ "no-runtime-versions Hides the version of language runtimes."
16
+ "no-empty-icons Does not show icons if the toolset is not found."
17
+ "pure-preset Emulates the look and behavior of Pure."
18
+ "pastel-powerline Inspired by M365Princess."
19
+ "tokyo-night Inspired by tokyo-night-vscode-theme."
20
+ "gruvbox-rainbow Inspired by Pastel Powerline and Tokyo Night."
21
+ "jetpack Pseudo minimalist preset inspired by geometry and spaceship."
22
+ )
23
+
24
+ # Join presets with newlines
25
+ input_data=$(printf "%s\n" "${presets[@]}")
26
+
27
+ preview_config="/tmp/starship_preview.toml"
28
+ # Preview command needs to extract the first column (preset name) from the line
29
+ # {} will be replaced by the selected line
30
+ # We use awk to handle multiple spaces as delimiter
31
+ preview_cmd="preset=\$(echo '{}' | awk '{print \$1}'); starship preset \"\$preset\" > $preview_config && LANG=C.UTF-8 LC_ALL=C.UTF-8 STARSHIP_CONFIG=$preview_config STARSHIP_SHELL=fish starship prompt"
32
+
33
+ if command -v tv &> /dev/null; then
34
+ # tv requires input from stdin if no source-command is given
35
+ selected_line=$(printf "%s" "$input_data" | LANG=C.UTF-8 LC_ALL=C.UTF-8 tv --ansi --preview-command "$preview_cmd" --preview-size 50)
36
+ elif command -v fzf &> /dev/null; then
37
+ selected_line=$(printf "%s" "$input_data" | LANG=C.UTF-8 LC_ALL=C.UTF-8 fzf --ansi --preview "preset=\$(echo {} | awk '{print \$1}'); starship preset \$preset > $preview_config && LANG=C.UTF-8 LC_ALL=C.UTF-8 STARSHIP_CONFIG=$preview_config STARSHIP_SHELL=fish starship prompt" --preview-window bottom:30%)
38
+ else
39
+ echo "Error: 'tv' or 'fzf' not found."
40
+ exit 1
41
+ fi
42
+
43
+ if [ -n "$selected_line" ]; then
44
+ selected_preset=$(echo "$selected_line" | awk '{print $1}')
45
+ echo "Applying $selected_preset..."
46
+ starship preset "$selected_preset" -o ~/.config/starship.toml
47
+ echo "Done!"
48
+ fi
@@ -3,7 +3,7 @@ Choose a theme for Wezterm
3
3
  """
4
4
 
5
5
  from machineconfig.utils.options import choose_from_options
6
- from machineconfig.utils.path_extended import PathExtended
6
+ from pathlib import Path
7
7
  from typing import Any
8
8
  import time
9
9
  from rich.panel import Panel
@@ -52,14 +52,14 @@ def main2():
52
52
 
53
53
  def set_theme(theme: str):
54
54
  print(f"🔄 Setting WezTerm theme to: {theme}")
55
- txt_lines = PathExtended.home().joinpath(".config/wezterm/wezterm.lua").expanduser().read_text(encoding="utf-8").splitlines()
55
+ txt_lines = Path.home().joinpath(".config/wezterm/wezterm.lua").expanduser().read_text(encoding="utf-8").splitlines()
56
56
  res_lines = []
57
57
  for line in txt_lines:
58
58
  if "config.color_scheme = " in line:
59
59
  res_lines.append(f"config.color_scheme = '{theme}'")
60
60
  else:
61
61
  res_lines.append(line)
62
- PathExtended.home().joinpath(".config/wezterm/wezterm.lua").expanduser().write_text("\n".join(res_lines), encoding="utf-8")
62
+ Path.home().joinpath(".config/wezterm/wezterm.lua").expanduser().write_text("\n".join(res_lines), encoding="utf-8")
63
63
  time.sleep(0.1)
64
64
  print("💾 Configuration saved")
65
65