machineconfig 5.0__tar.gz → 5.12__tar.gz

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 (425) hide show
  1. {machineconfig-5.0/src/machineconfig.egg-info → machineconfig-5.12}/PKG-INFO +21 -1
  2. {machineconfig-5.0 → machineconfig-5.12}/README.md +20 -0
  3. {machineconfig-5.0 → machineconfig-5.12}/pyproject.toml +1 -2
  4. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/count_lines.py +1 -0
  5. machineconfig-5.12/src/machineconfig/scripts/python/count_lines_frontend.py +16 -0
  6. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/devops.py +1 -2
  7. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/interactive.py +1 -1
  8. machineconfig-5.12/src/machineconfig/scripts/python/repos.py +132 -0
  9. machineconfig-5.12/src/machineconfig/scripts/python/repos_helper.py +85 -0
  10. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/repos_helper_action.py +93 -50
  11. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/repos_helper_record.py +3 -1
  12. {machineconfig-5.0 → machineconfig-5.12/src/machineconfig.egg-info}/PKG-INFO +21 -1
  13. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig.egg-info/SOURCES.txt +1 -2
  14. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig.egg-info/entry_points.txt +0 -1
  15. machineconfig-5.0/src/machineconfig/scripts/linux/repos +0 -2
  16. machineconfig-5.0/src/machineconfig/scripts/python/count_lines_frontend.py +0 -12
  17. machineconfig-5.0/src/machineconfig/scripts/python/repos.py +0 -100
  18. machineconfig-5.0/src/machineconfig/scripts/windows/repos.ps1 +0 -1
  19. {machineconfig-5.0 → machineconfig-5.12}/MANIFEST.in +0 -0
  20. {machineconfig-5.0 → machineconfig-5.12}/setup.cfg +0 -0
  21. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/__init__.py +0 -0
  22. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/__init__.py +0 -0
  23. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/cloud_manager.py +0 -0
  24. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/data_transfer.py +0 -0
  25. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/distribute.py +0 -0
  26. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/file_manager.py +0 -0
  27. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/job_params.py +0 -0
  28. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/loader_runner.py +0 -0
  29. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/remote_machine.py +0 -0
  30. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/run_cloud.py +0 -0
  31. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/run_cluster.py +0 -0
  32. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/run_remote.py +0 -0
  33. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/script_execution.py +0 -0
  34. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/remote/script_notify_upon_completion.py +0 -0
  35. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/__init__.py +0 -0
  36. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/ffile.py +0 -0
  37. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/utils/enhanced_command_runner.py +0 -0
  38. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/utils/load_balancer.py +0 -0
  39. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/utils/load_balancer_helper.py +0 -0
  40. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/wt_local.py +0 -0
  41. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/wt_local_manager.py +0 -0
  42. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/wt_remote.py +0 -0
  43. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/wt_remote_manager.py +0 -0
  44. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +0 -0
  45. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +0 -0
  46. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +0 -0
  47. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +0 -0
  48. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +0 -0
  49. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_local.py +0 -0
  50. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_local_manager.py +0 -0
  51. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_remote.py +0 -0
  52. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_remote_manager.py +0 -0
  53. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +0 -0
  54. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +0 -0
  55. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_utils/monitoring_types.py +0 -0
  56. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +0 -0
  57. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +0 -0
  58. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +0 -0
  59. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +0 -0
  60. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/templates/__init__.py +0 -0
  61. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/cluster/templates/cli_trogon.py +0 -0
  62. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/__init__.py +0 -0
  63. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/__init__.py +0 -0
  64. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom/gh.py +0 -0
  65. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom/hx.py +0 -0
  66. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/__init__.py +0 -0
  67. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/alacritty.py +0 -0
  68. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/brave.py +0 -0
  69. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/bypass_paywall.py +0 -0
  70. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/code.py +0 -0
  71. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/cursor.py +0 -0
  72. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/espanso.py +0 -0
  73. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/goes.py +0 -0
  74. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/lvim.py +0 -0
  75. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/nerdfont.py +0 -0
  76. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +0 -0
  77. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/redis.py +0 -0
  78. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/wezterm.py +0 -0
  79. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/custom_dev/winget.py +0 -0
  80. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/installer_data.json +0 -0
  81. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/brave.sh +0 -0
  82. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/docker.sh +0 -0
  83. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/docker_start.sh +0 -0
  84. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/edge.sh +0 -0
  85. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/nerdfont.sh +0 -0
  86. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/ngrok.sh +0 -0
  87. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -0
  88. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/q.sh +0 -0
  89. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/redis.sh +0 -0
  90. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -0
  91. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/vscode.sh +0 -0
  92. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/warp-cli.sh +0 -0
  93. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/linux_scripts/wezterm.sh +0 -0
  94. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/package_groups.py +0 -0
  95. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +0 -0
  96. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/linux/msc/cli_agents.sh +0 -0
  97. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/linux/msc/lid.sh +0 -0
  98. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/linux/msc/network.sh +0 -0
  99. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/python/__init__.py +0 -0
  100. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/python/check_installations.py +0 -0
  101. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/python/create_bootable_media.py +0 -0
  102. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/python/python_cargo_build_share.py +0 -0
  103. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/python/python_ve_symlink.py +0 -0
  104. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/python/tasks.py +0 -0
  105. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/python/vscode/api.py +0 -0
  106. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/python/vscode/sync_code.py +0 -0
  107. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -0
  108. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/windows/archive/openssh-server_add_key.ps1 +0 -0
  109. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1 +0 -0
  110. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/windows/msc/cli_agents.bat +0 -0
  111. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/windows/msc/cli_agents.ps1 +0 -0
  112. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/windows/start_terminal.ps1 +0 -0
  113. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/jobs/windows/startup_file.cmd +0 -0
  114. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/logger.py +0 -0
  115. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/profile/__init__.py +0 -0
  116. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/profile/create.py +0 -0
  117. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/profile/records/generic/shares.toml +0 -0
  118. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/profile/records/linux/apps_summary_report.csv +0 -0
  119. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/profile/records/linux/apps_summary_report.md +0 -0
  120. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/profile/records/windows/apps_summary_report.csv +0 -0
  121. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/profile/records/windows/apps_summary_report.md +0 -0
  122. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/profile/shell.py +0 -0
  123. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/__init__.py +0 -0
  124. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/cloud/init.sh +0 -0
  125. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/agents +0 -0
  126. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/choose_wezterm_theme +0 -0
  127. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/cloud_copy +0 -0
  128. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/cloud_mount +0 -0
  129. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/cloud_repo_sync +0 -0
  130. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/cloud_sync +0 -0
  131. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/croshell +0 -0
  132. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/devops +0 -0
  133. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/fire +0 -0
  134. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/ftpx +0 -0
  135. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/fzf2g +0 -0
  136. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/fzfag +0 -0
  137. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/fzffg +0 -0
  138. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/fzfg +0 -0
  139. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/fzfrga +0 -0
  140. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/gh_models +0 -0
  141. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/initai +0 -0
  142. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/kill_process +0 -0
  143. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/mount_drive +0 -0
  144. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/mount_nfs +0 -0
  145. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/mount_nw_drive +0 -0
  146. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/mount_smb +0 -0
  147. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/scheduler +0 -0
  148. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/sessions +0 -0
  149. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/share_cloud.sh +0 -0
  150. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/share_nfs +0 -0
  151. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/share_smb +0 -0
  152. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/skrg +0 -0
  153. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/start_docker +0 -0
  154. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/start_slidev +0 -0
  155. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/start_terminals +0 -0
  156. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/switch_ip +0 -0
  157. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/warp-cli.sh +0 -0
  158. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/wifi_conn +0 -0
  159. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/linux/z_ls +0 -0
  160. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/__init__.py +0 -0
  161. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/agents.py +0 -0
  162. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/__init__.py +0 -0
  163. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/generate_files.py +0 -0
  164. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/initai.py +0 -0
  165. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +0 -0
  166. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +0 -0
  167. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/__init__.py +0 -0
  168. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/_shared.py +0 -0
  169. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/claude/claude.py +0 -0
  170. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/cline/cline.py +0 -0
  171. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Thinking-Beast-Mode.chatmode.md +0 -0
  172. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md +0 -0
  173. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/deepResearch.chatmode.md +0 -0
  174. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +0 -0
  175. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +0 -0
  176. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/copilot/privacy.md +0 -0
  177. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -0
  178. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md +0 -0
  179. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/crush/crush.json +0 -0
  180. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/crush/crush.py +0 -0
  181. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/crush/privacy.md +0 -0
  182. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/cursor/cursors.py +0 -0
  183. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/gemini/gemini.py +0 -0
  184. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/gemini/settings.json +0 -0
  185. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/generic.py +0 -0
  186. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/kilocode/privacy.md +0 -0
  187. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.json +0 -0
  188. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.py +0 -0
  189. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/choose_wezterm_theme.py +0 -0
  190. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/cloud_copy.py +0 -0
  191. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/cloud_manager.py +0 -0
  192. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/cloud_mount.py +0 -0
  193. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/cloud_repo_sync.py +0 -0
  194. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/cloud_sync.py +0 -0
  195. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/croshell.py +0 -0
  196. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/devops_add_identity.py +0 -0
  197. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/devops_add_ssh_key.py +0 -0
  198. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/devops_backup_retrieve.py +0 -0
  199. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/devops_update_repos.py +0 -0
  200. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/dotfile.py +0 -0
  201. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/fire_agents_help_launch.py +0 -0
  202. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/fire_agents_help_search.py +0 -0
  203. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/fire_agents_helper_types.py +0 -0
  204. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/fire_agents_load_balancer.py +0 -0
  205. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/fire_jobs.py +0 -0
  206. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/fire_jobs_args_helper.py +0 -0
  207. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/fire_jobs_route_helper.py +0 -0
  208. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/fire_jobs_streamlit_helper.py +0 -0
  209. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/ftpx.py +0 -0
  210. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/get_zellij_cmd.py +0 -0
  211. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/gh_models.py +0 -0
  212. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/helpers/__init__.py +0 -0
  213. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/helpers/cloud_helpers.py +0 -0
  214. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/helpers/helpers2.py +0 -0
  215. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/helpers/helpers4.py +0 -0
  216. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/helpers/helpers5.py +0 -0
  217. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -0
  218. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/mount_nfs.py +0 -0
  219. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/mount_nw_drive.py +0 -0
  220. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/mount_ssh.py +0 -0
  221. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/onetimeshare.py +0 -0
  222. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/pomodoro.py +0 -0
  223. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/repos_helper_clone.py +0 -0
  224. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/repos_helper_update.py +0 -0
  225. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/scheduler.py +0 -0
  226. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/sessions.py +0 -0
  227. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/share_terminal.py +0 -0
  228. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/snapshot.py +0 -0
  229. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/start_slidev.py +0 -0
  230. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/start_terminals.py +0 -0
  231. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/t4.py +0 -0
  232. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/viewer.py +0 -0
  233. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/viewer_template.py +0 -0
  234. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/wifi_conn.py +0 -0
  235. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/python/wsl_windows_transfer.py +0 -0
  236. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/agents.ps1 +0 -0
  237. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -0
  238. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/cloud_copy.ps1 +0 -0
  239. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/cloud_mount.ps1 +0 -0
  240. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -0
  241. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/cloud_sync.ps1 +0 -0
  242. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/croshell.ps1 +0 -0
  243. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/devops.ps1 +0 -0
  244. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/dotfile.ps1 +0 -0
  245. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/fire.ps1 +0 -0
  246. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/ftpx.ps1 +0 -0
  247. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/fzfb.ps1 +0 -0
  248. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/fzfg.ps1 +0 -0
  249. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/fzfrga.bat +0 -0
  250. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/gpt.ps1 +0 -0
  251. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/grep.ps1 +0 -0
  252. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/initai.ps1 +0 -0
  253. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/kill_process.ps1 +0 -0
  254. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/mount_nfs.ps1 +0 -0
  255. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/mount_nw.ps1 +0 -0
  256. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/mount_smb.ps1 +0 -0
  257. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/mount_ssh.ps1 +0 -0
  258. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/nano.ps1 +0 -0
  259. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/pomodoro.ps1 +0 -0
  260. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/reload_path.ps1 +0 -0
  261. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/scheduler.ps1 +0 -0
  262. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/sessions.ps1 +0 -0
  263. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/share_cloud.cmd +0 -0
  264. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/share_nfs.ps1 +0 -0
  265. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/share_smb.ps1 +0 -0
  266. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/snapshot.ps1 +0 -0
  267. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/start_slidev.ps1 +0 -0
  268. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/start_terminals.ps1 +0 -0
  269. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/unlock_bitlocker.ps1 +0 -0
  270. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/wifi_conn.ps1 +0 -0
  271. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -0
  272. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -0
  273. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/__init__.py +0 -0
  274. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/broot/br.sh +0 -0
  275. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/broot/brootcd.ps1 +0 -0
  276. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/broot/conf.toml +0 -0
  277. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/glow/glow.yml +0 -0
  278. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/gromit-mpx/gromit-mpx.cfg +0 -0
  279. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/helix/config.toml +0 -0
  280. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/helix/languages.toml +0 -0
  281. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/keras/keras.json +0 -0
  282. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/keyboard/espanso/config/default.yml +0 -0
  283. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/keyboard/espanso/match/base.yml +0 -0
  284. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/keyboard/kanata/kanata.kbd +0 -0
  285. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/autocall/delete.sh +0 -0
  286. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/autocall/on-cd.sh +0 -0
  287. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/autocall/on-quit.sh +0 -0
  288. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/autocall/open.sh +0 -0
  289. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/autocall/paste.sh +0 -0
  290. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/autocall/pre-cd.sh +0 -0
  291. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/autocall/rename.sh +0 -0
  292. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/colors +0 -0
  293. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/exe/cleaner.sh +0 -0
  294. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -0
  295. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/exe/leftpane_previewer.sh +0 -0
  296. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/exe/lfcd.sh +0 -0
  297. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/exe/previewer.sh +0 -0
  298. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/exe/previewer_archive.sh +0 -0
  299. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/icons +0 -0
  300. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/linux/lfrc +0 -0
  301. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/autocall/delete.ps1 +0 -0
  302. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/autocall/on-cd.ps1 +0 -0
  303. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/autocall/on-quit.ps1 +0 -0
  304. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/autocall/open.ps1 +0 -0
  305. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/autocall/paste.ps1 +0 -0
  306. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
  307. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/autocall/rename.ps1 +0 -0
  308. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/cd_tere.ps1 +0 -0
  309. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/cd_zoxide.ps1 +0 -0
  310. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/cd_zoxide2.ps1 +0 -0
  311. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/colors +0 -0
  312. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -0
  313. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/icons +0 -0
  314. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/leftpane_previewer.ps1 +0 -0
  315. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/lfcd.ps1 +0 -0
  316. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/lfrc +0 -0
  317. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/mkdir.ps1 +0 -0
  318. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/mkfile.ps1 +0 -0
  319. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/previewer.ps1 +0 -0
  320. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lf/windows/tst.ps1 +0 -0
  321. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/linters/.flake8 +0 -0
  322. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/linters/.mypy.ini +0 -0
  323. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/linters/.pylintrc +0 -0
  324. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/linters/.ruff.toml +0 -0
  325. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lvim/linux/config.lua +0 -0
  326. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -0
  327. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lvim/windows/config.lua +0 -0
  328. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/lvim/windows/lua/user/custom_config.lua +0 -0
  329. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/mprocs/windows/mprocs.yaml +0 -0
  330. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/mprocs/windows/other +0 -0
  331. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/pistol/pistol.conf +0 -0
  332. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/presenterm/config.yaml +0 -0
  333. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/procs/.procs.toml +0 -0
  334. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/pudb/pudb.cfg +0 -0
  335. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/rofi/config.rasi +0 -0
  336. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/rofi/config_default.rasi +0 -0
  337. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/alacritty/alacritty.toml +0 -0
  338. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/alacritty/alacritty.yml +0 -0
  339. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/bash/init.sh +0 -0
  340. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/hyper/.hyper.js +0 -0
  341. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/ipy/profiles/default/__init__.py +0 -0
  342. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py +0 -0
  343. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +0 -0
  344. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/kitty/kitty.conf +0 -0
  345. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/nushell/config.nu +0 -0
  346. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/nushell/env.nu +0 -0
  347. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/pwsh/init.ps1 +0 -0
  348. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/pwsh/profile.ps1 +0 -0
  349. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/starship/starship.toml +0 -0
  350. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/vtm/settings.xml +0 -0
  351. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/wezterm/wezterm.lua +0 -0
  352. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/shells/wt/settings.json +0 -0
  353. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/streamlit/config.toml +0 -0
  354. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/svim/linux/init.toml +0 -0
  355. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/svim/windows/init.toml +0 -0
  356. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/tere/terecd.ps1 +0 -0
  357. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/tere/terecd.sh +0 -0
  358. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/tmux/.tmate.conf +0 -0
  359. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/tmux/.tmux.conf +0 -0
  360. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/wsl/.wslconfig +0 -0
  361. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/yazi/keymap.toml +0 -0
  362. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/yazi/theme.toml +0 -0
  363. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/yazi/yazi.toml +0 -0
  364. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zed/settings.json +0 -0
  365. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zellij/commands/monitor +0 -0
  366. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zellij/commands/standard_panes +0 -0
  367. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zellij/config.kdl +0 -0
  368. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zellij/config.orig.kdl +0 -0
  369. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zellij/layouts/hist +0 -0
  370. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zellij/layouts/panes.kdl +0 -0
  371. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zellij/layouts/st.kdl +0 -0
  372. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zellij/layouts/st2.kdl +0 -0
  373. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/settings/zellij/layouts/stacked_panes.kdl +0 -0
  374. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_linux/__init__.py +0 -0
  375. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_linux/nix/cli_installation.sh +0 -0
  376. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -0
  377. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -0
  378. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_linux/web_shortcuts/android.sh +0 -0
  379. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -0
  380. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_linux/web_shortcuts/interactive.sh +0 -0
  381. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -0
  382. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/__init__.py +0 -0
  383. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/others/docker.ps1 +0 -0
  384. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/others/obs.ps1 +0 -0
  385. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -0
  386. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -0
  387. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -0
  388. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/web_shortcuts/interactive.ps1 +0 -0
  389. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -0
  390. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/wt_and_pwsh/__init__.py +0 -0
  391. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +0 -0
  392. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/__init__.py +0 -0
  393. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/accessories.py +0 -0
  394. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/ai/__init__.py +0 -0
  395. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/ai/generate_file_checklist.py +0 -0
  396. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/cloud/onedrive/setup_oauth.py +0 -0
  397. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/cloud/onedrive/transaction.py +0 -0
  398. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/code.py +0 -0
  399. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/installer.py +0 -0
  400. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/installer_utils/__init__.py +0 -0
  401. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/installer_utils/github_release_bulk.py +0 -0
  402. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/installer_utils/installer.py +0 -0
  403. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/installer_utils/installer_abc.py +0 -0
  404. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/installer_utils/installer_class.py +0 -0
  405. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/io.py +0 -0
  406. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/links.py +0 -0
  407. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/notifications.py +0 -0
  408. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/options.py +0 -0
  409. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/path_extended.py +0 -0
  410. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/path_helper.py +0 -0
  411. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/procs.py +0 -0
  412. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/scheduler.py +0 -0
  413. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/scheduling.py +0 -0
  414. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/schemas/fire_agents/fire_agents_input.py +0 -0
  415. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/schemas/installer/installer_types.py +0 -0
  416. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/schemas/layouts/layout_types.py +0 -0
  417. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/schemas/repos/repos_types.py +0 -0
  418. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/source_of_truth.py +0 -0
  419. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/ssh.py +0 -0
  420. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/terminal.py +0 -0
  421. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/upgrade_packages.py +0 -0
  422. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig/utils/ve.py +0 -0
  423. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig.egg-info/dependency_links.txt +0 -0
  424. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig.egg-info/requires.txt +0 -0
  425. {machineconfig-5.0 → machineconfig-5.12}/src/machineconfig.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 5.0
3
+ Version: 5.12
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -161,6 +161,26 @@ curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/ma
161
161
  short `curl bit.ly/cfgcroshelllinux -L | bash`
162
162
 
163
163
 
164
+ ## Repository management CLI
165
+
166
+ The DevOps CLI now exposes rich subcommands for working with git repositories. Run `python -m machineconfig.scripts.python.devops repos --help` to explore the hierarchy:
167
+
168
+ * Top-level actions: `push`, `pull`, `commit`, `all`, and `analyze`.
169
+ * These commands accept `--recursive/-r` and `--no-sync` to control nested repos and automatic `uv sync`.
170
+ * Sync workflows live under `sync`:
171
+ * `record` captures the current machine state into a `repos.json`.
172
+ * `capture` clones repos from a specification without changing commits.
173
+ * `checkout` aligns repositories to commits stored in the spec.
174
+ * `checkout-to-branch` switches repositories to the tracked branch.
175
+ * Each sync subcommand accepts `--cloud/-c` for fetching/saving specs from remote storage.
176
+
177
+ Example:
178
+
179
+ ```bash
180
+ python -m machineconfig.scripts.python.devops repos sync record ~/code --cloud my_remote
181
+ python -m machineconfig.scripts.python.devops repos pull ~/code --recursive
182
+ ```
183
+
164
184
  # Author
165
185
  Alex Al-Saffar. [email](mailto:programmer@usa.com)
166
186
 
@@ -127,6 +127,26 @@ curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/ma
127
127
  short `curl bit.ly/cfgcroshelllinux -L | bash`
128
128
 
129
129
 
130
+ ## Repository management CLI
131
+
132
+ The DevOps CLI now exposes rich subcommands for working with git repositories. Run `python -m machineconfig.scripts.python.devops repos --help` to explore the hierarchy:
133
+
134
+ * Top-level actions: `push`, `pull`, `commit`, `all`, and `analyze`.
135
+ * These commands accept `--recursive/-r` and `--no-sync` to control nested repos and automatic `uv sync`.
136
+ * Sync workflows live under `sync`:
137
+ * `record` captures the current machine state into a `repos.json`.
138
+ * `capture` clones repos from a specification without changing commits.
139
+ * `checkout` aligns repositories to commits stored in the spec.
140
+ * `checkout-to-branch` switches repositories to the tracked branch.
141
+ * Each sync subcommand accepts `--cloud/-c` for fetching/saving specs from remote storage.
142
+
143
+ Example:
144
+
145
+ ```bash
146
+ python -m machineconfig.scripts.python.devops repos sync record ~/code --cloud my_remote
147
+ python -m machineconfig.scripts.python.devops repos pull ~/code --recursive
148
+ ```
149
+
130
150
  # Author
131
151
  Alex Al-Saffar. [email](mailto:programmer@usa.com)
132
152
 
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "machineconfig"
9
- version = "5.0"
9
+ version = "5.12"
10
10
  description = "Dotfiles management package"
11
11
  readme = "README.md"
12
12
  license = {text = "Apache 2.0"}
@@ -64,7 +64,6 @@ cloud_mount = "machineconfig.scripts.python.cloud_mount:arg_parser"
64
64
  cloud_repo_sync = "machineconfig.scripts.python.cloud_repo_sync:args_parser"
65
65
  cloud_sync = "machineconfig.scripts.python.cloud_sync:arg_parser"
66
66
  ftpx = "machineconfig.scripts.python.ftpx:main_from_parser"
67
- repos = "machineconfig.scripts.python.repos:main_from_parser"
68
67
 
69
68
  start_slidev = "machineconfig.scripts.python.start_slidev:arg_parser"
70
69
  kill_process = "machineconfig.utils.procs:main"
@@ -9,6 +9,7 @@ from pathlib import Path
9
9
  from rich.progress import track
10
10
  import polars as pl
11
11
  import plotly.graph_objects as go
12
+
12
13
  import plotly.express as px
13
14
  import typer
14
15
 
@@ -0,0 +1,16 @@
1
+
2
+ import typer
3
+
4
+
5
+ def analyze_repo_development(repo_path: str = typer.Argument(..., help="Path to the git repository")):
6
+ from machineconfig.scripts.python import count_lines
7
+ from pathlib import Path
8
+ count_lines_path = Path(count_lines.__file__).resolve().parent.joinpath("count_lines.py")
9
+ # --project $HOME/code/machineconfig
10
+ cmd = f"""uv run --python 3.13 --with machineconfig--group plot {count_lines_path} analyze-over-time {repo_path}"""
11
+ from machineconfig.utils.code import run_script
12
+ run_script(cmd)
13
+
14
+
15
+ if __name__ == "__main__":
16
+ pass
@@ -9,10 +9,9 @@ import typer
9
9
 
10
10
 
11
11
  app = typer.Typer(help=f"🛠️ DevOps operations @ machineconfig {__version__}", no_args_is_help=True)
12
-
13
12
  app.command(name="install", help="📦 Install essential packages")(installer_entry_point.main)
14
13
  app.command(name="share-terminal", help="📡 Share terminal via web browser")(share_terminal.main)
15
- app.command(name="repos", help="📁 Manage git repositories")(repos.main)
14
+ app.add_typer(repos.app, name="repos", help="📁 Manage git repositories")
16
15
 
17
16
  ssh_app = typer.Typer(help="🔐 SSH operations subcommands", no_args_is_help=True)
18
17
  app.add_typer(ssh_app, name="ssh")
@@ -187,7 +187,7 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
187
187
  if "retrieve_repositories" in selected_options:
188
188
  console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
189
189
  from machineconfig.scripts.python import repos as module
190
- module.main(directory=str(Path.home() / "code"), clone=True, cloud="odg1")
190
+ module.main(directory=str(Path.home() / "code"), capture=True, cloud="odg1")
191
191
 
192
192
  if "retrieve_data" in selected_options:
193
193
  console.print(Panel("💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]", border_style="bright_cyan"))
@@ -0,0 +1,132 @@
1
+ """Repos CLI powered by Typer.
2
+
3
+ # TODO use gh api user --jq '.login' to get the username and use it to clone the repos.
4
+ in the event that username@github.com is not mentioned in the remote url.
5
+
6
+ """
7
+
8
+
9
+ from typing import Annotated, Optional
10
+ import typer
11
+
12
+
13
+
14
+ app = typer.Typer(help="� Manage development repositories", no_args_is_help=True)
15
+ sync_app = typer.Typer(help="� Manage repository specifications and syncing", no_args_is_help=True)
16
+ app.add_typer(sync_app, name="sync", help="� Sync repositories using saved specs")
17
+
18
+
19
+ DirectoryArgument = Annotated[
20
+ Optional[str],
21
+ typer.Argument(help="📁 Folder containing repos or the specs JSON file to use."),
22
+ ]
23
+ RecursiveOption = Annotated[
24
+ bool,
25
+ typer.Option("--recursive", "-r", help="🔍 Recurse into nested repositories."),
26
+ ]
27
+ NoSyncOption = Annotated[
28
+ bool,
29
+ typer.Option("--no-sync", help="🚫 Disable automatic uv sync after pulls."),
30
+ ]
31
+ CloudOption = Annotated[
32
+ Optional[str],
33
+ typer.Option("--cloud", "-c", help="☁️ Upload to or download from this cloud remote."),
34
+ ]
35
+
36
+
37
+
38
+ @app.command()
39
+ def push(directory: DirectoryArgument = None,
40
+ recursive: RecursiveOption = False,
41
+ no_sync: NoSyncOption = False,
42
+ ) -> None:
43
+ """🚀 Push changes across repositories."""
44
+ from machineconfig.scripts.python.repos_helper import git_operations
45
+ git_operations(directory, pull=False, commit=False, push=True, recursive=recursive, no_sync=no_sync)
46
+ @app.command()
47
+ def pull(
48
+ directory: DirectoryArgument = None,
49
+ recursive: RecursiveOption = False,
50
+ no_sync: NoSyncOption = False,
51
+ ) -> None:
52
+ """⬇️ Pull changes across repositories."""
53
+ from machineconfig.scripts.python.repos_helper import git_operations
54
+ git_operations(directory, pull=True, commit=False, push=False, recursive=recursive, no_sync=no_sync)
55
+ @app.command()
56
+ def commit(
57
+ directory: DirectoryArgument = None,
58
+ recursive: RecursiveOption = False,
59
+ no_sync: NoSyncOption = False,
60
+ ) -> None:
61
+ """💾 Commit changes across repositories."""
62
+ from machineconfig.scripts.python.repos_helper import git_operations
63
+ git_operations(directory, pull=False, commit=True, push=False, recursive=recursive, no_sync=no_sync)
64
+ @app.command()
65
+ def all(
66
+ directory: DirectoryArgument = None,
67
+ recursive: RecursiveOption = False,
68
+ no_sync: NoSyncOption = False,
69
+ ) -> None:
70
+ """🔄 Pull, commit, and push changes across repositories."""
71
+ from machineconfig.scripts.python.repos_helper import git_operations
72
+ git_operations(directory, pull=True, commit=True, push=True, recursive=recursive, no_sync=no_sync)
73
+
74
+
75
+ @sync_app.command()
76
+ def record(
77
+ directory: DirectoryArgument = None,
78
+ cloud: CloudOption = None,
79
+ ) -> None:
80
+ """📝 Record repositories into a repos.json specification."""
81
+ from machineconfig.scripts.python.repos_helper import print_banner, resolve_directory
82
+ print_banner()
83
+ repos_root = resolve_directory(directory)
84
+ from machineconfig.scripts.python.repos_helper_record import main as record_repos
85
+ save_path = record_repos(repos_root=repos_root)
86
+ from machineconfig.utils.path_extended import PathExtended
87
+ if cloud is not None:
88
+ PathExtended(save_path).to_cloud(rel2home=True, cloud=cloud)
89
+ @sync_app.command()
90
+ def capture(
91
+ directory: DirectoryArgument = None,
92
+ cloud: CloudOption = None,
93
+ ) -> None:
94
+ """📥 Clone repositories described by a repos.json specification."""
95
+ from machineconfig.scripts.python.repos_helper import print_banner, clone_from_specs
96
+ print_banner()
97
+ clone_from_specs(directory, cloud, checkout_branch_flag=False, checkout_commit_flag=False)
98
+
99
+
100
+ @sync_app.command(name="checkout-to-commit")
101
+ def checkout_command(
102
+ directory: DirectoryArgument = None,
103
+ cloud: CloudOption = None,
104
+ ) -> None:
105
+ """🔀 Check out specific commits listed in the specification."""
106
+ from machineconfig.scripts.python.repos_helper import print_banner, clone_from_specs
107
+ print_banner()
108
+ clone_from_specs(directory, cloud, checkout_branch_flag=False, checkout_commit_flag=True)
109
+
110
+
111
+ @sync_app.command(name="checkout-to-branch")
112
+ def checkout_to_branch_command(
113
+ directory: DirectoryArgument = None,
114
+ cloud: CloudOption = None,
115
+ ) -> None:
116
+ """🔀 Check out to the main branch defined in the specification."""
117
+ from machineconfig.scripts.python.repos_helper import print_banner, clone_from_specs
118
+ print_banner()
119
+ clone_from_specs(directory, cloud, checkout_branch_flag=True, checkout_commit_flag=False)
120
+
121
+
122
+ @app.command()
123
+ def analyze(
124
+ directory: DirectoryArgument = None,
125
+ ) -> None:
126
+ """📊 Analyze repository development over time."""
127
+ from machineconfig.scripts.python.repos_helper import print_banner
128
+ print_banner()
129
+ repo_path = directory if directory is not None else "."
130
+ from machineconfig.scripts.python.count_lines_frontend import analyze_repo_development
131
+ analyze_repo_development(repo_path=repo_path)
132
+
@@ -0,0 +1,85 @@
1
+
2
+
3
+
4
+ from typing import Optional
5
+ from pathlib import Path
6
+ from machineconfig.utils.source_of_truth import CONFIG_PATH, DEFAULTS_PATH
7
+
8
+ import typer
9
+
10
+
11
+
12
+ def print_banner() -> None:
13
+ typer.echo("\n" + "=" * 50)
14
+ typer.echo("📂 Welcome to the Repository Manager")
15
+ typer.echo("=" * 50 + "\n")
16
+
17
+
18
+
19
+ def resolve_directory(directory: Optional[str]) -> Path:
20
+ if directory is None:
21
+ directory = Path.cwd().as_posix()
22
+ typer.echo(f"📁 Using directory: {directory}")
23
+ return Path(directory).expanduser().absolute()
24
+ def git_operations(
25
+ directory: Optional[str],
26
+ *,
27
+ pull: bool,
28
+ commit: bool,
29
+ push: bool,
30
+ recursive: bool,
31
+ no_sync: bool,
32
+ ) -> None:
33
+ print_banner()
34
+ repos_root = resolve_directory(directory)
35
+ auto_sync = not no_sync
36
+ from machineconfig.scripts.python.repos_helper_action import perform_git_operations
37
+ from machineconfig.utils.path_extended import PathExtended
38
+ perform_git_operations(
39
+ repos_root=PathExtended(repos_root),
40
+ pull=pull,
41
+ commit=commit,
42
+ push=push,
43
+ recursive=recursive,
44
+ auto_sync=auto_sync,
45
+ )
46
+ def resolve_spec_path(directory: Optional[str], cloud: Optional[str]) -> Path:
47
+ repos_root = resolve_directory(directory)
48
+ from machineconfig.utils.path_extended import PathExtended
49
+ if not repos_root.exists() or repos_root.name != "repos.json":
50
+ candidate = Path(CONFIG_PATH).joinpath("repos").joinpath(PathExtended(repos_root).rel2home()).joinpath("repos.json")
51
+ repos_root = candidate
52
+ if not repos_root.exists():
53
+ cloud_name: Optional[str]
54
+ if cloud is None:
55
+ from machineconfig.utils.io import read_ini
56
+ cloud_name = read_ini(DEFAULTS_PATH)["general"]["rclone_config_name"]
57
+ typer.echo(f"⚠️ Using default cloud: {cloud_name}")
58
+ else:
59
+ cloud_name = cloud
60
+ assert cloud_name is not None, (
61
+ f"Path {repos_root} does not exist and cloud was not passed. You can't clone without one of them."
62
+ )
63
+ from machineconfig.utils.path_extended import PathExtended
64
+ PathExtended(repos_root).from_cloud(cloud=cloud_name, rel2home=True)
65
+ assert repos_root.exists() and repos_root.name == "repos.json", (
66
+ f"Path {repos_root} does not exist and cloud was not passed. You can't clone without one of them."
67
+ )
68
+ return repos_root
69
+ def clone_from_specs(
70
+ directory: Optional[str],
71
+ cloud: Optional[str],
72
+ *,
73
+ checkout_branch_flag: bool,
74
+ checkout_commit_flag: bool,
75
+ ) -> None:
76
+ print_banner()
77
+ typer.echo("\n📥 Cloning or checking out repositories...")
78
+ spec_path = resolve_spec_path(directory, cloud)
79
+ from machineconfig.scripts.python.repos_helper_clone import clone_repos
80
+ clone_repos(
81
+ spec_path=spec_path,
82
+ preferred_remote=None,
83
+ checkout_branch_flag=checkout_branch_flag,
84
+ checkout_commit_flag=checkout_commit_flag,
85
+ )
@@ -7,6 +7,9 @@ from dataclasses import dataclass
7
7
  from enum import Enum
8
8
 
9
9
  from rich import print as pprint
10
+ from rich.table import Table
11
+ from rich.panel import Panel
12
+ from rich.columns import Columns
10
13
 
11
14
 
12
15
  class GitAction(Enum):
@@ -191,87 +194,127 @@ def git_action(path: PathExtended, action: GitAction, mess: Optional[str] = None
191
194
 
192
195
 
193
196
  def print_git_operations_summary(summary: GitOperationSummary, operations_performed: list[str]) -> None:
194
- """Print a detailed summary of git operations similar to repos_helper_record.py."""
195
- print("\n📊 Git Operations Summary:")
196
- print(f" Total paths processed: {summary.total_paths_processed}")
197
- print(f" Git repositories found: {summary.git_repos_found}")
198
- print(f" Non-git paths skipped: {summary.non_git_paths}")
199
-
200
- # Show per-operation statistics
197
+ """Print a detailed summary of git operations with rich formatting and tables."""
198
+ from rich.console import Console
199
+ console = Console()
200
+
201
+ # Main summary panel
202
+ summary_stats = [
203
+ f"Total paths processed: {summary.total_paths_processed}",
204
+ f"Git repositories found: {summary.git_repos_found}",
205
+ f"Non-git paths skipped: {summary.non_git_paths}"
206
+ ]
207
+
208
+ console.print(Panel.fit(
209
+ "\n".join(summary_stats),
210
+ title="[bold blue]📊 Git Operations Summary[/bold blue]",
211
+ border_style="blue"
212
+ ))
213
+
214
+ # Statistics panels in columns
215
+ stat_panels = []
216
+
201
217
  if "commit" in operations_performed:
202
- print("\n💾 Commit Operations:")
203
- print(f" Attempted: {summary.commits_attempted}")
204
- print(f" Successful: {summary.commits_successful}")
205
- print(f" No changes: {summary.commits_no_changes}")
206
- print(f" Failed: {summary.commits_failed}")
207
-
218
+ commit_stats = [
219
+ f"Attempted: {summary.commits_attempted}",
220
+ f"Successful: {summary.commits_successful}",
221
+ f"No changes: {summary.commits_no_changes}",
222
+ f"Failed: {summary.commits_failed}"
223
+ ]
224
+ stat_panels.append(Panel.fit(
225
+ "\n".join(commit_stats),
226
+ title="[bold green]💾 Commit Operations[/bold green]",
227
+ border_style="green"
228
+ ))
229
+
208
230
  if "pull" in operations_performed:
209
- print("\n⬇️ Pull Operations:")
210
- print(f" Attempted: {summary.pulls_attempted}")
211
- print(f" Successful: {summary.pulls_successful}")
212
- print(f" Failed: {summary.pulls_failed}")
213
-
231
+ pull_stats = [
232
+ f"Attempted: {summary.pulls_attempted}",
233
+ f"Successful: {summary.pulls_successful}",
234
+ f"Failed: {summary.pulls_failed}"
235
+ ]
236
+ stat_panels.append(Panel.fit(
237
+ "\n".join(pull_stats),
238
+ title="[bold cyan]⬇️ Pull Operations[/bold cyan]",
239
+ border_style="cyan"
240
+ ))
241
+
214
242
  if "push" in operations_performed:
215
- print("\n🚀 Push Operations:")
216
- print(f" Attempted: {summary.pushes_attempted}")
217
- print(f" Successful: {summary.pushes_successful}")
218
- print(f" Failed: {summary.pushes_failed}")
243
+ push_stats = [
244
+ f"Attempted: {summary.pushes_attempted}",
245
+ f"Successful: {summary.pushes_successful}",
246
+ f"Failed: {summary.pushes_failed}"
247
+ ]
248
+ stat_panels.append(Panel.fit(
249
+ "\n".join(push_stats),
250
+ title="[bold magenta]🚀 Push Operations[/bold magenta]",
251
+ border_style="magenta"
252
+ ))
219
253
 
220
- # Show repositories without remotes (important for push operations)
254
+ if stat_panels:
255
+ console.print(Columns(stat_panels, equal=True, expand=True))
256
+
257
+ # Repositories without remotes warning
221
258
  if summary.repos_without_remotes:
222
- print(f"\n⚠️ WARNING: {len(summary.repos_without_remotes)} repositories have no remote configurations:")
259
+ repos_table = Table(title="[bold yellow]⚠️ Repositories Without Remotes[/bold yellow]")
260
+ repos_table.add_column("Repository Name", style="cyan", no_wrap=True)
261
+ repos_table.add_column("Full Path", style="dim")
262
+
223
263
  for repo_path in summary.repos_without_remotes:
224
- print(f" • {repo_path.name} ({repo_path})")
225
- print(" These repositories cannot be pushed to remote servers.")
226
- else:
227
- if "push" in operations_performed:
228
- print("\n✅ All repositories have remote configurations.")
264
+ repos_table.add_row(repo_path.name, str(repo_path))
229
265
 
230
- # Show failed operations
266
+ console.print(repos_table)
267
+ console.print("[yellow]These repositories cannot be pushed to remote servers.[/yellow]")
268
+ elif "push" in operations_performed:
269
+ console.print("[green]✅ All repositories have remote configurations.[/green]")
270
+
271
+ # Failed operations table
231
272
  if summary.failed_operations:
232
- print(f"\nFAILED OPERATIONS ({len(summary.failed_operations)} total):")
233
-
234
- # Group failed operations by type
273
+ failed_table = Table(title=f"[bold red]Failed Operations ({len(summary.failed_operations)} total)[/bold red]")
274
+ failed_table.add_column("Action", style="bold red", no_wrap=True)
275
+ failed_table.add_column("Repository", style="cyan", no_wrap=True)
276
+ failed_table.add_column("Problem", style="red")
277
+
278
+ # Group failed operations by type for better organization
235
279
  failed_by_action = {}
236
280
  for failed_op in summary.failed_operations:
237
281
  if failed_op.action not in failed_by_action:
238
282
  failed_by_action[failed_op.action] = []
239
283
  failed_by_action[failed_op.action].append(failed_op)
240
-
284
+
241
285
  for action, failures in failed_by_action.items():
242
- print(f"\n {action.upper()} failures ({len(failures)}):")
243
286
  for failure in failures:
244
- if not failure.is_git_repo:
245
- print(f" • {failure.repo_path.name} ({failure.repo_path}) - Not a git repository")
246
- else:
247
- print(f" • {failure.repo_path.name} ({failure.repo_path}) - {failure.message}")
287
+ repo_name = failure.repo_path.name if failure.is_git_repo else f"{failure.repo_path.name} (not git repo)"
288
+ problem = failure.message if failure.is_git_repo else "Not a git repository"
289
+ failed_table.add_row(action.upper(), repo_name, problem)
290
+
291
+ console.print(failed_table)
248
292
  else:
249
- print("\n✅ All git operations completed successfully!")
293
+ console.print("[green]✅ All git operations completed successfully![/green]")
250
294
 
251
295
  # Overall success assessment
252
296
  total_failed = len(summary.failed_operations)
253
- total_operations = (summary.commits_attempted + summary.pulls_attempted +
297
+ total_operations = (summary.commits_attempted + summary.pulls_attempted +
254
298
  summary.pushes_attempted)
255
-
299
+
256
300
  if total_failed == 0 and total_operations > 0:
257
- print(f"\n🎉 SUCCESS: All {total_operations} operations completed successfully!")
301
+ console.print(f"\n[bold green]🎉 SUCCESS: All {total_operations} operations completed successfully![/bold green]")
258
302
  elif total_operations == 0:
259
- print("\n📝 No git operations were performed.")
303
+ console.print("\n[blue]📝 No git operations were performed.[/blue]")
260
304
  else:
261
305
  success_rate = ((total_operations - total_failed) / total_operations * 100) if total_operations > 0 else 0
262
- print(f"\n⚖️ SUMMARY: {total_operations - total_failed}/{total_operations} operations succeeded ({success_rate:.1f}% success rate)")
263
306
  if total_failed > 0:
264
- print(" Review the failed operations above for details on what needs attention.")
307
+ console.print(f"\n[bold yellow]⚖️ SUMMARY: {total_operations - total_failed}/{total_operations} operations succeeded ({success_rate:.1f}% success rate)[/bold yellow]")
308
+ console.print("[yellow]Review the failed operations table above for details on what needs attention.[/yellow]")
309
+ else:
310
+ console.print(f"\n[bold green]⚖️ SUMMARY: {total_operations}/{total_operations} operations succeeded (100% success rate)[/bold green]")
265
311
 
266
312
 
267
313
  def perform_git_operations(repos_root: PathExtended, pull: bool, commit: bool, push: bool, recursive: bool, auto_sync: bool) -> None:
268
314
  """Perform git operations on all repositories and provide detailed summary."""
269
315
  print(f"\n🔄 Performing Git actions on repositories @ `{repos_root}`...")
270
-
271
- # Initialize summary tracking
272
316
  summary = GitOperationSummary()
273
- operations_performed = []
274
-
317
+ operations_performed = []
275
318
  # Determine which operations to perform
276
319
  if pull:
277
320
  operations_performed.append("pull")
@@ -1,4 +1,5 @@
1
1
  from machineconfig.utils.path_extended import PathExtended
2
+ from pathlib import Path
2
3
  from machineconfig.utils.schemas.repos.repos_types import GitVersionInfo, RepoRecordDict, RepoRemote
3
4
 
4
5
  from machineconfig.utils.schemas.repos.repos_types import RepoRecordFile
@@ -185,8 +186,9 @@ def record_repos_recursively(repos_root: str, r: bool, progress: Progress | None
185
186
  return res
186
187
 
187
188
 
188
- def main(repos_root: PathExtended):
189
+ def main(repos_root: Path):
189
190
  print("\n📝 Recording repositories...")
191
+ repos_root = PathExtended(repos_root).expanduser().absolute()
190
192
 
191
193
  # Count total directories and repositories for accurate progress tracking
192
194
  print("🔍 Analyzing directory structure...")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 5.0
3
+ Version: 5.12
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -161,6 +161,26 @@ curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/ma
161
161
  short `curl bit.ly/cfgcroshelllinux -L | bash`
162
162
 
163
163
 
164
+ ## Repository management CLI
165
+
166
+ The DevOps CLI now exposes rich subcommands for working with git repositories. Run `python -m machineconfig.scripts.python.devops repos --help` to explore the hierarchy:
167
+
168
+ * Top-level actions: `push`, `pull`, `commit`, `all`, and `analyze`.
169
+ * These commands accept `--recursive/-r` and `--no-sync` to control nested repos and automatic `uv sync`.
170
+ * Sync workflows live under `sync`:
171
+ * `record` captures the current machine state into a `repos.json`.
172
+ * `capture` clones repos from a specification without changing commits.
173
+ * `checkout` aligns repositories to commits stored in the spec.
174
+ * `checkout-to-branch` switches repositories to the tracked branch.
175
+ * Each sync subcommand accepts `--cloud/-c` for fetching/saving specs from remote storage.
176
+
177
+ Example:
178
+
179
+ ```bash
180
+ python -m machineconfig.scripts.python.devops repos sync record ~/code --cloud my_remote
181
+ python -m machineconfig.scripts.python.devops repos pull ~/code --recursive
182
+ ```
183
+
164
184
  # Author
165
185
  Alex Al-Saffar. [email](mailto:programmer@usa.com)
166
186
 
@@ -133,7 +133,6 @@ src/machineconfig/scripts/linux/mount_drive
133
133
  src/machineconfig/scripts/linux/mount_nfs
134
134
  src/machineconfig/scripts/linux/mount_nw_drive
135
135
  src/machineconfig/scripts/linux/mount_smb
136
- src/machineconfig/scripts/linux/repos
137
136
  src/machineconfig/scripts/linux/scheduler
138
137
  src/machineconfig/scripts/linux/sessions
139
138
  src/machineconfig/scripts/linux/share_cloud.sh
@@ -182,6 +181,7 @@ src/machineconfig/scripts/python/mount_ssh.py
182
181
  src/machineconfig/scripts/python/onetimeshare.py
183
182
  src/machineconfig/scripts/python/pomodoro.py
184
183
  src/machineconfig/scripts/python/repos.py
184
+ src/machineconfig/scripts/python/repos_helper.py
185
185
  src/machineconfig/scripts/python/repos_helper_action.py
186
186
  src/machineconfig/scripts/python/repos_helper_clone.py
187
187
  src/machineconfig/scripts/python/repos_helper_record.py
@@ -255,7 +255,6 @@ src/machineconfig/scripts/windows/mount_ssh.ps1
255
255
  src/machineconfig/scripts/windows/nano.ps1
256
256
  src/machineconfig/scripts/windows/pomodoro.ps1
257
257
  src/machineconfig/scripts/windows/reload_path.ps1
258
- src/machineconfig/scripts/windows/repos.ps1
259
258
  src/machineconfig/scripts/windows/scheduler.ps1
260
259
  src/machineconfig/scripts/windows/sessions.ps1
261
260
  src/machineconfig/scripts/windows/share_cloud.cmd
@@ -13,7 +13,6 @@ initai = machineconfig.scripts.python.ai.initai:main
13
13
  kill_process = machineconfig.utils.procs:main
14
14
  mount_nfs = machineconfig.scripts.python.mount_nfs:main
15
15
  mount_nw_drive = machineconfig.scripts.python.mount_nw_drive:main
16
- repos = machineconfig.scripts.python.repos:main_from_parser
17
16
  sessions = machineconfig.scripts.python.sessions:main_from_parser
18
17
  start_slidev = machineconfig.scripts.python.start_slidev:arg_parser
19
18
  wifi_conn = machineconfig.scripts.python.wifi_conn:arg_parser
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env bash
2
- uv run --python 3.13 --no-dev --project $HOME/code/machineconfig repos "$@"
@@ -1,12 +0,0 @@
1
-
2
- import typer
3
-
4
-
5
- def analyze_repo_development(repo_path: str = typer.Argument(..., help="Path to the git repository")):
6
- cmd = f"""uv run --python 3.13 --with machineconfig machineconfig.scripts.python.count_lines analyze-over-time {repo_path}"""
7
- from machineconfig.utils.code import run_script
8
- run_script(cmd)
9
-
10
-
11
- if __name__ == "__main__":
12
- pass