machineconfig 3.99__py3-none-any.whl → 7.66__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 (418) 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 +2 -16
  32. machineconfig/jobs/installer/custom/boxes.py +61 -0
  33. machineconfig/jobs/installer/custom/gh.py +69 -53
  34. machineconfig/jobs/installer/custom/hx.py +77 -20
  35. machineconfig/jobs/installer/custom_dev/alacritty.py +45 -30
  36. machineconfig/jobs/installer/custom_dev/brave.py +43 -35
  37. machineconfig/jobs/installer/custom_dev/bypass_paywall.py +31 -20
  38. machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
  39. machineconfig/jobs/installer/custom_dev/code.py +33 -21
  40. machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
  41. machineconfig/jobs/installer/custom_dev/espanso.py +64 -41
  42. machineconfig/jobs/installer/custom_dev/goes.py +41 -36
  43. machineconfig/jobs/installer/custom_dev/lvim.py +49 -33
  44. machineconfig/jobs/installer/custom_dev/nerdfont.py +71 -47
  45. machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +32 -26
  46. machineconfig/jobs/installer/custom_dev/redis.py +51 -33
  47. machineconfig/jobs/installer/custom_dev/sysabc.py +119 -0
  48. machineconfig/jobs/installer/custom_dev/wezterm.py +55 -39
  49. machineconfig/jobs/installer/custom_dev/winget.py +1 -0
  50. machineconfig/jobs/installer/installer_data.json +3406 -0
  51. machineconfig/jobs/installer/linux_scripts/brave.sh +4 -14
  52. machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +5 -17
  53. machineconfig/jobs/installer/linux_scripts/docker.sh +5 -17
  54. machineconfig/jobs/installer/linux_scripts/docker_start.sh +6 -14
  55. machineconfig/jobs/installer/linux_scripts/edge.sh +3 -11
  56. machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
  57. machineconfig/jobs/installer/linux_scripts/nerdfont.sh +5 -17
  58. machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
  59. machineconfig/jobs/installer/linux_scripts/ngrok.sh +6 -0
  60. machineconfig/jobs/installer/linux_scripts/q.sh +9 -0
  61. machineconfig/jobs/installer/linux_scripts/redis.sh +6 -17
  62. machineconfig/jobs/installer/linux_scripts/vscode.sh +5 -17
  63. machineconfig/jobs/installer/linux_scripts/wezterm.sh +4 -12
  64. machineconfig/jobs/installer/package_groups.py +255 -0
  65. machineconfig/logger.py +0 -1
  66. machineconfig/profile/backup.toml +49 -0
  67. machineconfig/profile/bash_shell_profiles.md +11 -0
  68. machineconfig/profile/create_helper.py +74 -0
  69. machineconfig/profile/create_links.py +288 -0
  70. machineconfig/profile/create_links_export.py +100 -0
  71. machineconfig/profile/create_shell_profile.py +136 -0
  72. machineconfig/profile/mapper.toml +258 -0
  73. machineconfig/scripts/Restore-ThunderbirdProfile.ps1 +92 -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/initai.py +3 -28
  83. machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +17 -18
  84. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +17 -18
  85. machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
  86. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +1 -1
  87. machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
  88. machineconfig/scripts/python/ai/solutions/generic.py +27 -4
  89. machineconfig/scripts/python/ai/vscode_tasks.py +37 -0
  90. machineconfig/scripts/python/cloud.py +29 -0
  91. machineconfig/scripts/python/croshell.py +117 -181
  92. machineconfig/scripts/python/define.py +31 -0
  93. machineconfig/scripts/python/devops.py +44 -124
  94. machineconfig/scripts/python/devops_navigator.py +10 -0
  95. machineconfig/scripts/python/env_manager/__init__.py +1 -0
  96. machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
  97. machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
  98. machineconfig/scripts/python/explore.py +49 -0
  99. machineconfig/scripts/python/fire_jobs.py +106 -244
  100. machineconfig/scripts/python/ftpx.py +125 -68
  101. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +14 -0
  102. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +37 -0
  103. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
  104. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +42 -0
  105. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
  106. machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +110 -0
  107. machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +34 -0
  108. machineconfig/scripts/python/helpers_agents/fire_agents_load_balancer.py +22 -0
  109. machineconfig/scripts/python/helpers_agents/templates/prompt.txt +6 -0
  110. machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
  111. machineconfig/scripts/python/helpers_agents/templates/template.sh +24 -0
  112. machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +30 -23
  113. machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +11 -19
  114. machineconfig/scripts/python/{cloud_sync.py → helpers_cloud/cloud_sync.py} +12 -18
  115. machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
  116. machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
  117. machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +17 -7
  118. machineconfig/scripts/python/helpers_devops/cli_config.py +95 -0
  119. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
  120. machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
  121. machineconfig/scripts/python/helpers_devops/cli_nw.py +134 -0
  122. machineconfig/scripts/python/helpers_devops/cli_repos.py +182 -0
  123. machineconfig/scripts/python/helpers_devops/cli_self.py +134 -0
  124. machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
  125. machineconfig/scripts/python/helpers_devops/cli_share_server.py +141 -0
  126. machineconfig/scripts/python/helpers_devops/cli_terminal.py +156 -0
  127. machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
  128. machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
  129. machineconfig/scripts/python/helpers_devops/devops_status.py +511 -0
  130. machineconfig/scripts/python/helpers_devops/devops_update_repos.py +269 -0
  131. machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
  132. machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
  133. machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +2 -2
  134. machineconfig/scripts/python/helpers_fire_command/__init__.py +0 -0
  135. machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -87
  136. machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +145 -0
  137. machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +110 -0
  138. machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
  139. machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
  140. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfag +1 -1
  141. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +1 -1
  142. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfrga +1 -1
  143. machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
  144. machineconfig/scripts/python/helpers_navigator/command_builder.py +111 -0
  145. machineconfig/scripts/python/helpers_navigator/command_detail.py +44 -0
  146. machineconfig/scripts/python/helpers_navigator/command_tree.py +588 -0
  147. machineconfig/scripts/python/helpers_navigator/data_models.py +28 -0
  148. machineconfig/scripts/python/helpers_navigator/main_app.py +272 -0
  149. machineconfig/scripts/python/helpers_navigator/search_bar.py +15 -0
  150. machineconfig/scripts/python/helpers_repos/action.py +209 -0
  151. machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
  152. machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +6 -7
  153. machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
  154. machineconfig/scripts/python/helpers_repos/count_lines.py +348 -0
  155. machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +17 -0
  156. machineconfig/scripts/python/helpers_repos/entrypoint.py +77 -0
  157. machineconfig/scripts/python/helpers_repos/grource.py +340 -0
  158. machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +7 -4
  159. machineconfig/scripts/python/helpers_repos/sync.py +66 -0
  160. machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
  161. machineconfig/scripts/python/helpers_sessions/__init__.py +0 -0
  162. machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +58 -0
  163. machineconfig/scripts/python/helpers_utils/download.py +152 -0
  164. machineconfig/scripts/python/helpers_utils/path.py +108 -0
  165. machineconfig/scripts/python/interactive.py +79 -160
  166. machineconfig/scripts/python/machineconfig.py +63 -0
  167. machineconfig/scripts/python/msearch.py +21 -0
  168. machineconfig/scripts/python/nw/__init__.py +0 -0
  169. machineconfig/scripts/python/{devops_add_identity.py → nw/devops_add_identity.py} +1 -3
  170. machineconfig/scripts/python/{devops_add_ssh_key.py → nw/devops_add_ssh_key.py} +74 -44
  171. machineconfig/scripts/{linux → python/nw}/mount_nfs +1 -1
  172. machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +19 -16
  173. machineconfig/scripts/{linux → python/nw}/mount_nw_drive +1 -2
  174. machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +7 -8
  175. machineconfig/scripts/python/{onetimeshare.py → nw/onetimeshare.py} +0 -1
  176. machineconfig/scripts/python/nw/ssh_debug_linux.py +391 -0
  177. machineconfig/scripts/python/nw/ssh_debug_windows.py +338 -0
  178. machineconfig/scripts/python/{wifi_conn.py → nw/wifi_conn.py} +1 -53
  179. machineconfig/scripts/python/{wsl_windows_transfer.py → nw/wsl_windows_transfer.py} +6 -5
  180. machineconfig/scripts/python/sessions.py +167 -0
  181. machineconfig/scripts/python/terminal.py +127 -0
  182. machineconfig/scripts/python/utils.py +66 -0
  183. machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
  184. machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
  185. machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
  186. machineconfig/scripts/windows/wrap_mcfg.ps1 +60 -0
  187. machineconfig/settings/broot/br.sh +0 -4
  188. machineconfig/settings/broot/conf.toml +1 -1
  189. machineconfig/settings/helix/config.toml +16 -0
  190. machineconfig/settings/helix/languages.toml +13 -4
  191. machineconfig/settings/helix/yazi-picker.sh +12 -0
  192. machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
  193. machineconfig/settings/lf/linux/exe/previewer.sh +9 -3
  194. machineconfig/settings/lf/linux/lfrc +10 -12
  195. machineconfig/settings/lf/windows/fzf_edit.ps1 +2 -2
  196. machineconfig/settings/lf/windows/lfrc +18 -38
  197. machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
  198. machineconfig/settings/linters/.ruff.toml +1 -1
  199. machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
  200. machineconfig/settings/marimo/marimo.toml +80 -0
  201. machineconfig/settings/marimo/snippets/globalize.py +34 -0
  202. machineconfig/settings/pistol/pistol.conf +1 -1
  203. machineconfig/settings/shells/bash/init.sh +55 -31
  204. machineconfig/settings/shells/nushell/config.nu +1 -34
  205. machineconfig/settings/shells/nushell/init.nu +127 -0
  206. machineconfig/settings/shells/pwsh/init.ps1 +60 -43
  207. machineconfig/settings/shells/starship/starship.toml +16 -0
  208. machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
  209. machineconfig/settings/shells/wt/settings.json +32 -17
  210. machineconfig/settings/shells/zsh/init.sh +89 -0
  211. machineconfig/settings/svim/linux/init.toml +0 -4
  212. machineconfig/settings/svim/windows/init.toml +0 -3
  213. machineconfig/settings/yazi/init.lua +57 -0
  214. machineconfig/settings/yazi/keymap_linux.toml +79 -0
  215. machineconfig/settings/yazi/keymap_windows.toml +78 -0
  216. machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
  217. machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
  218. machineconfig/settings/yazi/yazi.toml +13 -0
  219. machineconfig/setup_linux/__init__.py +10 -0
  220. machineconfig/setup_linux/apps_desktop.sh +89 -0
  221. machineconfig/setup_linux/apps_gui.sh +64 -0
  222. machineconfig/setup_linux/{nix → others}/cli_installation.sh +9 -29
  223. machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
  224. machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
  225. machineconfig/setup_linux/uv.sh +15 -0
  226. machineconfig/setup_linux/web_shortcuts/interactive.sh +26 -6
  227. machineconfig/setup_mac/__init__.py +16 -0
  228. machineconfig/setup_mac/apps_gui.sh +248 -0
  229. machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
  230. machineconfig/setup_mac/uv.sh +36 -0
  231. machineconfig/setup_windows/__init__.py +8 -0
  232. machineconfig/setup_windows/others/power_options.ps1 +7 -0
  233. machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
  234. machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
  235. machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
  236. machineconfig/setup_windows/uv.ps1 +10 -0
  237. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +27 -9
  238. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +16 -0
  239. machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
  240. machineconfig/utils/accessories.py +7 -5
  241. machineconfig/utils/cloud/onedrive/README.md +139 -0
  242. machineconfig/utils/code.py +140 -93
  243. machineconfig/utils/files/art/fat_croco.txt +10 -0
  244. machineconfig/utils/files/art/halfwit_croco.txt +9 -0
  245. machineconfig/utils/files/art/happy_croco.txt +22 -0
  246. machineconfig/utils/files/art/water_croco.txt +11 -0
  247. machineconfig/utils/files/ascii_art.py +118 -0
  248. machineconfig/utils/files/dbms.py +257 -0
  249. machineconfig/utils/files/headers.py +68 -0
  250. machineconfig/utils/files/ouch/__init__.py +0 -0
  251. machineconfig/utils/files/ouch/decompress.py +45 -0
  252. machineconfig/utils/files/read.py +95 -0
  253. machineconfig/utils/installer_utils/github_release_bulk.py +2 -12
  254. machineconfig/utils/installer_utils/installer_class.py +68 -126
  255. machineconfig/utils/installer_utils/installer_cli.py +181 -0
  256. machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +38 -85
  257. machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +69 -69
  258. machineconfig/utils/io.py +77 -23
  259. machineconfig/utils/links.py +309 -100
  260. machineconfig/utils/meta.py +255 -0
  261. machineconfig/utils/notifications.py +1 -1
  262. machineconfig/utils/options.py +10 -25
  263. machineconfig/utils/path_extended.py +94 -104
  264. machineconfig/utils/path_helper.py +75 -22
  265. machineconfig/utils/procs.py +50 -74
  266. machineconfig/utils/scheduler.py +94 -97
  267. machineconfig/utils/scheduling.py +0 -3
  268. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +5 -17
  269. machineconfig/utils/schemas/installer/installer_types.py +0 -1
  270. machineconfig/utils/schemas/layouts/layout_types.py +2 -1
  271. machineconfig/utils/source_of_truth.py +3 -6
  272. machineconfig/utils/ssh.py +742 -254
  273. machineconfig/utils/ssh_utils/utils.py +0 -0
  274. machineconfig/utils/terminal.py +3 -140
  275. machineconfig/utils/tst.py +20 -0
  276. machineconfig/utils/upgrade_packages.py +109 -28
  277. machineconfig/utils/ve.py +13 -5
  278. machineconfig-7.66.dist-info/METADATA +124 -0
  279. machineconfig-7.66.dist-info/RECORD +451 -0
  280. machineconfig-7.66.dist-info/entry_points.txt +15 -0
  281. machineconfig/cluster/templates/utils.py +0 -51
  282. machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -49
  283. machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -85
  284. machineconfig/jobs/installer/packages_custom_dev.json +0 -226
  285. machineconfig/jobs/installer/packages_custom_essential.json +0 -39
  286. machineconfig/jobs/installer/packages_github_dev.json +0 -1110
  287. machineconfig/jobs/installer/packages_github_essential.json +0 -804
  288. machineconfig/jobs/linux/msc/cli_agents.sh +0 -37
  289. machineconfig/jobs/python/create_bootable_media.py +0 -16
  290. machineconfig/jobs/python/python_cargo_build_share.py +0 -59
  291. machineconfig/jobs/python/python_ve_symlink.py +0 -29
  292. machineconfig/jobs/python/tasks.py +0 -3
  293. machineconfig/jobs/python/vscode/api.py +0 -49
  294. machineconfig/jobs/python/vscode/sync_code.py +0 -58
  295. machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
  296. machineconfig/jobs/windows/start_terminal.ps1 +0 -6
  297. machineconfig/jobs/windows/startup_file.cmd +0 -2
  298. machineconfig/profile/create.py +0 -170
  299. machineconfig/profile/shell.py +0 -176
  300. machineconfig/scripts/cloud/init.sh +0 -119
  301. machineconfig/scripts/linux/choose_wezterm_theme +0 -3
  302. machineconfig/scripts/linux/cloud_copy +0 -2
  303. machineconfig/scripts/linux/cloud_mount +0 -2
  304. machineconfig/scripts/linux/cloud_repo_sync +0 -2
  305. machineconfig/scripts/linux/cloud_sync +0 -2
  306. machineconfig/scripts/linux/croshell +0 -3
  307. machineconfig/scripts/linux/devops +0 -2
  308. machineconfig/scripts/linux/fire +0 -2
  309. machineconfig/scripts/linux/fire_agents +0 -2
  310. machineconfig/scripts/linux/ftpx +0 -2
  311. machineconfig/scripts/linux/fzf2g +0 -21
  312. machineconfig/scripts/linux/fzffg +0 -25
  313. machineconfig/scripts/linux/gh_models +0 -2
  314. machineconfig/scripts/linux/initai +0 -2
  315. machineconfig/scripts/linux/kill_process +0 -2
  316. machineconfig/scripts/linux/programs +0 -21
  317. machineconfig/scripts/linux/repos +0 -2
  318. machineconfig/scripts/linux/scheduler +0 -2
  319. machineconfig/scripts/linux/share_smb +0 -1
  320. machineconfig/scripts/linux/start_slidev +0 -2
  321. machineconfig/scripts/linux/start_terminals +0 -3
  322. machineconfig/scripts/linux/warp-cli.sh +0 -122
  323. machineconfig/scripts/linux/wifi_conn +0 -2
  324. machineconfig/scripts/linux/z_ls +0 -104
  325. machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
  326. machineconfig/scripts/python/cloud_repo_sync.py +0 -186
  327. machineconfig/scripts/python/devops_devapps_install.py +0 -159
  328. machineconfig/scripts/python/devops_update_repos.py +0 -180
  329. machineconfig/scripts/python/dotfile.py +0 -52
  330. machineconfig/scripts/python/fire_agents.py +0 -175
  331. machineconfig/scripts/python/fire_agents_help_launch.py +0 -143
  332. machineconfig/scripts/python/fire_agents_load_balancer.py +0 -50
  333. machineconfig/scripts/python/fire_jobs_args_helper.py +0 -75
  334. machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -74
  335. machineconfig/scripts/python/get_zellij_cmd.py +0 -15
  336. machineconfig/scripts/python/gh_models.py +0 -104
  337. machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -114
  338. machineconfig/scripts/python/repos.py +0 -80
  339. machineconfig/scripts/python/repos_helper_action.py +0 -335
  340. machineconfig/scripts/python/share_terminal.py +0 -104
  341. machineconfig/scripts/python/snapshot.py +0 -25
  342. machineconfig/scripts/python/start_terminals.py +0 -121
  343. machineconfig/scripts/python/t4.py +0 -17
  344. machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
  345. machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
  346. machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
  347. machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
  348. machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
  349. machineconfig/scripts/windows/croshell.ps1 +0 -1
  350. machineconfig/scripts/windows/devops.ps1 +0 -1
  351. machineconfig/scripts/windows/dotfile.ps1 +0 -1
  352. machineconfig/scripts/windows/fire.ps1 +0 -1
  353. machineconfig/scripts/windows/ftpx.ps1 +0 -1
  354. machineconfig/scripts/windows/gpt.ps1 +0 -1
  355. machineconfig/scripts/windows/grep.ps1 +0 -2
  356. machineconfig/scripts/windows/initai.ps1 +0 -1
  357. machineconfig/scripts/windows/kill_process.ps1 +0 -1
  358. machineconfig/scripts/windows/nano.ps1 +0 -3
  359. machineconfig/scripts/windows/pomodoro.ps1 +0 -1
  360. machineconfig/scripts/windows/reload_path.ps1 +0 -3
  361. machineconfig/scripts/windows/repos.ps1 +0 -1
  362. machineconfig/scripts/windows/scheduler.ps1 +0 -1
  363. machineconfig/scripts/windows/snapshot.ps1 +0 -1
  364. machineconfig/scripts/windows/start_slidev.ps1 +0 -1
  365. machineconfig/scripts/windows/start_terminals.ps1 +0 -1
  366. machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
  367. machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
  368. machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
  369. machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
  370. machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
  371. machineconfig/setup_linux/web_shortcuts/ascii_art.sh +0 -93
  372. machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
  373. machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
  374. machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
  375. machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
  376. machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
  377. machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
  378. machineconfig/utils/ai/generate_file_checklist.py +0 -68
  379. machineconfig-3.99.dist-info/METADATA +0 -167
  380. machineconfig-3.99.dist-info/RECORD +0 -409
  381. machineconfig-3.99.dist-info/entry_points.txt +0 -18
  382. machineconfig/cluster/{templates → remote}/run_cloud.py +0 -0
  383. machineconfig/cluster/{templates → remote}/run_cluster.py +0 -0
  384. machineconfig/cluster/{templates → remote}/run_remote.py +0 -0
  385. machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
  386. machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
  387. machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
  388. machineconfig/{jobs/python → scripts/python/helpers_agents}/__init__.py +0 -0
  389. machineconfig/scripts/python/{helpers → helpers_agents/agentic_frameworks}/__init__.py +0 -0
  390. machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
  391. machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_cloud/__init__.py} +0 -0
  392. machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
  393. /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
  394. /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_croshell/__init__.py} +0 -0
  395. /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
  396. /machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -0
  397. /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
  398. /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
  399. /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_devops/__init__.py} +0 -0
  400. /machineconfig/scripts/{windows/share_nfs.ps1 → python/helpers_devops/themes/__init__.py} +0 -0
  401. /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
  402. /machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -0
  403. /machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/skrg +0 -0
  404. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfb.ps1 +0 -0
  405. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfg.ps1 +0 -0
  406. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfrga.bat +0 -0
  407. /machineconfig/scripts/{linux → python/nw}/mount_drive +0 -0
  408. /machineconfig/scripts/python/{mount_nw_drive.py → nw/mount_nw_drive.py} +0 -0
  409. /machineconfig/scripts/{linux → python/nw}/mount_smb +0 -0
  410. /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
  411. /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
  412. /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
  413. /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
  414. /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
  415. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
  416. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
  417. {machineconfig-3.99.dist-info → machineconfig-7.66.dist-info}/WHEEL +0 -0
  418. {machineconfig-3.99.dist-info → machineconfig-7.66.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,29 @@
1
+
2
+ # This script adds a public key to the authorized_keys file for the sshd service
3
+ # as a result, a remote can connet to the machine if they got the corresponding private key (identity).
4
+
5
+ # https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement
6
+ # http://woshub.com/using-ssh-key-based-authentication-on-windows/
7
+
8
+ $ErrorActionPreference = "Stop"
9
+ $sshd_dir = "$env:ProgramData\ssh"
10
+ $sshfile = "$env:USERPROFILE\.ssh\pubkey.pub" # this directory is for normal users, not admins.
11
+ # Once they are populated, we can create administrators_authorized_keys
12
+
13
+ Get-Content $sshfile >> "$sshd_dir\administrators_authorized_keys"
14
+ # set appropirate persmissions for this file
15
+ Set-Location $sshd_dir
16
+ icacls administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
17
+ # Lastly, enabling public key authentication.
18
+ $sshd_config = "$sshd_dir\sshd_config"
19
+ (Get-Content $sshd_config) -replace '#PubkeyAuthentication', 'PubkeyAuthentication' | Out-File -encoding ASCII $sshd_config
20
+ #(Get-Content $sshd_dir\sshd_config) -replace 'AuthorizedKeysFile __PROGRAMDATA__', '#AuthorizedKeysFile __PROGRAMDATA__' | Out-File -encoding ASCII $sshd_config
21
+ #(Get-Content $sshd_dir\sshd_config) -replace 'Match Group administrators', '#Match Group administrators' | Out-File -encoding ASCII $sshd_config
22
+ #cat C:\ProgramData\ssh\sshd_config
23
+
24
+ # to load the fresh settings, we need to restart the service:
25
+ Restart-Service sshd -Force
26
+
27
+ #Write-Host "Use this to Login/test Now"
28
+ #write-host ssh $env:UserName@localhost
29
+ # debug tip: use nano editor to inspect files above, if unreadable max-text format is used, ssh won't work.
@@ -0,0 +1,11 @@
1
+
2
+ # on the side of the local machine, you need to sort out the following:
3
+ # if the $sshfile doesn't have a standard name, you will need to explicitly specify the identity while SSHing (e.g. ssh u@s -i ~/.ssh/my_id)
4
+ # However, this must be done every time. For permanent solutions, use .ssh/config
5
+
6
+ $sshfile = "$env:USERPROFILE\.ssh\id_rsa"
7
+
8
+ Set-Service ssh-agent -StartupType Manual # allow the service to be started manually
9
+ ssh-agent # start the service
10
+ ssh-add.exe $sshfile # add the key to the agent
11
+
@@ -0,0 +1,37 @@
1
+
2
+ $ErrorActionPreference = "Stop"
3
+ # ALL of the following require admin priviliages:
4
+ Set-ExecutionPolicy Bypass
5
+ # PowerShell.exe -ExecutionPolicy Bypass -File "C:\bypass\prompt\standard.ps1" 2>&1>$null
6
+
7
+ # Install SSH-Server on a windows machine. see this one below if this one didn't work:
8
+ # to install: winget install --Id Microsoft.OpenSSH.Preview --source winget --scope user # from: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH
9
+ # the result is installed in C:\Program Files\OpenSSH as opposed to C:\Windows\System32\OpenSSH which is the case if openssh is added as a feature/capability to windows
10
+ # However, notice the new path is not in PATH as is the cases with system variant, so it needs to be added manually.
11
+ # finally, ssh config files are always @ "$env:ProgramData\ssh" irrespective of installation method.
12
+ # if ssh key is created on windows, it doesn't work on linux and gives a cryptlib error. It must be read again and saved in non DOS format.
13
+
14
+ Add-WindowsCapability -Online -Name OpenSSH.Server
15
+ Add-WindowsCapability -Online -Name OpenSSH.Client
16
+
17
+ #New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Program "%WINDIR%\System32\OpenSSH\sshd.exe"
18
+
19
+ # Must Enable ssh-agent before starting. But even before that, one need to update path so that same shell has access to the NEWLY added ssh program
20
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
21
+
22
+ Set-Service -Name sshd -StartupType Automatic
23
+ #Get-Service -Name ssh-agent | Set-Service -StartupType Automatic
24
+ #Set-Service -Name ssh-agent -StartupType Automatic
25
+ #Start-Service ssh-agent
26
+ # Starting the service for the first time will populate the directory with config files.
27
+ Start-Service sshd
28
+
29
+ # Next up, change default shell to powershell, becuse CMD is lame
30
+ # following: https://github.com/PowerShell/Win32-OpenSSH/wiki/DefaultShell
31
+ $shell = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" # "C:\Windows\System32\wsl.exe"
32
+ # $shell = "C:\Program Files\PowerShell\7\pwsh.exe" # it slows SSH down because of startup time, one can still use it by running it explicitly
33
+ New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value $shell -PropertyType String -Force
34
+ New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShellCommandOption -Value "/c" -PropertyType String -Force
35
+
36
+ cd ~
37
+ mkdir .ssh -ErrorAction SilentlyContinue
@@ -0,0 +1,10 @@
1
+
2
+
3
+ if (-not (Test-Path -Path "$HOME\.local\bin\uv.exe")) {
4
+ Write-Output "uv binary not found, installing..."
5
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
6
+ } else {
7
+ Write-Output "uv binary found, updating..."
8
+ & "$HOME\.local\bin\uv.exe" self update
9
+ }
10
+ & "$HOME\.local\bin\uv.exe" python install 3.14
@@ -1,12 +1,30 @@
1
- Write-Host "
2
- 🚀 ===========================================
3
- 📦 Machine Configuration Installation Script
4
- ============================================="
5
1
 
6
- Write-Host "ℹ️ If you have execution policy issues, run: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser"
7
2
 
8
- Invoke-WebRequest -Uri "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/ve.ps1" -OutFile "ve.ps1"
9
- .\ve.ps1
10
- rm ve.ps1
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
11
5
 
12
- uv run --python 3.13 --with machineconfig devops ia
6
+ function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" devops $args }
7
+ function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" cloud $args }
8
+ function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" agents $args }
9
+ function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" sessions $args }
10
+ function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" ftpx $args }
11
+ function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" fire $args }
12
+ function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" croshell $args }
13
+ function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" utils $args }
14
+ function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" terminal $args }
15
+ function msearch { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.66" 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,16 @@
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
+ uv tool install --upgrade --python 3.14 machineconfig both
5
+
6
+ devops install --group sysabc
7
+
8
+ # configs
9
+ devops config copy-assets both
10
+ devops config public --method copy --on-conflict overwrite-default-path --which all
11
+ devops config shell
12
+ devops config shell --which nushell
13
+
14
+ wt # start Windows Terminal to pick up config changes
15
+ devops install --group termabc
16
+ 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,4 +1,3 @@
1
- from pathlib import Path
2
1
  from typing import Optional, Any
3
2
 
4
3
  from datetime import datetime, timezone, timedelta
@@ -72,7 +71,6 @@ def split_list[T](sequence: list[T], every: Optional[int]=None, to: Optional[int
72
71
 
73
72
  def pprint(obj: dict[Any, Any], title: str) -> None:
74
73
  from rich import inspect
75
-
76
74
  inspect(type("TempStruct", (object,), obj)(), value=False, title=title, docs=False, dunder=False, sort=False)
77
75
 
78
76
 
@@ -97,14 +95,18 @@ def human_friendly_dict(d: dict[str, Any]) -> dict[str, Any]:
97
95
  return result
98
96
 
99
97
 
100
- def get_repo_root(path: Path) -> Optional[Path]:
98
+ def get_repo_root(path: "Path") -> Optional["Path"]:
101
99
  from git import Repo, InvalidGitRepositoryError
102
-
103
100
  try:
104
- repo = Repo(str(path), search_parent_directories=True)
101
+ repo = Repo(path, search_parent_directories=True)
105
102
  root = repo.working_tree_dir
106
103
  if root is not None:
104
+ from pathlib import Path
107
105
  return Path(root)
108
106
  except InvalidGitRepositoryError:
109
107
  pass
110
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`