machineconfig 3.7__py3-none-any.whl → 7.69__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (465) hide show
  1. machineconfig/__init__.py +0 -28
  2. machineconfig/cluster/remote/distribute.py +0 -1
  3. machineconfig/cluster/remote/file_manager.py +0 -2
  4. machineconfig/cluster/remote/script_execution.py +1 -2
  5. machineconfig/cluster/sessions_managers/{enhanced_command_runner.py → helpers/enhanced_command_runner.py} +4 -6
  6. machineconfig/cluster/sessions_managers/helpers/load_balancer_helper.py +145 -0
  7. machineconfig/cluster/sessions_managers/utils/load_balancer.py +53 -0
  8. machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
  9. machineconfig/cluster/sessions_managers/wt_local.py +128 -330
  10. machineconfig/cluster/sessions_managers/wt_local_manager.py +53 -187
  11. machineconfig/cluster/sessions_managers/wt_remote.py +51 -43
  12. machineconfig/cluster/sessions_managers/wt_remote_manager.py +49 -197
  13. machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +6 -19
  14. machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
  15. machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
  16. machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +4 -2
  17. machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
  18. machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
  19. machineconfig/cluster/sessions_managers/zellij_local.py +81 -375
  20. machineconfig/cluster/sessions_managers/zellij_local_manager.py +22 -172
  21. machineconfig/cluster/sessions_managers/zellij_remote.py +40 -41
  22. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +13 -10
  23. machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +4 -8
  24. machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +5 -20
  25. machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -9
  26. machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -1
  27. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper.py +298 -0
  28. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_restart.py +77 -0
  29. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_with_panes.py +228 -0
  30. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_manager_helper.py +165 -0
  31. machineconfig/jobs/{python → installer}/check_installations.py +7 -21
  32. machineconfig/jobs/installer/custom/boxes.py +61 -0
  33. machineconfig/jobs/installer/custom/gh.py +128 -0
  34. machineconfig/jobs/{python_custom_installers → installer/custom}/hx.py +84 -18
  35. machineconfig/jobs/installer/custom_dev/alacritty.py +86 -0
  36. machineconfig/jobs/installer/custom_dev/brave.py +82 -0
  37. machineconfig/jobs/installer/custom_dev/bypass_paywall.py +59 -0
  38. machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
  39. machineconfig/jobs/installer/custom_dev/code.py +63 -0
  40. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/cursor.py +7 -7
  41. machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
  42. machineconfig/jobs/installer/custom_dev/espanso.py +117 -0
  43. machineconfig/jobs/installer/custom_dev/goes.py +68 -0
  44. machineconfig/jobs/installer/custom_dev/lvim.py +89 -0
  45. machineconfig/jobs/installer/custom_dev/nerdfont.py +111 -0
  46. machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +149 -0
  47. machineconfig/jobs/installer/custom_dev/redis.py +88 -0
  48. machineconfig/jobs/installer/custom_dev/sysabc.py +145 -0
  49. machineconfig/jobs/installer/custom_dev/wezterm.py +92 -0
  50. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/winget.py +2 -3
  51. machineconfig/jobs/installer/installer_data.json +3440 -0
  52. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/brave.sh +4 -14
  53. machineconfig/jobs/{python_custom_installers/scripts/linux/warp-cli.sh → installer/linux_scripts/cloudflare_warp_cli.sh} +5 -17
  54. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/docker.sh +6 -18
  55. machineconfig/jobs/installer/linux_scripts/docker_start.sh +37 -0
  56. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/edge.sh +3 -11
  57. machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
  58. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/nerdfont.sh +5 -17
  59. machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
  60. machineconfig/jobs/installer/linux_scripts/ngrok.sh +6 -0
  61. machineconfig/jobs/installer/linux_scripts/q.sh +9 -0
  62. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/redis.sh +6 -17
  63. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/vscode.sh +5 -17
  64. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/wezterm.sh +4 -12
  65. machineconfig/jobs/installer/package_groups.py +255 -0
  66. machineconfig/logger.py +0 -1
  67. machineconfig/profile/backup.toml +49 -0
  68. machineconfig/profile/bash_shell_profiles.md +11 -0
  69. machineconfig/profile/create_helper.py +74 -0
  70. machineconfig/profile/create_links.py +288 -0
  71. machineconfig/profile/create_links_export.py +100 -0
  72. machineconfig/profile/create_shell_profile.py +136 -0
  73. machineconfig/profile/mapper.toml +258 -0
  74. machineconfig/scripts/__init__.py +0 -4
  75. machineconfig/scripts/linux/{share_cloud.sh → other/share_cloud.sh} +14 -25
  76. machineconfig/scripts/linux/wrap_mcfg +47 -0
  77. machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
  78. machineconfig/scripts/python/agents.py +198 -0
  79. machineconfig/scripts/python/ai/command_runner/command_runner.sh +9 -0
  80. machineconfig/scripts/python/ai/command_runner/prompt.txt +9 -0
  81. machineconfig/scripts/python/ai/generate_files.py +307 -42
  82. machineconfig/scripts/python/ai/{mcinit.py → initai.py} +3 -38
  83. machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +114 -0
  84. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +88 -22
  85. machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
  86. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -1
  87. machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
  88. machineconfig/scripts/python/ai/solutions/gemini/settings.json +1 -1
  89. machineconfig/scripts/python/ai/solutions/generic.py +27 -4
  90. machineconfig/scripts/python/ai/vscode_tasks.py +37 -0
  91. machineconfig/scripts/python/cloud.py +29 -0
  92. machineconfig/scripts/python/croshell.py +129 -198
  93. machineconfig/scripts/python/define.py +31 -0
  94. machineconfig/scripts/python/devops.py +45 -131
  95. machineconfig/scripts/python/devops_navigator.py +6 -0
  96. machineconfig/scripts/python/env_manager/__init__.py +1 -0
  97. machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
  98. machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
  99. machineconfig/scripts/python/fire_jobs.py +166 -235
  100. machineconfig/scripts/python/ftpx.py +164 -100
  101. machineconfig/scripts/python/helpers/ast_search.py +74 -0
  102. machineconfig/scripts/python/helpers/repo_rag.py +325 -0
  103. machineconfig/scripts/python/helpers/symantic_search.py +25 -0
  104. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +14 -0
  105. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +37 -0
  106. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
  107. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +42 -0
  108. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
  109. machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +110 -0
  110. machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +34 -0
  111. machineconfig/scripts/python/helpers_agents/fire_agents_load_balancer.py +22 -0
  112. machineconfig/scripts/python/helpers_agents/templates/prompt.txt +6 -0
  113. machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
  114. machineconfig/scripts/python/helpers_agents/templates/template.sh +24 -0
  115. machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +52 -39
  116. machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +13 -18
  117. machineconfig/scripts/python/helpers_cloud/cloud_sync.py +81 -0
  118. machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
  119. machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
  120. machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -1
  121. machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +32 -20
  122. machineconfig/scripts/python/helpers_devops/cli_config.py +95 -0
  123. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
  124. machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
  125. machineconfig/scripts/python/helpers_devops/cli_nw.py +134 -0
  126. machineconfig/scripts/python/helpers_devops/cli_repos.py +182 -0
  127. machineconfig/scripts/python/helpers_devops/cli_self.py +134 -0
  128. machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
  129. machineconfig/scripts/python/helpers_devops/cli_share_server.py +141 -0
  130. machineconfig/scripts/python/helpers_devops/cli_terminal.py +156 -0
  131. machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
  132. machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
  133. machineconfig/scripts/python/helpers_devops/devops_status.py +511 -0
  134. machineconfig/scripts/python/helpers_devops/devops_update_repos.py +269 -0
  135. machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
  136. machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
  137. machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +2 -2
  138. machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -2
  139. machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -89
  140. machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +145 -0
  141. machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +110 -0
  142. machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
  143. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfag +1 -1
  144. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +1 -1
  145. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfrga +1 -1
  146. machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
  147. machineconfig/scripts/python/helpers_navigator/command_builder.py +111 -0
  148. machineconfig/scripts/python/helpers_navigator/command_detail.py +44 -0
  149. machineconfig/scripts/python/helpers_navigator/command_tree.py +620 -0
  150. machineconfig/scripts/python/helpers_navigator/data_models.py +28 -0
  151. machineconfig/scripts/python/helpers_navigator/main_app.py +272 -0
  152. machineconfig/scripts/python/helpers_navigator/search_bar.py +15 -0
  153. machineconfig/scripts/python/helpers_repos/action.py +209 -0
  154. machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
  155. machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +6 -7
  156. machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
  157. machineconfig/scripts/python/helpers_repos/count_lines.py +348 -0
  158. machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +17 -0
  159. machineconfig/scripts/python/helpers_repos/entrypoint.py +77 -0
  160. machineconfig/scripts/python/helpers_repos/grource.py +340 -0
  161. machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +7 -4
  162. machineconfig/scripts/python/helpers_repos/sync.py +66 -0
  163. machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
  164. machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +58 -0
  165. machineconfig/scripts/python/helpers_utils/download.py +152 -0
  166. machineconfig/scripts/python/helpers_utils/path.py +108 -0
  167. machineconfig/scripts/python/interactive.py +187 -0
  168. machineconfig/scripts/python/mcfg_entry.py +63 -0
  169. machineconfig/scripts/python/msearch.py +40 -0
  170. machineconfig/scripts/python/{devops_add_identity.py → nw/devops_add_identity.py} +1 -3
  171. machineconfig/scripts/python/{devops_add_ssh_key.py → nw/devops_add_ssh_key.py} +74 -44
  172. machineconfig/scripts/{linux → python/nw}/mount_nfs +1 -1
  173. machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +19 -16
  174. machineconfig/scripts/{linux → python/nw}/mount_nw_drive +1 -2
  175. machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +7 -8
  176. machineconfig/scripts/python/{onetimeshare.py → nw/onetimeshare.py} +0 -1
  177. machineconfig/scripts/python/nw/ssh_debug_linux.py +391 -0
  178. machineconfig/scripts/python/nw/ssh_debug_windows.py +338 -0
  179. machineconfig/scripts/python/{wifi_conn.py → nw/wifi_conn.py} +1 -51
  180. machineconfig/scripts/python/nw/wsl_windows_transfer.py +67 -0
  181. machineconfig/scripts/python/sessions.py +167 -0
  182. machineconfig/scripts/python/terminal.py +127 -0
  183. machineconfig/scripts/python/utils.py +66 -0
  184. machineconfig/scripts/windows/mounts/Restore-ThunderbirdProfile.ps1 +92 -0
  185. machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
  186. machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
  187. machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
  188. machineconfig/scripts/windows/wrap_mcfg.ps1 +60 -0
  189. machineconfig/settings/broot/br.sh +0 -4
  190. machineconfig/settings/broot/conf.toml +1 -1
  191. machineconfig/settings/helix/config.toml +16 -0
  192. machineconfig/settings/helix/languages.toml +13 -4
  193. machineconfig/settings/helix/yazi-picker.sh +12 -0
  194. machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
  195. machineconfig/settings/lf/linux/exe/previewer.sh +9 -3
  196. machineconfig/settings/lf/linux/lfrc +10 -12
  197. machineconfig/settings/lf/windows/fzf_edit.ps1 +2 -2
  198. machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
  199. machineconfig/settings/lf/windows/lfrc +18 -38
  200. machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
  201. machineconfig/settings/linters/.ruff.toml +1 -1
  202. machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
  203. machineconfig/settings/marimo/marimo.toml +80 -0
  204. machineconfig/settings/marimo/snippets/globalize.py +34 -0
  205. machineconfig/settings/pistol/pistol.conf +1 -1
  206. machineconfig/settings/shells/bash/init.sh +55 -31
  207. machineconfig/settings/shells/nushell/config.nu +1 -34
  208. machineconfig/settings/shells/nushell/init.nu +127 -0
  209. machineconfig/settings/shells/pwsh/init.ps1 +61 -43
  210. machineconfig/settings/shells/starship/starship.toml +16 -0
  211. machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
  212. machineconfig/settings/shells/wt/settings.json +32 -17
  213. machineconfig/settings/shells/zsh/init.sh +89 -0
  214. machineconfig/settings/svim/linux/init.toml +0 -4
  215. machineconfig/settings/svim/windows/init.toml +0 -3
  216. machineconfig/settings/yazi/init.lua +57 -0
  217. machineconfig/settings/yazi/keymap_linux.toml +79 -0
  218. machineconfig/settings/yazi/keymap_windows.toml +78 -0
  219. machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
  220. machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
  221. machineconfig/settings/yazi/yazi.toml +14 -1
  222. machineconfig/setup_linux/__init__.py +10 -0
  223. machineconfig/setup_linux/apps_desktop.sh +89 -0
  224. machineconfig/setup_linux/apps_gui.sh +64 -0
  225. machineconfig/setup_linux/{nix → others}/cli_installation.sh +9 -29
  226. machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
  227. machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
  228. machineconfig/setup_linux/uv.sh +15 -0
  229. machineconfig/setup_linux/web_shortcuts/interactive.sh +28 -203
  230. machineconfig/setup_mac/__init__.py +16 -0
  231. machineconfig/setup_mac/apps_gui.sh +248 -0
  232. machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
  233. machineconfig/setup_mac/uv.sh +36 -0
  234. machineconfig/setup_windows/__init__.py +8 -0
  235. machineconfig/setup_windows/others/power_options.ps1 +7 -0
  236. machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
  237. machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
  238. machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
  239. machineconfig/setup_windows/uv.ps1 +17 -0
  240. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -189
  241. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
  242. machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
  243. machineconfig/utils/accessories.py +52 -12
  244. machineconfig/utils/cloud/onedrive/README.md +139 -0
  245. machineconfig/utils/code.py +140 -93
  246. machineconfig/utils/files/art/fat_croco.txt +10 -0
  247. machineconfig/utils/files/art/halfwit_croco.txt +9 -0
  248. machineconfig/utils/files/art/happy_croco.txt +22 -0
  249. machineconfig/utils/files/art/water_croco.txt +11 -0
  250. machineconfig/utils/files/ascii_art.py +118 -0
  251. machineconfig/utils/files/dbms.py +257 -0
  252. machineconfig/utils/files/headers.py +68 -0
  253. machineconfig/utils/files/ouch/decompress.py +45 -0
  254. machineconfig/utils/files/read.py +95 -0
  255. machineconfig/utils/installer_utils/github_release_bulk.py +188 -0
  256. machineconfig/utils/installer_utils/install_from_url.py +180 -0
  257. machineconfig/utils/installer_utils/installer_class.py +239 -316
  258. machineconfig/utils/installer_utils/installer_cli.py +186 -0
  259. machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +90 -5
  260. machineconfig/utils/installer_utils/installer_runner.py +191 -0
  261. machineconfig/utils/io.py +77 -24
  262. machineconfig/utils/links.py +309 -100
  263. machineconfig/utils/meta.py +255 -0
  264. machineconfig/utils/notifications.py +1 -1
  265. machineconfig/utils/options.py +19 -47
  266. machineconfig/utils/path_extended.py +111 -121
  267. machineconfig/utils/path_helper.py +75 -22
  268. machineconfig/utils/procs.py +50 -74
  269. machineconfig/utils/scheduler.py +94 -97
  270. machineconfig/utils/scheduling.py +0 -3
  271. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +5 -17
  272. machineconfig/utils/schemas/installer/installer_types.py +28 -6
  273. machineconfig/utils/schemas/layouts/layout_types.py +34 -1
  274. machineconfig/utils/source_of_truth.py +3 -6
  275. machineconfig/utils/ssh.py +742 -254
  276. machineconfig/utils/ssh_utils/utils.py +0 -0
  277. machineconfig/utils/terminal.py +3 -140
  278. machineconfig/utils/tst.py +20 -0
  279. machineconfig/utils/upgrade_packages.py +109 -28
  280. machineconfig/utils/ve.py +13 -5
  281. machineconfig-7.69.dist-info/METADATA +124 -0
  282. machineconfig-7.69.dist-info/RECORD +454 -0
  283. machineconfig-7.69.dist-info/entry_points.txt +15 -0
  284. machineconfig/cluster/templates/cli_click.py +0 -102
  285. machineconfig/cluster/templates/cli_gooey.py +0 -115
  286. machineconfig/cluster/templates/utils.py +0 -51
  287. machineconfig/jobs/linux/msc/cli_agents.sh +0 -32
  288. machineconfig/jobs/python/create_bootable_media.py +0 -16
  289. machineconfig/jobs/python/python_cargo_build_share.py +0 -59
  290. machineconfig/jobs/python/python_ve_symlink.py +0 -29
  291. machineconfig/jobs/python/tasks.py +0 -3
  292. machineconfig/jobs/python/vscode/api.py +0 -48
  293. machineconfig/jobs/python/vscode/link_ve.py +0 -63
  294. machineconfig/jobs/python/vscode/select_interpreter.py +0 -87
  295. machineconfig/jobs/python/vscode/sync_code.py +0 -58
  296. machineconfig/jobs/python_custom_installers/archive/ngrok.py +0 -63
  297. machineconfig/jobs/python_custom_installers/dev/aider.py +0 -37
  298. machineconfig/jobs/python_custom_installers/dev/alacritty.py +0 -65
  299. machineconfig/jobs/python_custom_installers/dev/brave.py +0 -71
  300. machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +0 -50
  301. machineconfig/jobs/python_custom_installers/dev/code.py +0 -51
  302. machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -78
  303. machineconfig/jobs/python_custom_installers/dev/espanso.py +0 -90
  304. machineconfig/jobs/python_custom_installers/dev/goes.py +0 -55
  305. machineconfig/jobs/python_custom_installers/dev/lvim.py +0 -77
  306. machineconfig/jobs/python_custom_installers/dev/nerdfont.py +0 -68
  307. machineconfig/jobs/python_custom_installers/dev/redis.py +0 -65
  308. machineconfig/jobs/python_custom_installers/dev/reverse_proxy.md +0 -31
  309. machineconfig/jobs/python_custom_installers/dev/wezterm.py +0 -70
  310. machineconfig/jobs/python_custom_installers/docker.py +0 -74
  311. machineconfig/jobs/python_custom_installers/gh.py +0 -97
  312. machineconfig/jobs/python_custom_installers/scripts/linux/docker_start.sh +0 -45
  313. machineconfig/jobs/python_custom_installers/scripts/linux/pgsql.sh +0 -49
  314. machineconfig/jobs/python_custom_installers/scripts/linux/timescaledb.sh +0 -85
  315. machineconfig/jobs/python_custom_installers/warp-cli.py +0 -71
  316. machineconfig/jobs/python_generic_installers/config.json +0 -603
  317. machineconfig/jobs/python_generic_installers/config.json.bak +0 -414
  318. machineconfig/jobs/python_generic_installers/dev/config.archive.json +0 -18
  319. machineconfig/jobs/python_generic_installers/dev/config.json +0 -825
  320. machineconfig/jobs/python_generic_installers/dev/config.json.bak +0 -565
  321. machineconfig/jobs/python_linux_installers/archive/config.json +0 -18
  322. machineconfig/jobs/python_linux_installers/archive/config.json.bak +0 -10
  323. machineconfig/jobs/python_linux_installers/config.json +0 -145
  324. machineconfig/jobs/python_linux_installers/config.json.bak +0 -110
  325. machineconfig/jobs/python_linux_installers/dev/config.json +0 -276
  326. machineconfig/jobs/python_linux_installers/dev/config.json.bak +0 -206
  327. machineconfig/jobs/python_windows_installers/archive/file.json +0 -11
  328. machineconfig/jobs/python_windows_installers/config.json +0 -82
  329. machineconfig/jobs/python_windows_installers/config.json.bak +0 -56
  330. machineconfig/jobs/python_windows_installers/dev/config.json +0 -4
  331. machineconfig/jobs/python_windows_installers/dev/config.json.bak +0 -3
  332. machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
  333. machineconfig/jobs/windows/start_terminal.ps1 +0 -6
  334. machineconfig/jobs/windows/startup_file.cmd +0 -2
  335. machineconfig/profile/create.py +0 -169
  336. machineconfig/profile/shell.py +0 -176
  337. machineconfig/scripts/cloud/init.sh +0 -119
  338. machineconfig/scripts/linux/choose_wezterm_theme +0 -3
  339. machineconfig/scripts/linux/cloud_copy +0 -2
  340. machineconfig/scripts/linux/cloud_mount +0 -2
  341. machineconfig/scripts/linux/cloud_repo_sync +0 -2
  342. machineconfig/scripts/linux/cloud_sync +0 -2
  343. machineconfig/scripts/linux/croshell +0 -3
  344. machineconfig/scripts/linux/devops +0 -2
  345. machineconfig/scripts/linux/fire +0 -2
  346. machineconfig/scripts/linux/fire_agents +0 -2
  347. machineconfig/scripts/linux/ftpx +0 -2
  348. machineconfig/scripts/linux/fzf2g +0 -21
  349. machineconfig/scripts/linux/fzffg +0 -25
  350. machineconfig/scripts/linux/gh_models +0 -2
  351. machineconfig/scripts/linux/kill_process +0 -2
  352. machineconfig/scripts/linux/mcinit +0 -2
  353. machineconfig/scripts/linux/programs +0 -21
  354. machineconfig/scripts/linux/repos +0 -2
  355. machineconfig/scripts/linux/scheduler +0 -2
  356. machineconfig/scripts/linux/share_smb +0 -1
  357. machineconfig/scripts/linux/start_slidev +0 -2
  358. machineconfig/scripts/linux/start_terminals +0 -3
  359. machineconfig/scripts/linux/warp-cli.sh +0 -122
  360. machineconfig/scripts/linux/wifi_conn +0 -2
  361. machineconfig/scripts/linux/z_ls +0 -104
  362. machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
  363. machineconfig/scripts/python/archive/im2text.py +0 -34
  364. machineconfig/scripts/python/archive/tmate_conn.py +0 -41
  365. machineconfig/scripts/python/archive/tmate_start.py +0 -44
  366. machineconfig/scripts/python/cloud_repo_sync.py +0 -192
  367. machineconfig/scripts/python/cloud_sync.py +0 -85
  368. machineconfig/scripts/python/devops_devapps_install.py +0 -202
  369. machineconfig/scripts/python/devops_update_repos.py +0 -180
  370. machineconfig/scripts/python/dotfile.py +0 -52
  371. machineconfig/scripts/python/fire_agents.py +0 -176
  372. machineconfig/scripts/python/fire_agents_help_launch.py +0 -143
  373. machineconfig/scripts/python/fire_agents_load_balancer.py +0 -50
  374. machineconfig/scripts/python/fire_jobs_args_helper.py +0 -84
  375. machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -66
  376. machineconfig/scripts/python/get_zellij_cmd.py +0 -15
  377. machineconfig/scripts/python/gh_models.py +0 -104
  378. machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -114
  379. machineconfig/scripts/python/repos.py +0 -160
  380. machineconfig/scripts/python/snapshot.py +0 -25
  381. machineconfig/scripts/python/start_terminals.py +0 -121
  382. machineconfig/scripts/python/wsl_windows_transfer.py +0 -72
  383. machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
  384. machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
  385. machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
  386. machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
  387. machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
  388. machineconfig/scripts/windows/croshell.ps1 +0 -1
  389. machineconfig/scripts/windows/devops.ps1 +0 -1
  390. machineconfig/scripts/windows/dotfile.ps1 +0 -1
  391. machineconfig/scripts/windows/fire.ps1 +0 -1
  392. machineconfig/scripts/windows/ftpx.ps1 +0 -1
  393. machineconfig/scripts/windows/gpt.ps1 +0 -1
  394. machineconfig/scripts/windows/grep.ps1 +0 -2
  395. machineconfig/scripts/windows/kill_process.ps1 +0 -1
  396. machineconfig/scripts/windows/mcinit.ps1 +0 -1
  397. machineconfig/scripts/windows/nano.ps1 +0 -3
  398. machineconfig/scripts/windows/pomodoro.ps1 +0 -1
  399. machineconfig/scripts/windows/reload_path.ps1 +0 -3
  400. machineconfig/scripts/windows/repos.ps1 +0 -1
  401. machineconfig/scripts/windows/scheduler.ps1 +0 -1
  402. machineconfig/scripts/windows/snapshot.ps1 +0 -1
  403. machineconfig/scripts/windows/start_slidev.ps1 +0 -1
  404. machineconfig/scripts/windows/start_terminals.ps1 +0 -1
  405. machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
  406. machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
  407. machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
  408. machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
  409. machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
  410. machineconfig/setup_linux/web_shortcuts/ascii_art.sh +0 -93
  411. machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
  412. machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
  413. machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
  414. machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
  415. machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
  416. machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
  417. machineconfig/setup_windows/wt_and_pwsh/install_nerd_fonts.py +0 -100
  418. machineconfig/utils/ai/generate_file_checklist.py +0 -68
  419. machineconfig/utils/installer.py +0 -255
  420. machineconfig-3.7.dist-info/METADATA +0 -165
  421. machineconfig-3.7.dist-info/RECORD +0 -432
  422. machineconfig-3.7.dist-info/entry_points.txt +0 -18
  423. machineconfig/cluster/{templates → remote}/run_cloud.py +0 -0
  424. machineconfig/cluster/{templates → remote}/run_cluster.py +0 -0
  425. machineconfig/cluster/{templates → remote}/run_remote.py +0 -0
  426. machineconfig/jobs/{python → installer}/__init__.py +0 -0
  427. machineconfig/jobs/{python_custom_installers → installer/custom_dev}/__init__.py +0 -0
  428. machineconfig/{setup_windows/wt_and_pwsh → jobs/installer/powershell_scripts}/install_fonts.ps1 +0 -0
  429. machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
  430. machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
  431. machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
  432. machineconfig/{jobs/python_generic_installers → scripts/python/helpers_agents}/__init__.py +0 -0
  433. machineconfig/{jobs/python_linux_installers → scripts/python/helpers_agents/agentic_frameworks}/__init__.py +0 -0
  434. machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
  435. machineconfig/{jobs/python_linux_installers/dev → scripts/python/helpers_cloud}/__init__.py +0 -0
  436. machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
  437. /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
  438. /machineconfig/{jobs/python_windows_installers → scripts/python/helpers_croshell}/__init__.py +0 -0
  439. /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
  440. /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
  441. /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
  442. /machineconfig/{jobs/python_windows_installers/archive → scripts/python/helpers_devops}/__init__.py +0 -0
  443. /machineconfig/{jobs/python_windows_installers/dev → scripts/python/helpers_devops/themes}/__init__.py +0 -0
  444. /machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
  445. /machineconfig/scripts/python/{helpers → helpers_fire_command}/__init__.py +0 -0
  446. /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
  447. /machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/skrg +0 -0
  448. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfb.ps1 +0 -0
  449. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfg.ps1 +0 -0
  450. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfrga.bat +0 -0
  451. /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_sessions/__init__.py} +0 -0
  452. /machineconfig/scripts/{windows/share_nfs.ps1 → python/nw/__init__.py} +0 -0
  453. /machineconfig/scripts/{linux → python/nw}/mount_drive +0 -0
  454. /machineconfig/scripts/python/{mount_nw_drive.py → nw/mount_nw_drive.py} +0 -0
  455. /machineconfig/scripts/{linux → python/nw}/mount_smb +0 -0
  456. /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
  457. /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
  458. /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
  459. /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
  460. /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
  461. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
  462. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
  463. /machineconfig/{settings/yazi/keymap.toml → utils/files/ouch/__init__.py} +0 -0
  464. {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/WHEEL +0 -0
  465. {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/top_level.txt +0 -0
@@ -1,191 +1,30 @@
1
- Write-Host "
2
- 🚀 ===========================================
3
- 📦 Machine Configuration Installation Script
4
- ============================================="
5
1
 
6
- Write-Host "ℹ️ If you have execution policy issues, run:
7
- Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser"
8
- Write-Host "💡 To accept all prompts automatically, run: `$yesAll = `$true`n"
9
2
 
10
-
11
- Write-Host "🔄 Setting up Python environment..."
12
- Invoke-WebRequest -Uri "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/ve.ps1" -OutFile "ve.ps1"
13
- .\ve.ps1
14
- rm ve.ps1
15
-
16
- Write-Host "`n🔄 Setting up repositories..."
17
- Invoke-WebRequest -Uri "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/repos.ps1" -OutFile "repos.ps1"
18
- .\repos.ps1
19
- rm repos.ps1
20
-
21
- Write-Host "`n📂 ============================================
22
- 🔄 DOTFILES MIGRATION OPTIONS
23
- ============================================="
24
-
25
- Write-Host "🖱️ Method 1: USING MOUSE WITHOUT KB OR BROWSER SHARE
26
- On original machine, run:
27
- cd ~/dotfiles/creds/msc
28
- easy-sharing . --password rew
29
- Then open browser on new machine to get MouseWithoutBorders password"
30
-
31
- Write-Host "`n🔐 Method 2: USING SSH
32
- FROM REMOTE, RUN:
33
- ftpx ~/dotfiles `$(hostname):^ -z"
34
-
35
- Write-Host "`n💻 For WSL:
36
- wsl_server.ps1
37
- ftpx ~/dotfiles `$env:USERNAME@localhost:2222 -z
38
- # OR:
39
- New-Item -ItemType SymbolicLink -Path `$env:USERPROFILE\dotfiles -Target \\wsl`$\Ubuntu\home\`$env:USERNAME\dotfiles"
40
-
41
- Write-Host "`n☁️ Method 3: USING INTERNET SECURE SHARE
42
- cd ~
43
- cloud_copy SHARE_URL . --config ss
44
- (requires symlinks to be created first)"
45
-
46
- Write-Host "`n----------------------------------------"
47
- if (-not $yesAll) {
48
- $choice = Read-Host "🔒 Install SSH Server [y]/n"
49
- } else {
50
- $choice = "y"
51
- }
52
- if ([string]::IsNullOrEmpty($choice)) { $choice = "y" }
53
- if ($choice -eq "y" -or $choice -eq "Y") {
54
- Write-Host "`n🔧 Installing and configuring SSH server..."
55
- Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
56
- Start-Service sshd
57
- Set-Service -Name sshd -StartupType 'Automatic'
58
- Write-Host "✅ SSH Server installed and configured successfully!"
59
- } else {
60
- Write-Host "⏭️ Skipping SSH server installation"
61
- }
62
-
63
- Write-Host "`n✨ ===========================================
64
- 🎉 Installation Complete!
65
- ============================================="
66
-
67
- # Confirm copying finished
68
- if (-not $yesAll) {
69
- $choice = Read-Host "Did you finish copying [y]/n ? "
70
- } else {
71
- $choice = "y"
72
- }
73
- if ([string]::IsNullOrEmpty($choice)) { $choice = "y" }
74
- if ($choice -eq "y" -or $choice -eq "Y") {
75
- Write-Host "Proceeding..."
76
- } else {
77
- Write-Host "Installation aborted."
78
- }
79
-
80
- # Create Symlinks
81
- if (-not $yesAll) {
82
- $createLinksChoice = Read-Host "Create (Sym/Hard)links (finish dotfiles transfer first) [y]/n ? "
83
- } else {
84
- $createLinksChoice = "y"
85
- }
86
- if ([string]::IsNullOrEmpty($createLinksChoice)) { $createLinksChoice = "y" }
87
-
88
- if ($createLinksChoice -eq "y" -or $createLinksChoice -eq "Y") {
89
- if (-not $yesAll) {
90
- $linkTypeChoice = Read-Host "Create Symlinks (s) or Hardlinks (h) [s]/h ? "
91
- } else {
92
- $linkTypeChoice = "h"
93
- }
94
-
95
- . ~\code\machineconfig\.venv\Scripts\Activate.ps1
96
-
97
- if ($linkTypeChoice -eq "s" -or $linkTypeChoice -eq "S") {
98
- python -m fire machineconfig.profile.create main --choice=all
99
- } elseif ($linkTypeChoice -eq "h" -or $linkTypeChoice -eq "H") {
100
- # python -m fire machineconfig.profile.create_hardlinks main --choice=all
101
- python -m fire machineconfig.profile.create main --choice=all
102
- } else {
103
- Write-Host "Invalid choice for link type. Installation aborted."
104
- }
105
-
106
- # icacls "~\.ssh\*" /inheritance:r /grant:r "$($env:USERNAME):(F)"
107
- # icacls "~\.ssh" /inheritance:r /grant:r "$($env:USERNAME):(F)"
108
- } else {
109
- Write-Host "Installation aborted."
110
- }
111
-
112
- # Install CLI Apps
113
- if (-not $yesAll) {
114
- $choice = Read-Host "Install CLI Apps [y]/n ? "
115
- if ([string]::IsNullOrEmpty($choice)) { $choice = "y" }
116
- if ($choice -eq "y" -or $choice -eq "Y") {
117
- . ~\code\machineconfig\src\machineconfig\setup_windows\devapps.ps1
118
- } else {
119
- Write-Host "Installation aborted."
120
- }
121
-
122
- } else {
123
- uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_devapps_install main --which=AllEssentials
124
- }
125
-
126
-
127
- # Retrieve Repos
128
- if (-not $yesAll) {
129
- $choice = Read-Host "Retrieve Repos at ~/code [y]/n ? "
130
- } else {
131
- $choice = "y"
132
- }
133
- if ([string]::IsNullOrEmpty($choice)) { $choice = "y" }
134
- if ($choice -eq "y" -or $choice -eq "Y") {
135
- repos ~\code --clone --cloud odg1
136
- } else {
137
- Write-Host "Installation aborted."
138
- }
139
-
140
- # Retrieve Data
141
- if (-not $yesAll) {
142
- $choice = Read-Host "Retrieve data [y]/n ? "
143
- } else {
144
- $choice = "y"
145
- }
146
- if ([string]::IsNullOrEmpty($choice)) { $choice = "y" }
147
- if ($choice -eq "y" -or $choice -eq "Y") {
148
- uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_backup_retrieve main --direction=RETRIEVE
149
- } else {
150
- Write-Host "Installation aborted."
151
- }
152
-
153
-
154
- # Install Brave, WezTerm, and VSCode
155
- if (-not $yesAll) {
156
- $choice = Read-Host "Install Brave+WindowsTerminal+WezTerm+VSCode [y]/n ? "
157
- } else {
158
- $choice = "y"
159
- }
160
- if ([string]::IsNullOrEmpty($choice)) { $choice = "y" }
161
- if ($choice -eq "y" -or $choice -eq "Y") {
162
- winget install --no-upgrade --name "Windows Terminal" --Id "Microsoft.WindowsTerminal" --source winget --scope user --accept-package-agreements --accept-source-agreements # Terminal is is installed by default on W 11
163
- winget install --no-upgrade --name "Powershell" --Id "Microsoft.PowerShell" --source winget --scope user --accept-package-agreements --accept-source-agreements # powershell require admin
164
- winget install --no-upgrade --name "Brave" --Id "Brave.Brave" --source winget --scope user --accept-package-agreements --accept-source-agreements
165
- winget install --no-upgrade --name "Microsoft Visual Studio Code" --Id "Microsoft.VisualStudioCode" --source winget --scope user --accept-package-agreements --accept-source-agreements
166
- uv run --python 3.13 --with machineconfig python -m fire machineconfig.setup_windows.wt_and_pwsh.install_nerd_fonts main
167
- uv run --python 3.13 --with machineconfig python -m fire machineconfig.setup_windows.wt_and_pwsh.set_wt_settings main
168
- } else {
169
- Write-Host "Installation aborted."
170
- }
171
-
172
-
173
- # Install Apps
174
- if (-not $yesAll) {
175
- $choice = Read-Host "Install Windows Apps [y]/n ? "
176
- } else {
177
- $choice = "y"
178
- }
179
- if ($choice -eq "y" -or $choice -eq "Y") {
180
- Invoke-WebRequest -Uri "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/apps.ps1" -OutFile "apps.ps1"
181
- .\apps.ps1
182
- } else {
183
- Write-Host "Installation aborted."
184
- }
185
-
186
- # Instructions for Thunderbird profile restoration
187
- # Run this after installing Thunderbird and starting it and shutting it down but before downloading backup
188
- # cd ~/AppData/Roaming/ThunderBird/Profiles
189
- # $res = Get-ChildItem
190
- # $name = $res[0].Name
191
- # Move-Item $backup_folder $name
3
+ iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
4
+ iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/windows/wrap_mcfg.ps1").Content
5
+
6
+ function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" devops $args }
7
+ function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" cloud $args }
8
+ function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" agents $args }
9
+ function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" sessions $args }
10
+ function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" ftpx $args }
11
+ function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" fire $args }
12
+ function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" croshell $args }
13
+ function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" utils $args }
14
+ function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" terminal $args }
15
+ function msearch { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.69" msearch $args }
16
+
17
+ function d { wrap_in_shell_script devops @args }
18
+ function c { wrap_in_shell_script cloud @args }
19
+ function a { wrap_in_shell_script agents @args }
20
+ function sx { wrap_in_shell_script sessions @args }
21
+ function fx { wrap_in_shell_script ftpx @args }
22
+ function f { wrap_in_shell_script fire @args }
23
+ function rr { wrap_in_shell_script croshell @args }
24
+ function u { wrap_in_shell_script utils @args }
25
+ function t { wrap_in_shell_script terminal @args }
26
+ function ms { wrap_in_shell_script msearch @args }
27
+
28
+ Write-Host "mcfg command aliases are now defined in this PowerShell session."
29
+
30
+ devops self interactive
@@ -0,0 +1,17 @@
1
+
2
+ iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
3
+ # iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/windows/wrap_mcfg.ps1").Content
4
+
5
+ uv tool install --upgrade --python 3.14 machineconfig
6
+
7
+ devops install --group sysabc
8
+
9
+ # configs
10
+ devops config copy-assets both
11
+ devops config public --method copy --on-conflict overwrite-default-path --which all
12
+ devops config shell
13
+ devops config shell --which nushell
14
+
15
+ wt # start Windows Terminal to pick up config changes
16
+ devops install --group termabc
17
+ devops install --group gui
@@ -1,13 +1,14 @@
1
1
  """Set Windows Terminal Settings"""
2
2
 
3
3
  from machineconfig.utils.accessories import randstr
4
- from machineconfig.utils.path_extended import PathExtended as PathExtended
4
+ from machineconfig.utils.path_extended import PathExtended
5
5
  from machineconfig.utils.io import read_json, save_json
6
6
  import platform
7
7
 
8
8
  # from uuid import uuid4
9
9
  import os
10
10
  from typing import Any
11
+ from rich import box
11
12
  from rich.console import Console
12
13
  from rich.panel import Panel
13
14
 
@@ -28,34 +29,41 @@ system = platform.system() # Linux or Windows
28
29
  assert system == "Windows", "This script is only for Windows."
29
30
 
30
31
 
32
+ def render_banner(message: str, title: str, border_style: str, box_style: box.Box) -> None:
33
+ console.print(Panel.fit(message, title=title, border_style=border_style, box=box_style, padding=(1, 4)))
34
+
35
+
31
36
  class TerminalSettings(object):
32
37
  def __init__(self):
33
38
  # Grabbing Terminal Settings file:
34
- print(f"\n{'=' * 80}\n🔍 INITIALIZING TERMINAL SETTINGS 🔍\n{'=' * 80}")
39
+ console.print()
40
+ render_banner("🔍 INITIALIZING TERMINAL SETTINGS 🔍", "Windows Terminal", "cyan", box.DOUBLE)
41
+ console.print()
35
42
  tmp = os.getenv("LOCALAPPDATA")
36
43
  if not isinstance(tmp, str):
37
- print("❌ ERROR: Could not find LOCALAPPDATA environment variable!")
44
+ console.print("❌ ERROR: Could not find LOCALAPPDATA environment variable!")
38
45
  raise ValueError("Could not find LOCALAPPDATA environment variable.")
39
46
  self.path = PathExtended(tmp).joinpath(r"Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json")
40
47
  backup_name = f".orig_{randstr()}"
41
- print(f"📝 Creating backup of original settings as {backup_name}...")
48
+ console.print(f"📝 Creating backup of original settings as {backup_name}...")
42
49
  self.path.copy(append=backup_name)
43
- print(f"📂 Loading Windows Terminal settings from: {self.path}")
50
+ console.print(f"📂 Loading Windows Terminal settings from: {self.path}")
44
51
  self.dat: dict[str, Any] = read_json(self.path)
45
52
  # Use a plain Python list for profiles
46
53
  self.profs = list(self.dat["profiles"]["list"])
47
- console = Console()
48
- console.print(Panel(f"✅ Successfully loaded {len(self.profs)} profiles", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue"))
54
+ console.print(Panel(f"✅ Successfully loaded {len(self.profs)} profiles", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue", box=box.ROUNDED))
49
55
 
50
56
  def save_terminal_settings(self):
51
- print(f"\n💾 Saving terminal settings to: {self.path}")
57
+ console.print()
58
+ console.print(f"💾 Saving terminal settings to: {self.path}")
52
59
  self.dat["profiles"]["list"] = list(self.profs)
53
60
  save_json(obj=self.dat, path=self.path, indent=5)
54
- console.print(Panel("✅ Settings saved successfully!", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue"))
61
+ console.print(Panel("✅ Settings saved successfully!", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue", box=box.ROUNDED))
55
62
 
56
63
  # ========================= Terminal Settings =========================================
57
64
  def update_default_settings(self):
58
- print("\n⚙️ Updating default terminal settings...")
65
+ console.print()
66
+ console.print("⚙️ Updating default terminal settings...")
59
67
  # Changing start up settings:
60
68
  self.dat["startOnUserLogin"] = True
61
69
  self.dat["launchMode"] = "fullscreen"
@@ -64,12 +72,13 @@ class TerminalSettings(object):
64
72
  self.dat["copyOnSelect"] = True
65
73
  self.dat["profiles"]["defaults"]["padding"] = "0"
66
74
  self.dat["profiles"]["defaults"]["useAcrylic"] = False
67
- console.print(Panel("✅ Default settings updated", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue"))
75
+ console.print(Panel("✅ Default settings updated", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue", box=box.ROUNDED))
68
76
 
69
77
  # 1- Customizing Powershell========================================================
70
78
  # as opposed to Windows Powershell
71
79
  def customize_powershell(self, nerd_font: bool = True):
72
- print("\n🛠️ Customizing PowerShell profile...")
80
+ console.print()
81
+ console.print("🛠️ Customizing PowerShell profile...")
73
82
  pwsh: dict[str, Any] = dict(
74
83
  name="PowerShell",
75
84
  commandline="pwsh",
@@ -79,45 +88,50 @@ class TerminalSettings(object):
79
88
  startingDirectory="%USERPROFILE%", # "%USERPROFILE%", # None: inherent from parent process.
80
89
  )
81
90
  if nerd_font:
82
- print("🔤 Setting PowerShell font to CaskaydiaCove Nerd Font...")
91
+ console.print("🔤 Setting PowerShell font to CaskaydiaCove Nerd Font...")
83
92
  pwsh["font"] = dict(face="CaskaydiaCove Nerd Font") # because oh-my-posh uses glyphs from this font.
84
93
 
85
94
  for idx, item in enumerate(self.profs):
86
95
  if item["name"] == "PowerShell":
87
96
  self.profs[idx].update(pwsh)
88
- console.print(Panel("✅ PowerShell profile customized successfully", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue"))
97
+ console.print(Panel("✅ PowerShell profile customized successfully", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue", box=box.ROUNDED))
89
98
  break
90
99
  else:
91
- console.print(Panel("❌ Couldn't customize PowerShell because profile not found, try to install it first.", title="[bold red]Terminal Settings[/bold red]", border_style="red"))
100
+ console.print(Panel("❌ Couldn't customize PowerShell because profile not found, try to install it first.", title="[bold red]Terminal Settings[/bold red]", border_style="red", box=box.ROUNDED))
92
101
 
93
102
  def make_powershell_default_profile(self):
94
- print("\n🌟 Setting PowerShell as the default profile...")
103
+ console.print()
104
+ console.print("🌟 Setting PowerShell as the default profile...")
95
105
  for profile in self.profs:
96
106
  if profile["name"] == "PowerShell":
97
107
  self.dat["defaultProfile"] = profile["guid"]
98
- console.print(Panel("✅ PowerShell is now the default profile!", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue"))
108
+ console.print(Panel("✅ PowerShell is now the default profile!", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue", box=box.ROUNDED))
99
109
  break
100
110
  else:
101
- console.print(Panel("❌ PowerShell profile was not found in the list of profiles and therefore was not made the default.", title="[bold red]Terminal Settings[/bold red]", border_style="red"))
111
+ console.print(Panel("❌ PowerShell profile was not found in the list of profiles and therefore was not made the default.", title="[bold red]Terminal Settings[/bold red]", border_style="red", box=box.ROUNDED))
102
112
 
103
113
 
104
114
  def main():
105
- print(f"\n{'=' * 80}\n🖥️ WINDOWS TERMINAL SETUP 🖥️\n{'=' * 80}")
115
+ console.print()
116
+ render_banner("🖥️ WINDOWS TERMINAL SETUP 🖥️", "Windows Terminal", "cyan", box.DOUBLE)
117
+ console.print()
106
118
  shell = {"powershell": "pwsh.exe", "Windows Powershell": "powershell.exe"}["powershell"].split(".exe", maxsplit=1)[0]
107
119
  if shell == "pwsh":
108
- print("🚀 Starting Windows Terminal configuration with PowerShell...")
120
+ console.print("🚀 Starting Windows Terminal configuration with PowerShell...")
109
121
  ts = TerminalSettings()
110
122
  ts.update_default_settings()
111
123
  ts.customize_powershell(nerd_font=True)
112
124
  ts.make_powershell_default_profile()
113
- print("⌨️ Adding keyboard shortcut for pane zoom (ctrl+shift+z)...")
125
+ console.print("⌨️ Adding keyboard shortcut for pane zoom (ctrl+shift+z)...")
114
126
  ts.dat["actions"].append({"command": "togglePaneZoom", "keys": "ctrl+shift+z"})
115
127
 
116
128
  ts.save_terminal_settings()
117
- print(f"\n{'=' * 80}\n✨ WINDOWS TERMINAL SETUP COMPLETE ✨\n{'=' * 80}")
129
+ console.print()
130
+ render_banner("✨ WINDOWS TERMINAL SETUP COMPLETE ✨", "Windows Terminal", "green", box.DOUBLE)
131
+ console.print()
118
132
  else:
119
133
  error_msg = "❌ ERROR: Only PowerShell is supported, not Windows PowerShell!"
120
- print(error_msg)
134
+ console.print(error_msg)
121
135
  raise NotImplementedError(error_msg)
122
136
 
123
137
 
@@ -1,6 +1,7 @@
1
- from pathlib import Path
2
1
  from typing import Optional, Any
3
2
 
3
+ from datetime import datetime, timezone, timedelta
4
+
4
5
 
5
6
  def randstr(length: int = 10, lower: bool = True, upper: bool = True, digits: bool = True, punctuation: bool = False, safe: bool = False, noun: bool = False) -> str:
6
7
  if safe:
@@ -18,23 +19,58 @@ def randstr(length: int = 10, lower: bool = True, upper: bool = True, digits: bo
18
19
  return "".join(random.choices(population, k=length))
19
20
 
20
21
 
21
- def split[T](iterable: list[T], every: int = 1, to: Optional[int] = None) -> list[list[T]]:
22
+ def split_timeframe(start_dt: str, end_dt: str, resolution_ms: int, to: Optional[int]=None, every_ms: Optional[int]=None) -> list[tuple[datetime, datetime]]:
23
+ if (to is None) == (every_ms is None):
24
+ raise ValueError("Exactly one of 'to' or 'every_ms' must be provided, not both or neither")
25
+ start_dt_obj = datetime.fromisoformat(start_dt).replace(tzinfo=timezone.utc)
26
+ end_dt_obj = datetime.fromisoformat(end_dt).replace(tzinfo=timezone.utc)
27
+ delta = end_dt_obj - start_dt_obj
28
+ resolution = timedelta(milliseconds=resolution_ms)
29
+ res: list[tuple[datetime, datetime]] = []
30
+ if to is not None:
31
+ split_size_seconds: float = delta.total_seconds() / to
32
+ split_size_rounded: float = round(split_size_seconds / 60) * 60
33
+ split_size = timedelta(seconds=split_size_rounded)
34
+
35
+ for idx in range(to):
36
+ start = start_dt_obj + split_size * idx
37
+ assert start < end_dt_obj
38
+ if idx == to - 1:
39
+ end = end_dt_obj
40
+ else:
41
+ end = start_dt_obj + split_size * (idx + 1) - resolution
42
+ res.append((start, end))
43
+ else:
44
+ if every_ms is None:
45
+ raise ValueError("every_ms cannot be None when to is None")
46
+ split_size = timedelta(milliseconds=every_ms)
47
+ current_start = start_dt_obj
48
+ while current_start < end_dt_obj:
49
+ current_end = min(current_start + split_size - resolution, end_dt_obj)
50
+ res.append((current_start, current_end))
51
+ current_start += split_size
52
+ return res
53
+ def split_list[T](sequence: list[T], every: Optional[int]=None, to: Optional[int]=None) -> list[list[T]]:
54
+ if (every is None) == (to is None):
55
+ raise ValueError("Exactly one of 'every' or 'to' must be provided, not both or neither")
56
+ if len(sequence) == 0:
57
+ return []
22
58
  import math
23
-
24
- every = every if to is None else math.ceil(len(iterable) / to)
59
+ if to is not None:
60
+ every = math.ceil(len(sequence) / to)
61
+ assert every is not None
25
62
  res: list[list[T]] = []
26
- for ix in range(0, len(iterable), every):
27
- if ix + every < len(iterable):
28
- tmp = iterable[ix : ix + every]
63
+ for ix in range(0, len(sequence), every):
64
+ if ix + every < len(sequence):
65
+ tmp = sequence[ix : ix + every]
29
66
  else:
30
- tmp = iterable[ix : len(iterable)]
67
+ tmp = sequence[ix : len(sequence)]
31
68
  res.append(list(tmp))
32
69
  return list(res)
33
70
 
34
71
 
35
72
  def pprint(obj: dict[Any, Any], title: str) -> None:
36
73
  from rich import inspect
37
-
38
74
  inspect(type("TempStruct", (object,), obj)(), value=False, title=title, docs=False, dunder=False, sort=False)
39
75
 
40
76
 
@@ -59,14 +95,18 @@ def human_friendly_dict(d: dict[str, Any]) -> dict[str, Any]:
59
95
  return result
60
96
 
61
97
 
62
- def get_repo_root(path: Path) -> Optional[Path]:
98
+ def get_repo_root(path: "Path") -> Optional["Path"]:
63
99
  from git import Repo, InvalidGitRepositoryError
64
-
65
100
  try:
66
- repo = Repo(str(path), search_parent_directories=True)
101
+ repo = Repo(path, search_parent_directories=True)
67
102
  root = repo.working_tree_dir
68
103
  if root is not None:
104
+ from pathlib import Path
69
105
  return Path(root)
70
106
  except InvalidGitRepositoryError:
71
107
  pass
72
108
  return None
109
+
110
+
111
+ if __name__ == "__main__":
112
+ from pathlib import Path
@@ -0,0 +1,139 @@
1
+ # OneDrive API without rclone
2
+
3
+ This module provides direct OneDrive integration using Microsoft Graph API without requiring rclone.
4
+
5
+ ## Features
6
+
7
+ - ✅ Automatic token refresh when expired
8
+ - ✅ Persistent token storage
9
+ - ✅ Upload/download files with progress tracking
10
+ - ✅ Support for large file uploads (chunked)
11
+ - ✅ Direct OAuth2 authentication setup
12
+
13
+ ## Quick Start
14
+
15
+ ### Option 1: Direct OAuth Setup (Recommended)
16
+
17
+ 1. **Set up Azure App Registration:**
18
+ - Go to [Azure Portal](https://portal.azure.com)
19
+ - Navigate to 'Azure Active Directory' > 'App registrations'
20
+ - Click 'New registration'
21
+ - Name: 'OneDrive API Access'
22
+ - Redirect URI: `http://localhost:8080/callback`
23
+ - Add permissions: `Files.ReadWrite.All` and `offline_access`
24
+
25
+ 2. **Set environment variables:**
26
+ ```bash
27
+ export ONEDRIVE_CLIENT_ID='your_client_id_here'
28
+ export ONEDRIVE_REDIRECT_URI='http://localhost:8080/callback'
29
+ ```
30
+
31
+ 3. **Run initial setup:**
32
+ ```python
33
+ from transaction import setup_oauth_authentication
34
+ setup_oauth_authentication()
35
+ ```
36
+
37
+ ### Option 2: Using existing rclone token
38
+
39
+ If you already have rclone configured, the system will automatically use and refresh your existing tokens.
40
+
41
+ ## Usage Examples
42
+
43
+ ```python
44
+ from transaction import push_to_onedrive, pull_from_onedrive
45
+
46
+ # Upload a file
47
+ success = push_to_onedrive('/path/to/local/file.pdf', '/Documents/file.pdf')
48
+
49
+ # Download a file
50
+ success = pull_from_onedrive('/Documents/file.pdf', '/path/to/local/downloaded.pdf')
51
+ ```
52
+
53
+ ## Token Management
54
+
55
+ ### Automatic Token Refresh
56
+
57
+ The system automatically handles token refresh:
58
+
59
+ ```python
60
+ from transaction import get_access_token
61
+
62
+ # This will automatically refresh if expired
63
+ token = get_access_token()
64
+ ```
65
+
66
+ ### Manual Token Operations
67
+
68
+ ```python
69
+ from transaction import refresh_access_token, save_token_to_file, load_token_from_file
70
+
71
+ # Manually refresh token
72
+ new_token = refresh_access_token()
73
+
74
+ # Save token to file
75
+ save_token_to_file(token_data)
76
+
77
+ # Load token from file
78
+ token_data = load_token_from_file()
79
+ ```
80
+
81
+ ## How Token Renewal Works
82
+
83
+ 1. **Automatic Detection**: The system checks token expiry before each API call
84
+ 2. **Refresh Attempt**: If expired, it automatically uses the refresh token to get a new access token
85
+ 3. **Persistent Storage**: New tokens are saved to `~/.onedrive_token.json` for future use
86
+ 4. **Fallback**: If refresh fails, it provides clear instructions for manual intervention
87
+
88
+ ## No rclone Required
89
+
90
+ This implementation eliminates the need for rclone by:
91
+
92
+ - Using Microsoft Graph API directly
93
+ - Implementing OAuth2 flow natively
94
+ - Managing token lifecycle automatically
95
+ - Providing persistent token storage
96
+
97
+ ## Error Handling
98
+
99
+ The system gracefully handles various scenarios:
100
+
101
+ - Expired tokens → Automatic refresh
102
+ - Network errors → Detailed error messages
103
+ - Missing permissions → Clear setup instructions
104
+ - Invalid tokens → Step-by-step recovery guide
105
+
106
+ ## Files Created
107
+
108
+ - `~/.onedrive_token.json`: Encrypted token storage (chmod 600)
109
+ - Token is automatically loaded on import
110
+
111
+ ## Security
112
+
113
+ - Tokens are stored with restrictive permissions (600)
114
+ - Client secrets are optional (public client mode supported)
115
+ - Refresh tokens are securely managed
116
+ - No sensitive data in logs
117
+
118
+ ## Troubleshooting
119
+
120
+ ### Token Refresh Failed
121
+ ```python
122
+ # Try manual refresh
123
+ from transaction import refresh_access_token
124
+ token = refresh_access_token()
125
+
126
+ # Or re-run OAuth setup
127
+ from transaction import setup_oauth_authentication
128
+ setup_oauth_authentication()
129
+ ```
130
+
131
+ ### Permission Errors
132
+ Make sure your Azure app has the correct permissions:
133
+ - `Files.ReadWrite.All` (Delegated)
134
+ - `offline_access` (Delegated)
135
+
136
+ ### Network Issues
137
+ Check your firewall allows connections to:
138
+ - `https://login.microsoftonline.com`
139
+ - `https://graph.microsoft.com`