machineconfig 5.15__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.
- machineconfig/__init__.py +0 -28
- machineconfig/cluster/remote/distribute.py +0 -1
- machineconfig/cluster/remote/file_manager.py +0 -2
- machineconfig/cluster/remote/script_execution.py +0 -1
- machineconfig/cluster/sessions_managers/{utils → helpers}/enhanced_command_runner.py +4 -6
- machineconfig/cluster/sessions_managers/utils/load_balancer.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
- machineconfig/cluster/sessions_managers/wt_local.py +114 -289
- machineconfig/cluster/sessions_managers/wt_local_manager.py +50 -193
- machineconfig/cluster/sessions_managers/wt_remote.py +51 -43
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +49 -197
- machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +6 -19
- machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
- machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
- machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +4 -2
- machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
- machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +81 -375
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +22 -169
- machineconfig/cluster/sessions_managers/zellij_remote.py +40 -41
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +13 -10
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +4 -8
- machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +5 -20
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -9
- machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -1
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper.py +298 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_restart.py +77 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_with_panes.py +228 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_manager_helper.py +165 -0
- machineconfig/jobs/{python → installer}/check_installations.py +2 -3
- machineconfig/jobs/installer/custom/boxes.py +61 -0
- machineconfig/jobs/installer/custom/hx.py +76 -19
- machineconfig/jobs/installer/custom_dev/alacritty.py +4 -4
- machineconfig/jobs/installer/custom_dev/brave.py +1 -7
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +4 -1
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +9 -18
- machineconfig/jobs/installer/custom_dev/sysabc.py +119 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +2 -19
- machineconfig/jobs/installer/installer_data.json +1101 -115
- machineconfig/jobs/installer/linux_scripts/brave.sh +4 -14
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +5 -17
- machineconfig/jobs/installer/linux_scripts/docker.sh +5 -17
- machineconfig/jobs/installer/linux_scripts/docker_start.sh +6 -14
- machineconfig/jobs/installer/linux_scripts/edge.sh +3 -11
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
- machineconfig/jobs/installer/linux_scripts/nerdfont.sh +5 -17
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
- machineconfig/jobs/installer/linux_scripts/q.sh +1 -0
- machineconfig/jobs/installer/linux_scripts/redis.sh +6 -17
- machineconfig/jobs/installer/linux_scripts/vscode.sh +5 -17
- machineconfig/jobs/installer/linux_scripts/wezterm.sh +4 -12
- machineconfig/jobs/installer/package_groups.py +108 -180
- machineconfig/logger.py +0 -1
- machineconfig/profile/backup.toml +49 -0
- machineconfig/profile/bash_shell_profiles.md +11 -0
- machineconfig/profile/create_helper.py +74 -0
- machineconfig/profile/create_links.py +288 -0
- machineconfig/profile/create_links_export.py +100 -0
- machineconfig/profile/create_shell_profile.py +136 -0
- machineconfig/profile/mapper.toml +258 -0
- machineconfig/scripts/Restore-ThunderbirdProfile.ps1 +92 -0
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/{share_cloud.sh → other/share_cloud.sh} +14 -25
- machineconfig/scripts/linux/wrap_mcfg +47 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +92 -103
- machineconfig/scripts/python/ai/command_runner/command_runner.sh +9 -0
- machineconfig/scripts/python/ai/command_runner/prompt.txt +9 -0
- machineconfig/scripts/python/ai/generate_files.py +307 -42
- machineconfig/scripts/python/ai/initai.py +3 -28
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +17 -18
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +17 -18
- machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +1 -1
- machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
- machineconfig/scripts/python/ai/solutions/generic.py +27 -4
- machineconfig/scripts/python/ai/vscode_tasks.py +37 -0
- machineconfig/scripts/python/cloud.py +29 -0
- machineconfig/scripts/python/croshell.py +111 -114
- machineconfig/scripts/python/define.py +31 -0
- machineconfig/scripts/python/devops.py +44 -103
- machineconfig/scripts/python/devops_navigator.py +10 -0
- machineconfig/scripts/python/env_manager/__init__.py +1 -0
- machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
- machineconfig/scripts/python/explore.py +49 -0
- machineconfig/scripts/python/fire_jobs.py +115 -152
- machineconfig/scripts/python/ftpx.py +29 -24
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +14 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +37 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +42 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/{fire_agents_help_launch.py → helpers_agents/fire_agents_help_launch.py} +34 -44
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +34 -0
- machineconfig/scripts/python/helpers_agents/templates/prompt.txt +6 -0
- machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
- machineconfig/scripts/python/helpers_agents/templates/template.sh +24 -0
- machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +30 -23
- machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +10 -18
- machineconfig/scripts/python/{cloud_sync.py → helpers_cloud/cloud_sync.py} +12 -18
- machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +1 -1
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +2 -2
- machineconfig/scripts/python/helpers_devops/cli_config.py +95 -0
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
- machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
- machineconfig/scripts/python/helpers_devops/cli_nw.py +134 -0
- machineconfig/scripts/python/helpers_devops/cli_repos.py +182 -0
- machineconfig/scripts/python/helpers_devops/cli_self.py +134 -0
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +141 -0
- machineconfig/scripts/python/{share_terminal.py → helpers_devops/cli_terminal.py} +35 -23
- machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
- machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
- machineconfig/scripts/python/helpers_devops/devops_status.py +511 -0
- machineconfig/scripts/python/{devops_update_repos.py → helpers_devops/devops_update_repos.py} +68 -49
- machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
- machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +2 -2
- machineconfig/scripts/python/helpers_fire_command/__init__.py +0 -0
- machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +56 -20
- machineconfig/scripts/python/{fire_jobs_args_helper.py → helpers_fire_command/fire_jobs_args_helper.py} +5 -1
- machineconfig/scripts/python/{fire_jobs_route_helper.py → helpers_fire_command/fire_jobs_route_helper.py} +47 -2
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
- machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfag +1 -1
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +1 -1
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfrga +1 -1
- machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/helpers_navigator/command_builder.py +111 -0
- machineconfig/scripts/python/helpers_navigator/command_detail.py +44 -0
- machineconfig/scripts/python/helpers_navigator/command_tree.py +588 -0
- machineconfig/scripts/python/helpers_navigator/data_models.py +28 -0
- machineconfig/scripts/python/helpers_navigator/main_app.py +272 -0
- machineconfig/scripts/python/helpers_navigator/search_bar.py +15 -0
- machineconfig/scripts/python/helpers_repos/action.py +209 -0
- machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
- machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +2 -3
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
- machineconfig/scripts/python/{count_lines.py → helpers_repos/count_lines.py} +10 -10
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +17 -0
- machineconfig/scripts/python/{repos_helper.py → helpers_repos/entrypoint.py} +9 -17
- machineconfig/scripts/python/helpers_repos/grource.py +340 -0
- machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +4 -3
- machineconfig/scripts/python/helpers_repos/sync.py +66 -0
- machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
- machineconfig/scripts/python/helpers_sessions/__init__.py +0 -0
- machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +58 -0
- machineconfig/scripts/python/helpers_utils/download.py +152 -0
- machineconfig/scripts/python/helpers_utils/path.py +108 -0
- machineconfig/scripts/python/interactive.py +64 -84
- machineconfig/scripts/python/machineconfig.py +63 -0
- machineconfig/scripts/python/msearch.py +21 -0
- machineconfig/scripts/python/nw/__init__.py +0 -0
- machineconfig/scripts/python/{devops_add_identity.py → nw/devops_add_identity.py} +0 -2
- machineconfig/scripts/python/{devops_add_ssh_key.py → nw/devops_add_ssh_key.py} +73 -43
- machineconfig/scripts/{linux → python/nw}/mount_nfs +1 -1
- machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +3 -3
- machineconfig/scripts/{linux → python/nw}/mount_nw_drive +1 -2
- machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +3 -3
- machineconfig/scripts/python/{onetimeshare.py → nw/onetimeshare.py} +0 -1
- machineconfig/scripts/python/nw/ssh_debug_linux.py +391 -0
- machineconfig/scripts/python/nw/ssh_debug_windows.py +338 -0
- machineconfig/scripts/python/{wifi_conn.py → nw/wifi_conn.py} +1 -53
- machineconfig/scripts/python/{wsl_windows_transfer.py → nw/wsl_windows_transfer.py} +5 -4
- machineconfig/scripts/python/sessions.py +64 -44
- machineconfig/scripts/python/terminal.py +127 -0
- machineconfig/scripts/python/utils.py +66 -0
- machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
- machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
- machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
- machineconfig/scripts/windows/wrap_mcfg.ps1 +60 -0
- machineconfig/settings/broot/br.sh +0 -4
- machineconfig/settings/broot/conf.toml +1 -1
- machineconfig/settings/helix/config.toml +16 -0
- machineconfig/settings/helix/languages.toml +13 -4
- machineconfig/settings/helix/yazi-picker.sh +12 -0
- machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
- machineconfig/settings/lf/linux/exe/previewer.sh +9 -3
- machineconfig/settings/lf/linux/lfrc +10 -12
- machineconfig/settings/lf/windows/fzf_edit.ps1 +2 -2
- machineconfig/settings/lf/windows/lfrc +18 -38
- machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
- machineconfig/settings/linters/.ruff.toml +1 -1
- machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
- machineconfig/settings/marimo/marimo.toml +80 -0
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/pistol/pistol.conf +1 -1
- machineconfig/settings/shells/bash/init.sh +55 -31
- machineconfig/settings/shells/nushell/config.nu +1 -34
- machineconfig/settings/shells/nushell/init.nu +127 -0
- machineconfig/settings/shells/pwsh/init.ps1 +60 -43
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
- machineconfig/settings/shells/wt/settings.json +32 -17
- machineconfig/settings/shells/zsh/init.sh +89 -0
- machineconfig/settings/svim/linux/init.toml +0 -4
- machineconfig/settings/svim/windows/init.toml +0 -3
- machineconfig/settings/yazi/init.lua +57 -0
- machineconfig/settings/yazi/keymap_linux.toml +79 -0
- machineconfig/settings/yazi/keymap_windows.toml +78 -0
- machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
- machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
- machineconfig/settings/yazi/yazi.toml +13 -0
- machineconfig/setup_linux/__init__.py +10 -0
- machineconfig/setup_linux/apps_desktop.sh +89 -0
- machineconfig/setup_linux/apps_gui.sh +64 -0
- machineconfig/setup_linux/{nix → others}/cli_installation.sh +9 -29
- machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
- machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
- machineconfig/setup_linux/uv.sh +15 -0
- machineconfig/setup_linux/web_shortcuts/interactive.sh +26 -6
- machineconfig/setup_mac/__init__.py +16 -0
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
- machineconfig/setup_mac/uv.sh +36 -0
- machineconfig/setup_windows/__init__.py +8 -0
- machineconfig/setup_windows/others/power_options.ps1 +7 -0
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
- machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
- machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
- machineconfig/setup_windows/uv.ps1 +10 -0
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +27 -10
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +16 -0
- machineconfig/utils/accessories.py +7 -5
- machineconfig/utils/cloud/onedrive/README.md +139 -0
- machineconfig/utils/code.py +133 -106
- machineconfig/utils/files/art/fat_croco.txt +10 -0
- machineconfig/utils/files/art/halfwit_croco.txt +9 -0
- machineconfig/utils/files/art/happy_croco.txt +22 -0
- machineconfig/utils/files/art/water_croco.txt +11 -0
- machineconfig/utils/files/ascii_art.py +1 -1
- machineconfig/utils/files/dbms.py +257 -0
- machineconfig/utils/files/headers.py +11 -14
- machineconfig/utils/files/ouch/__init__.py +0 -0
- machineconfig/utils/files/ouch/decompress.py +45 -0
- machineconfig/utils/files/read.py +10 -18
- machineconfig/utils/installer_utils/installer_class.py +68 -126
- machineconfig/utils/installer_utils/{installer.py → installer_cli.py} +109 -117
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +31 -81
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +44 -74
- machineconfig/utils/io.py +77 -23
- machineconfig/utils/links.py +254 -162
- machineconfig/utils/meta.py +255 -0
- machineconfig/utils/notifications.py +1 -1
- machineconfig/utils/options.py +13 -3
- machineconfig/utils/path_extended.py +46 -100
- machineconfig/utils/path_helper.py +75 -22
- machineconfig/utils/procs.py +50 -70
- machineconfig/utils/scheduler.py +94 -97
- machineconfig/utils/scheduling.py +0 -3
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
- machineconfig/utils/schemas/layouts/layout_types.py +1 -1
- machineconfig/utils/source_of_truth.py +3 -6
- machineconfig/utils/ssh.py +742 -264
- machineconfig/utils/ssh_utils/utils.py +0 -0
- machineconfig/utils/terminal.py +2 -113
- machineconfig/utils/tst.py +20 -0
- machineconfig/utils/upgrade_packages.py +109 -28
- machineconfig/utils/ve.py +11 -4
- machineconfig-7.66.dist-info/METADATA +124 -0
- machineconfig-7.66.dist-info/RECORD +451 -0
- machineconfig-7.66.dist-info/entry_points.txt +15 -0
- machineconfig/cluster/sessions_managers/ffile.py +0 -4
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -49
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -85
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -16
- machineconfig/jobs/python/python_ve_symlink.py +0 -37
- machineconfig/jobs/python/vscode/api.py +0 -57
- machineconfig/jobs/python/vscode/sync_code.py +0 -73
- machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
- machineconfig/jobs/windows/start_terminal.ps1 +0 -6
- machineconfig/jobs/windows/startup_file.cmd +0 -2
- machineconfig/profile/create.py +0 -303
- machineconfig/profile/shell.py +0 -176
- machineconfig/scripts/cloud/init.sh +0 -119
- machineconfig/scripts/linux/agents +0 -2
- machineconfig/scripts/linux/choose_wezterm_theme +0 -3
- machineconfig/scripts/linux/cloud_copy +0 -2
- machineconfig/scripts/linux/cloud_mount +0 -2
- machineconfig/scripts/linux/cloud_repo_sync +0 -2
- machineconfig/scripts/linux/cloud_sync +0 -2
- machineconfig/scripts/linux/croshell +0 -3
- machineconfig/scripts/linux/devops +0 -2
- machineconfig/scripts/linux/fire +0 -2
- machineconfig/scripts/linux/ftpx +0 -2
- machineconfig/scripts/linux/fzf2g +0 -21
- machineconfig/scripts/linux/fzffg +0 -25
- machineconfig/scripts/linux/gh_models +0 -2
- machineconfig/scripts/linux/initai +0 -2
- machineconfig/scripts/linux/kill_process +0 -2
- machineconfig/scripts/linux/scheduler +0 -2
- machineconfig/scripts/linux/sessions +0 -2
- machineconfig/scripts/linux/share_smb +0 -1
- machineconfig/scripts/linux/start_slidev +0 -2
- machineconfig/scripts/linux/start_terminals +0 -3
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/wifi_conn +0 -2
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
- machineconfig/scripts/python/cloud_repo_sync.py +0 -190
- machineconfig/scripts/python/count_lines_frontend.py +0 -16
- machineconfig/scripts/python/dotfile.py +0 -78
- machineconfig/scripts/python/fire_agents_helper_types.py +0 -12
- machineconfig/scripts/python/get_zellij_cmd.py +0 -15
- machineconfig/scripts/python/gh_models.py +0 -104
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -116
- machineconfig/scripts/python/repos.py +0 -132
- machineconfig/scripts/python/repos_helper_action.py +0 -378
- machineconfig/scripts/python/snapshot.py +0 -25
- machineconfig/scripts/python/start_terminals.py +0 -121
- machineconfig/scripts/python/t4.py +0 -17
- machineconfig/scripts/windows/agents.ps1 +0 -1
- machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
- machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
- machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
- machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
- machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
- machineconfig/scripts/windows/croshell.ps1 +0 -1
- machineconfig/scripts/windows/devops.ps1 +0 -1
- machineconfig/scripts/windows/dotfile.ps1 +0 -1
- machineconfig/scripts/windows/fire.ps1 +0 -1
- machineconfig/scripts/windows/ftpx.ps1 +0 -1
- machineconfig/scripts/windows/gpt.ps1 +0 -1
- machineconfig/scripts/windows/grep.ps1 +0 -2
- machineconfig/scripts/windows/initai.ps1 +0 -1
- machineconfig/scripts/windows/kill_process.ps1 +0 -1
- machineconfig/scripts/windows/nano.ps1 +0 -3
- machineconfig/scripts/windows/pomodoro.ps1 +0 -1
- machineconfig/scripts/windows/reload_path.ps1 +0 -3
- machineconfig/scripts/windows/scheduler.ps1 +0 -1
- machineconfig/scripts/windows/sessions.ps1 +0 -1
- machineconfig/scripts/windows/snapshot.ps1 +0 -1
- machineconfig/scripts/windows/start_slidev.ps1 +0 -1
- machineconfig/scripts/windows/start_terminals.ps1 +0 -1
- machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
- machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
- machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
- machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
- machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
- machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
- machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
- machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
- machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
- machineconfig/utils/ai/generate_file_checklist.py +0 -68
- machineconfig-5.15.dist-info/METADATA +0 -188
- machineconfig-5.15.dist-info/RECORD +0 -415
- machineconfig-5.15.dist-info/entry_points.txt +0 -18
- machineconfig/cluster/sessions_managers/{utils → helpers}/load_balancer_helper.py +0 -0
- machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
- machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
- machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
- machineconfig/{jobs/python → scripts/python/helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers → helpers_agents/agentic_frameworks}/__init__.py +0 -0
- machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
- machineconfig/scripts/python/{fire_agents_load_balancer.py → helpers_agents/fire_agents_load_balancer.py} +0 -0
- machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_cloud/__init__.py} +0 -0
- machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_croshell/__init__.py} +0 -0
- /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
- /machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -0
- /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
- /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
- /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_devops/__init__.py} +0 -0
- /machineconfig/scripts/{windows/share_nfs.ps1 → python/helpers_devops/themes/__init__.py} +0 -0
- /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -0
- /machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/skrg +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfb.ps1 +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfg.ps1 +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfrga.bat +0 -0
- /machineconfig/scripts/{linux → python/nw}/mount_drive +0 -0
- /machineconfig/scripts/python/{mount_nw_drive.py → nw/mount_nw_drive.py} +0 -0
- /machineconfig/scripts/{linux → python/nw}/mount_smb +0 -0
- /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
- /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
- /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
- /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
- /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
- {machineconfig-5.15.dist-info → machineconfig-7.66.dist-info}/WHEEL +0 -0
- {machineconfig-5.15.dist-info → machineconfig-7.66.dist-info}/top_level.txt +0 -0
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
2
|
-
from machineconfig.utils.accessories import randstr
|
|
3
|
-
from machineconfig.scripts.python.repos_helper_update import update_repository
|
|
4
|
-
|
|
5
|
-
from typing import Optional
|
|
6
|
-
from dataclasses import dataclass
|
|
7
|
-
from enum import Enum
|
|
8
|
-
|
|
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
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class GitAction(Enum):
|
|
16
|
-
commit = "commit"
|
|
17
|
-
push = "push"
|
|
18
|
-
pull = "pull"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
@dataclass
|
|
22
|
-
class GitOperationResult:
|
|
23
|
-
"""Result of a git operation on a single repository."""
|
|
24
|
-
repo_path: PathExtended
|
|
25
|
-
action: str
|
|
26
|
-
success: bool
|
|
27
|
-
message: str
|
|
28
|
-
is_git_repo: bool = True
|
|
29
|
-
had_changes: bool = False
|
|
30
|
-
remote_count: int = 0
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
@dataclass
|
|
34
|
-
class GitOperationSummary:
|
|
35
|
-
"""Summary of all git operations performed."""
|
|
36
|
-
# Basic statistics
|
|
37
|
-
total_paths_processed: int = 0
|
|
38
|
-
git_repos_found: int = 0
|
|
39
|
-
non_git_paths: int = 0
|
|
40
|
-
|
|
41
|
-
# Per-operation statistics
|
|
42
|
-
commits_attempted: int = 0
|
|
43
|
-
commits_successful: int = 0
|
|
44
|
-
commits_no_changes: int = 0
|
|
45
|
-
commits_failed: int = 0
|
|
46
|
-
|
|
47
|
-
pulls_attempted: int = 0
|
|
48
|
-
pulls_successful: int = 0
|
|
49
|
-
pulls_failed: int = 0
|
|
50
|
-
|
|
51
|
-
pushes_attempted: int = 0
|
|
52
|
-
pushes_successful: int = 0
|
|
53
|
-
pushes_failed: int = 0
|
|
54
|
-
|
|
55
|
-
def __post_init__(self):
|
|
56
|
-
self.failed_operations: list[GitOperationResult] = []
|
|
57
|
-
self.repos_without_remotes: list[PathExtended] = []
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
def git_action(path: PathExtended, action: GitAction, mess: Optional[str] = None, r: bool = False, auto_sync: bool = True) -> GitOperationResult:
|
|
61
|
-
"""Perform git actions using Python instead of shell scripts. Returns detailed operation result."""
|
|
62
|
-
from git.exc import InvalidGitRepositoryError
|
|
63
|
-
from git.repo import Repo
|
|
64
|
-
|
|
65
|
-
try:
|
|
66
|
-
repo = Repo(str(path), search_parent_directories=False)
|
|
67
|
-
except InvalidGitRepositoryError:
|
|
68
|
-
pprint(f"⚠️ Skipping {path} because it is not a git repository.")
|
|
69
|
-
if r:
|
|
70
|
-
results = [git_action(path=sub_path, action=action, mess=mess, r=r, auto_sync=auto_sync) for sub_path in path.search()]
|
|
71
|
-
# For recursive calls, we need to aggregate results somehow
|
|
72
|
-
# For now, return success if all recursive operations succeeded
|
|
73
|
-
all_successful = all(result.success for result in results)
|
|
74
|
-
return GitOperationResult(
|
|
75
|
-
repo_path=path,
|
|
76
|
-
action=action.value,
|
|
77
|
-
success=all_successful,
|
|
78
|
-
message=f"Recursive operation: {len([r for r in results if r.success])}/{len(results)} succeeded",
|
|
79
|
-
is_git_repo=False
|
|
80
|
-
)
|
|
81
|
-
else:
|
|
82
|
-
return GitOperationResult(
|
|
83
|
-
repo_path=path,
|
|
84
|
-
action=action.value,
|
|
85
|
-
success=False,
|
|
86
|
-
message="Not a git repository",
|
|
87
|
-
is_git_repo=False
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
print(f">>>>>>>>> 🔧{action} - {path}")
|
|
91
|
-
remote_count = len(repo.remotes)
|
|
92
|
-
|
|
93
|
-
try:
|
|
94
|
-
if action == GitAction.commit:
|
|
95
|
-
if mess is None:
|
|
96
|
-
mess = "auto_commit_" + randstr()
|
|
97
|
-
|
|
98
|
-
# Check if there are changes to commit
|
|
99
|
-
if repo.is_dirty() or repo.untracked_files:
|
|
100
|
-
repo.git.add(A=True) # Stage all changes
|
|
101
|
-
repo.index.commit(mess)
|
|
102
|
-
print(f"✅ Committed changes with message: {mess}")
|
|
103
|
-
return GitOperationResult(
|
|
104
|
-
repo_path=path,
|
|
105
|
-
action=action.value,
|
|
106
|
-
success=True,
|
|
107
|
-
message=f"Committed changes with message: {mess}",
|
|
108
|
-
had_changes=True,
|
|
109
|
-
remote_count=remote_count
|
|
110
|
-
)
|
|
111
|
-
else:
|
|
112
|
-
print("ℹ️ No changes to commit")
|
|
113
|
-
return GitOperationResult(
|
|
114
|
-
repo_path=path,
|
|
115
|
-
action=action.value,
|
|
116
|
-
success=True,
|
|
117
|
-
message="No changes to commit",
|
|
118
|
-
had_changes=False,
|
|
119
|
-
remote_count=remote_count
|
|
120
|
-
)
|
|
121
|
-
|
|
122
|
-
elif action == GitAction.push:
|
|
123
|
-
if not repo.remotes:
|
|
124
|
-
print("⚠️ No remotes configured for push")
|
|
125
|
-
return GitOperationResult(
|
|
126
|
-
repo_path=path,
|
|
127
|
-
action=action.value,
|
|
128
|
-
success=False,
|
|
129
|
-
message="No remotes configured",
|
|
130
|
-
remote_count=0
|
|
131
|
-
)
|
|
132
|
-
|
|
133
|
-
success = True
|
|
134
|
-
failed_remotes = []
|
|
135
|
-
for remote in repo.remotes:
|
|
136
|
-
try:
|
|
137
|
-
print(f"🚀 Pushing to {remote.url}")
|
|
138
|
-
remote.push(repo.active_branch.name)
|
|
139
|
-
print(f"✅ Pushed to {remote.name}")
|
|
140
|
-
except Exception as e:
|
|
141
|
-
print(f"❌ Failed to push to {remote.name}: {e}")
|
|
142
|
-
failed_remotes.append(f"{remote.name}: {str(e)}")
|
|
143
|
-
success = False
|
|
144
|
-
|
|
145
|
-
message = "Push successful" if success else f"Push failed for: {', '.join(failed_remotes)}"
|
|
146
|
-
return GitOperationResult(
|
|
147
|
-
repo_path=path,
|
|
148
|
-
action=action.value,
|
|
149
|
-
success=success,
|
|
150
|
-
message=message,
|
|
151
|
-
remote_count=remote_count
|
|
152
|
-
)
|
|
153
|
-
|
|
154
|
-
elif action == GitAction.pull:
|
|
155
|
-
# Use the enhanced update function with uv sync support
|
|
156
|
-
try:
|
|
157
|
-
update_repository(repo, auto_sync=auto_sync, allow_password_prompt=False)
|
|
158
|
-
print("✅ Pull completed")
|
|
159
|
-
return GitOperationResult(
|
|
160
|
-
repo_path=path,
|
|
161
|
-
action=action.value,
|
|
162
|
-
success=True,
|
|
163
|
-
message="Pull completed successfully",
|
|
164
|
-
remote_count=remote_count
|
|
165
|
-
)
|
|
166
|
-
except Exception as e:
|
|
167
|
-
print(f"❌ Pull failed: {e}")
|
|
168
|
-
return GitOperationResult(
|
|
169
|
-
repo_path=path,
|
|
170
|
-
action=action.value,
|
|
171
|
-
success=False,
|
|
172
|
-
message=f"Pull failed: {str(e)}",
|
|
173
|
-
remote_count=remote_count
|
|
174
|
-
)
|
|
175
|
-
|
|
176
|
-
except Exception as e:
|
|
177
|
-
print(f"❌ Error performing {action} on {path}: {e}")
|
|
178
|
-
return GitOperationResult(
|
|
179
|
-
repo_path=path,
|
|
180
|
-
action=action.value,
|
|
181
|
-
success=False,
|
|
182
|
-
message=f"Error: {str(e)}",
|
|
183
|
-
remote_count=remote_count
|
|
184
|
-
)
|
|
185
|
-
|
|
186
|
-
# This should never be reached, but just in case
|
|
187
|
-
return GitOperationResult(
|
|
188
|
-
repo_path=path,
|
|
189
|
-
action=action.value,
|
|
190
|
-
success=False,
|
|
191
|
-
message="Unknown error",
|
|
192
|
-
remote_count=remote_count
|
|
193
|
-
)
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
def print_git_operations_summary(summary: GitOperationSummary, operations_performed: list[str]) -> None:
|
|
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
|
-
|
|
217
|
-
if "commit" in operations_performed:
|
|
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
|
-
|
|
230
|
-
if "pull" in operations_performed:
|
|
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
|
-
|
|
242
|
-
if "push" in operations_performed:
|
|
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
|
-
))
|
|
253
|
-
|
|
254
|
-
if stat_panels:
|
|
255
|
-
console.print(Columns(stat_panels, equal=True, expand=True))
|
|
256
|
-
|
|
257
|
-
# Repositories without remotes warning
|
|
258
|
-
if summary.repos_without_remotes:
|
|
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
|
-
|
|
263
|
-
for repo_path in summary.repos_without_remotes:
|
|
264
|
-
repos_table.add_row(repo_path.name, str(repo_path))
|
|
265
|
-
|
|
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
|
|
272
|
-
if summary.failed_operations:
|
|
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
|
|
279
|
-
failed_by_action = {}
|
|
280
|
-
for failed_op in summary.failed_operations:
|
|
281
|
-
if failed_op.action not in failed_by_action:
|
|
282
|
-
failed_by_action[failed_op.action] = []
|
|
283
|
-
failed_by_action[failed_op.action].append(failed_op)
|
|
284
|
-
|
|
285
|
-
for action, failures in failed_by_action.items():
|
|
286
|
-
for failure in failures:
|
|
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)
|
|
292
|
-
else:
|
|
293
|
-
console.print("[green]✅ All git operations completed successfully![/green]")
|
|
294
|
-
|
|
295
|
-
# Overall success assessment
|
|
296
|
-
total_failed = len(summary.failed_operations)
|
|
297
|
-
total_operations = (summary.commits_attempted + summary.pulls_attempted +
|
|
298
|
-
summary.pushes_attempted)
|
|
299
|
-
|
|
300
|
-
if total_failed == 0 and total_operations > 0:
|
|
301
|
-
console.print(f"\n[bold green]🎉 SUCCESS: All {total_operations} operations completed successfully![/bold green]")
|
|
302
|
-
elif total_operations == 0:
|
|
303
|
-
console.print("\n[blue]📝 No git operations were performed.[/blue]")
|
|
304
|
-
else:
|
|
305
|
-
success_rate = ((total_operations - total_failed) / total_operations * 100) if total_operations > 0 else 0
|
|
306
|
-
if total_failed > 0:
|
|
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]")
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
def perform_git_operations(repos_root: PathExtended, pull: bool, commit: bool, push: bool, recursive: bool, auto_sync: bool) -> None:
|
|
314
|
-
"""Perform git operations on all repositories and provide detailed summary."""
|
|
315
|
-
print(f"\n🔄 Performing Git actions on repositories @ `{repos_root}`...")
|
|
316
|
-
summary = GitOperationSummary()
|
|
317
|
-
operations_performed = []
|
|
318
|
-
# Determine which operations to perform
|
|
319
|
-
if pull:
|
|
320
|
-
operations_performed.append("pull")
|
|
321
|
-
if commit:
|
|
322
|
-
operations_performed.append("commit")
|
|
323
|
-
if push:
|
|
324
|
-
operations_performed.append("push")
|
|
325
|
-
|
|
326
|
-
for a_path in repos_root.search("*"):
|
|
327
|
-
print(f"{('Handling ' + str(a_path)).center(80, '-')}")
|
|
328
|
-
summary.total_paths_processed += 1
|
|
329
|
-
|
|
330
|
-
# Check if this is a git repository first
|
|
331
|
-
from git.exc import InvalidGitRepositoryError
|
|
332
|
-
from git.repo import Repo
|
|
333
|
-
|
|
334
|
-
try:
|
|
335
|
-
repo = Repo(str(a_path), search_parent_directories=False)
|
|
336
|
-
summary.git_repos_found += 1
|
|
337
|
-
|
|
338
|
-
# Track repos without remotes
|
|
339
|
-
if len(repo.remotes) == 0:
|
|
340
|
-
summary.repos_without_remotes.append(a_path)
|
|
341
|
-
|
|
342
|
-
# Now perform the actual operations
|
|
343
|
-
if pull:
|
|
344
|
-
result = git_action(path=a_path, action=GitAction.pull, r=recursive, auto_sync=auto_sync)
|
|
345
|
-
summary.pulls_attempted += 1
|
|
346
|
-
if result.success:
|
|
347
|
-
summary.pulls_successful += 1
|
|
348
|
-
else:
|
|
349
|
-
summary.pulls_failed += 1
|
|
350
|
-
summary.failed_operations.append(result)
|
|
351
|
-
|
|
352
|
-
if commit:
|
|
353
|
-
result = git_action(a_path, action=GitAction.commit, r=recursive, auto_sync=auto_sync)
|
|
354
|
-
summary.commits_attempted += 1
|
|
355
|
-
if result.success:
|
|
356
|
-
if result.had_changes:
|
|
357
|
-
summary.commits_successful += 1
|
|
358
|
-
else:
|
|
359
|
-
summary.commits_no_changes += 1
|
|
360
|
-
else:
|
|
361
|
-
summary.commits_failed += 1
|
|
362
|
-
summary.failed_operations.append(result)
|
|
363
|
-
|
|
364
|
-
if push:
|
|
365
|
-
result = git_action(a_path, action=GitAction.push, r=recursive, auto_sync=auto_sync)
|
|
366
|
-
summary.pushes_attempted += 1
|
|
367
|
-
if result.success:
|
|
368
|
-
summary.pushes_successful += 1
|
|
369
|
-
else:
|
|
370
|
-
summary.pushes_failed += 1
|
|
371
|
-
summary.failed_operations.append(result)
|
|
372
|
-
|
|
373
|
-
except InvalidGitRepositoryError:
|
|
374
|
-
summary.non_git_paths += 1
|
|
375
|
-
pprint(f"⚠️ Skipping {a_path} because it is not a git repository.")
|
|
376
|
-
|
|
377
|
-
# Print the detailed summary
|
|
378
|
-
print_git_operations_summary(summary, operations_performed)
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# def main():
|
|
2
|
-
# print("\n" + "=" * 50)
|
|
3
|
-
# print("📸 Welcome to the Snapshot Tool")
|
|
4
|
-
# print("=" * 50 + "\n")
|
|
5
|
-
|
|
6
|
-
# parser = argparse.ArgumentParser(description='📷 Capture snapshots using your webcam.')
|
|
7
|
-
# parser.add_argument("--to_text", "-t", help="📝 Convert the snapshot to text using OCR.", action="store_true")
|
|
8
|
-
# args = parser.parse_args()
|
|
9
|
-
|
|
10
|
-
# print("📷 Capturing image from webcam...")
|
|
11
|
-
# img_path = capture_from_webcam(show=False, wait=False, save=True)
|
|
12
|
-
# print(f"✅ Image captured and saved at: {img_path}\n")
|
|
13
|
-
|
|
14
|
-
# if args.to_text:
|
|
15
|
-
# print("🔍 Converting image to text using Tesseract OCR...")
|
|
16
|
-
# q = Terminal().run(f"cd ~/AppData/Local/Tesseract-OCR; pytesseract '{img_path}'", shell="pwsh").capture().op
|
|
17
|
-
# print("📝 Extracted Text:")
|
|
18
|
-
# print("-" * 50)
|
|
19
|
-
# print(q)
|
|
20
|
-
# print("-" * 50 + "\n")
|
|
21
|
-
# else:
|
|
22
|
-
# print("📂 Image saved successfully. No text extraction requested.\n")
|
|
23
|
-
|
|
24
|
-
# if __name__ == '__main__':
|
|
25
|
-
# main()
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"""Script to start terminals on windows and wsl"""
|
|
2
|
-
|
|
3
|
-
from machineconfig.utils.options import choose_from_options, get_ssh_hosts
|
|
4
|
-
import platform
|
|
5
|
-
from itertools import cycle
|
|
6
|
-
from typing import Literal, Optional, Annotated
|
|
7
|
-
import typer
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
COLOR_SCHEMES = ["Campbell", "Campbell Powershell", "Solarized Dark", "Ubuntu-ColorScheme", "Retro"]
|
|
11
|
-
THEMES_ITER = cycle(COLOR_SCHEMES)
|
|
12
|
-
INIT_COMMANDS = ["ls", "lf", "cpufetch", "fastfetch", "btm"]
|
|
13
|
-
INIT_COMMANDS_ITER = cycle(INIT_COMMANDS)
|
|
14
|
-
SIZE_ITER = cycle([0.6, 0.4, 0.3])
|
|
15
|
-
ORIENTATION = ["vertical", "horizontal"]
|
|
16
|
-
ORIENTATION_ITER = cycle(ORIENTATION)
|
|
17
|
-
ORIENTATION_TYPE = Literal["vertical", "horizontal"]
|
|
18
|
-
|
|
19
|
-
THIS_MACHINE = "this"
|
|
20
|
-
THIS_MACHINE_WSL = "thiswsl"
|
|
21
|
-
THIS_MACHINE_HOSTNAME = platform.node()
|
|
22
|
-
THIS_MACHINE_HOSTNAME_WSL = f"{THIS_MACHINE_HOSTNAME}wsl"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def main_windows_and_wsl(window: int, hosts: list[str], orientation: ORIENTATION_TYPE = "vertical", mprocs: bool = False):
|
|
26
|
-
print("\n🔧 Configuring terminal layout for Windows and WSL...")
|
|
27
|
-
orientation_oposite = "horizontal" if orientation == "vertical" else "vertical"
|
|
28
|
-
orientation_swap = "up" if orientation == "horizontal" else "left"
|
|
29
|
-
orientation_opposite_move_focus = "up" if orientation_oposite == "horizontal" else "left"
|
|
30
|
-
orientation_opposite_move_focus_other = "down" if orientation_oposite == "horizontal" else "right"
|
|
31
|
-
sleep = 3
|
|
32
|
-
sep = f"\nsleep {sleep}; wt --window {window}" # or '`;'
|
|
33
|
-
ssh_cmd = "-t 'mprocs'" if mprocs else "" # 'wsl_ssh_windows_port_forwarding.ps1'
|
|
34
|
-
split_per_machine = 1 / len(hosts)
|
|
35
|
-
size = 0.3
|
|
36
|
-
known_hosts = get_ssh_hosts()
|
|
37
|
-
if len(hosts) == 1:
|
|
38
|
-
print("🖥️ Single host detected. Configuring layout...")
|
|
39
|
-
if "wsl" in hosts[0] or f"{hosts[0]}wsl" in known_hosts: # its a windows machine with wsl
|
|
40
|
-
host_wind = hosts[0] if "wsl" not in hosts[0] else hosts[0].split("wsl")[0]
|
|
41
|
-
host_linux = f"{host_wind}wsl"
|
|
42
|
-
cmd = f"""
|
|
43
|
-
wt --window {window} --title {hosts[0]} powershell -Command "ssh {host_linux} {ssh_cmd}" `; split-pane --{orientation} --title {hosts[0]}wsl --size 0.5 powershell -Command "ssh {host_wind} `; split-pane --{orientation_oposite} --size 0.5 powershell "
|
|
44
|
-
"""
|
|
45
|
-
else: # its a windows machine without wsl
|
|
46
|
-
cmd = f"""wt --window {window} --title {hosts[0]} powershell -Command "ssh {hosts[0]} {ssh_cmd}" `; split-pane --{orientation} --title {hosts[0]}wsl --size 0.1 powershell """
|
|
47
|
-
|
|
48
|
-
elif len(hosts) > 1:
|
|
49
|
-
print("🖥️ Multiple hosts detected. Configuring layout...")
|
|
50
|
-
pane_cmd = f'powershell -Command "ssh {hosts[0]} {ssh_cmd}" ' if hosts[0] != THIS_MACHINE else ""
|
|
51
|
-
cmd = f"""wt --window {window} --title {hosts[0]} {pane_cmd} """
|
|
52
|
-
for a_host in hosts[1:]:
|
|
53
|
-
if a_host != THIS_MACHINE:
|
|
54
|
-
pane_cmd = f'powershell -Command "ssh {a_host} {ssh_cmd}" '
|
|
55
|
-
else:
|
|
56
|
-
pane_cmd = "powershell"
|
|
57
|
-
cmd += f"""{sep} split-pane --{orientation_oposite} --title {a_host}Windows --size {split_per_machine} {pane_cmd} """
|
|
58
|
-
for idx, a_host in enumerate(hosts[::-1]):
|
|
59
|
-
if f"{a_host}wsl" not in known_hosts and a_host != THIS_MACHINE:
|
|
60
|
-
continue
|
|
61
|
-
pane_cmd = f'powershell -Command "ssh {a_host}wsl"' if a_host != THIS_MACHINE else "wsl"
|
|
62
|
-
if idx == 0:
|
|
63
|
-
tmp = ""
|
|
64
|
-
else:
|
|
65
|
-
tmp = f"move-focus {orientation_opposite_move_focus}" if idx % 2 == 1 else f"move-focus {orientation_opposite_move_focus_other}"
|
|
66
|
-
cmd += f"""{sep} {tmp} split-pane --{orientation} --title {a_host}wsl --size {size} {pane_cmd} """
|
|
67
|
-
cmd += f"""{sep} swap-pane {orientation_swap} """
|
|
68
|
-
else:
|
|
69
|
-
raise NotImplementedError(f"❌ len(hosts) = {len(hosts)}. Only 1 or 2 hosts are supported.")
|
|
70
|
-
print("✅ Terminal layout configured successfully!\n")
|
|
71
|
-
return cmd
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def main(
|
|
75
|
-
panes: Annotated[Optional[int], typer.Option("--panes", "-p", help="🔲 The number of panes to open.")] = 4,
|
|
76
|
-
vertical: Annotated[bool, typer.Option("--vertical", "-V", help="↕️ Switch orientation to vertical from default horizontal.")] = False,
|
|
77
|
-
window: Annotated[int, typer.Option("--window", "-w", help="🪟 The window ID to use.")] = 0,
|
|
78
|
-
hosts: Annotated[Optional[list[str]], typer.Option("--hosts", "-H", help="🌐 The hosts to connect to.")] = None,
|
|
79
|
-
) -> None:
|
|
80
|
-
print("\n" + "=" * 50)
|
|
81
|
-
print("🖥️ Welcome to the Terminal Starter Tool")
|
|
82
|
-
print("=" * 50 + "\n")
|
|
83
|
-
|
|
84
|
-
if panes:
|
|
85
|
-
print("🔲 Configuring panes...")
|
|
86
|
-
cmd = f"wt --window {window} --colorScheme '{next(THEMES_ITER)}' pwsh -NoExit -Command '{next(INIT_COMMANDS_ITER)}' "
|
|
87
|
-
cmd += f" `; new-tab --colorScheme '{next(THEMES_ITER)}' --profile pwsh --title 't2' --tabColor '#f59218' "
|
|
88
|
-
cmd += f" `; new-tab --colorScheme '{next(THEMES_ITER)}' --profile pwsh --title 't3' --tabColor '#009999' "
|
|
89
|
-
for idx in range(panes):
|
|
90
|
-
if idx % 2 == 0:
|
|
91
|
-
cmd += f" `; move-focus down split-pane --horizontal --size {next(SIZE_ITER)} --colorScheme '{next(THEMES_ITER)}' pwsh -NoExit -Command '{next(INIT_COMMANDS_ITER)}' "
|
|
92
|
-
else:
|
|
93
|
-
cmd += f" `; move-focus up split-pane --vertical --size {next(SIZE_ITER)} --colorScheme '{next(THEMES_ITER)}' pwsh -NoExit -Command '{next(INIT_COMMANDS_ITER)}' "
|
|
94
|
-
|
|
95
|
-
else:
|
|
96
|
-
if hosts is None:
|
|
97
|
-
print("🌐 No hosts provided. Displaying options...")
|
|
98
|
-
hosts = choose_from_options(msg="Select hosts:", options=get_ssh_hosts() + [THIS_MACHINE], multi=True, fzf=True)
|
|
99
|
-
else:
|
|
100
|
-
print("🌐 Using provided hosts:", hosts)
|
|
101
|
-
assert isinstance(hosts, list)
|
|
102
|
-
cmd = main_windows_and_wsl(window=window, hosts=hosts, orientation="vertical" if vertical else "horizontal")
|
|
103
|
-
|
|
104
|
-
print("\n📋 Generated Command:")
|
|
105
|
-
print("-" * 50)
|
|
106
|
-
print(cmd)
|
|
107
|
-
print("-" * 50 + "\n")
|
|
108
|
-
|
|
109
|
-
# PROGRAM_PATH.write_text(cmd, encoding="utf-8")
|
|
110
|
-
import subprocess
|
|
111
|
-
|
|
112
|
-
subprocess.run(cmd, shell=True)
|
|
113
|
-
print("✅ Command saved successfully!\n")
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
def arg_parser() -> None:
|
|
117
|
-
typer.run(main)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if __name__ == "__main__":
|
|
121
|
-
arg_parser()
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import typer
|
|
3
|
-
from typing import Annotated
|
|
4
|
-
|
|
5
|
-
def func(name: str):
|
|
6
|
-
print(f"Hello, {name}! from func")
|
|
7
|
-
|
|
8
|
-
def hello(*, name: Annotated[str, typer.Option(..., help="Name to greet")]):
|
|
9
|
-
print(f"Hello, {name}!")
|
|
10
|
-
|
|
11
|
-
def main():
|
|
12
|
-
typer.run(hello)
|
|
13
|
-
|
|
14
|
-
if __name__ == "__main__":
|
|
15
|
-
# typer.run(hello)
|
|
16
|
-
main()
|
|
17
|
-
pass
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig agents $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig choose_wezterm_theme $args[0]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig cloud_copy $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig cloud_mount $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig cloud_repo_sync $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig cloud_sync $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig croshell $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig devops $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig dotfile $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig fire $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig ftpx $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig chatgpt $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig initai $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig kill_process $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig pomodoro $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig scheduler $Args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig sessions $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig snapshot $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig start_slidev $args
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig start_terminals $args
|