machineconfig 3.99__py3-none-any.whl → 7.66__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- 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 +1 -2
- machineconfig/cluster/sessions_managers/{enhanced_command_runner.py → helpers/enhanced_command_runner.py} +4 -6
- machineconfig/cluster/sessions_managers/helpers/load_balancer_helper.py +145 -0
- machineconfig/cluster/sessions_managers/utils/load_balancer.py +53 -0
- machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
- machineconfig/cluster/sessions_managers/wt_local.py +128 -330
- machineconfig/cluster/sessions_managers/wt_local_manager.py +53 -187
- 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 -172
- 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 -16
- machineconfig/jobs/installer/custom/boxes.py +61 -0
- machineconfig/jobs/installer/custom/gh.py +69 -53
- machineconfig/jobs/installer/custom/hx.py +77 -20
- machineconfig/jobs/installer/custom_dev/alacritty.py +45 -30
- machineconfig/jobs/installer/custom_dev/brave.py +43 -35
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py +31 -20
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +33 -21
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
- machineconfig/jobs/installer/custom_dev/espanso.py +64 -41
- machineconfig/jobs/installer/custom_dev/goes.py +41 -36
- machineconfig/jobs/installer/custom_dev/lvim.py +49 -33
- machineconfig/jobs/installer/custom_dev/nerdfont.py +71 -47
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +32 -26
- machineconfig/jobs/installer/custom_dev/redis.py +51 -33
- machineconfig/jobs/installer/custom_dev/sysabc.py +119 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +55 -39
- machineconfig/jobs/installer/custom_dev/winget.py +1 -0
- machineconfig/jobs/installer/installer_data.json +3406 -0
- 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/ngrok.sh +6 -0
- machineconfig/jobs/installer/linux_scripts/q.sh +9 -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 +255 -0
- 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 +198 -0
- 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 +117 -181
- machineconfig/scripts/python/define.py +31 -0
- machineconfig/scripts/python/devops.py +44 -124
- 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 +106 -244
- machineconfig/scripts/python/ftpx.py +125 -68
- 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/helpers_agents/fire_agents_help_launch.py +110 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +34 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_load_balancer.py +22 -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} +11 -19
- machineconfig/scripts/python/{cloud_sync.py → helpers_cloud/cloud_sync.py} +12 -18
- machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +17 -7
- 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/helpers_devops/cli_terminal.py +156 -0
- 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/helpers_devops/devops_update_repos.py +269 -0
- 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} +57 -87
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +145 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +110 -0
- 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} +6 -7
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
- machineconfig/scripts/python/helpers_repos/count_lines.py +348 -0
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +17 -0
- machineconfig/scripts/python/helpers_repos/entrypoint.py +77 -0
- machineconfig/scripts/python/helpers_repos/grource.py +340 -0
- machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +7 -4
- 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 +79 -160
- 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} +1 -3
- machineconfig/scripts/python/{devops_add_ssh_key.py → nw/devops_add_ssh_key.py} +74 -44
- machineconfig/scripts/{linux → python/nw}/mount_nfs +1 -1
- machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +19 -16
- machineconfig/scripts/{linux → python/nw}/mount_nw_drive +1 -2
- machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +7 -8
- 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} +6 -5
- machineconfig/scripts/python/sessions.py +167 -0
- 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 -9
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +16 -0
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
- machineconfig/utils/accessories.py +7 -5
- machineconfig/utils/cloud/onedrive/README.md +139 -0
- machineconfig/utils/code.py +140 -93
- 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 +118 -0
- machineconfig/utils/files/dbms.py +257 -0
- machineconfig/utils/files/headers.py +68 -0
- machineconfig/utils/files/ouch/__init__.py +0 -0
- machineconfig/utils/files/ouch/decompress.py +45 -0
- machineconfig/utils/files/read.py +95 -0
- machineconfig/utils/installer_utils/github_release_bulk.py +2 -12
- machineconfig/utils/installer_utils/installer_class.py +68 -126
- machineconfig/utils/installer_utils/installer_cli.py +181 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +38 -85
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +69 -69
- machineconfig/utils/io.py +77 -23
- machineconfig/utils/links.py +309 -100
- machineconfig/utils/meta.py +255 -0
- machineconfig/utils/notifications.py +1 -1
- machineconfig/utils/options.py +10 -25
- machineconfig/utils/path_extended.py +94 -104
- machineconfig/utils/path_helper.py +75 -22
- machineconfig/utils/procs.py +50 -74
- machineconfig/utils/scheduler.py +94 -97
- machineconfig/utils/scheduling.py +0 -3
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +5 -17
- machineconfig/utils/schemas/installer/installer_types.py +0 -1
- machineconfig/utils/schemas/layouts/layout_types.py +2 -1
- machineconfig/utils/source_of_truth.py +3 -6
- machineconfig/utils/ssh.py +742 -254
- machineconfig/utils/ssh_utils/utils.py +0 -0
- machineconfig/utils/terminal.py +3 -140
- machineconfig/utils/tst.py +20 -0
- machineconfig/utils/upgrade_packages.py +109 -28
- machineconfig/utils/ve.py +13 -5
- 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/templates/utils.py +0 -51
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -49
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -85
- machineconfig/jobs/installer/packages_custom_dev.json +0 -226
- machineconfig/jobs/installer/packages_custom_essential.json +0 -39
- machineconfig/jobs/installer/packages_github_dev.json +0 -1110
- machineconfig/jobs/installer/packages_github_essential.json +0 -804
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -37
- machineconfig/jobs/python/create_bootable_media.py +0 -16
- machineconfig/jobs/python/python_cargo_build_share.py +0 -59
- machineconfig/jobs/python/python_ve_symlink.py +0 -29
- machineconfig/jobs/python/tasks.py +0 -3
- machineconfig/jobs/python/vscode/api.py +0 -49
- machineconfig/jobs/python/vscode/sync_code.py +0 -58
- 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 -170
- machineconfig/profile/shell.py +0 -176
- machineconfig/scripts/cloud/init.sh +0 -119
- 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/fire_agents +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/programs +0 -21
- machineconfig/scripts/linux/repos +0 -2
- machineconfig/scripts/linux/scheduler +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 -186
- machineconfig/scripts/python/devops_devapps_install.py +0 -159
- machineconfig/scripts/python/devops_update_repos.py +0 -180
- machineconfig/scripts/python/dotfile.py +0 -52
- machineconfig/scripts/python/fire_agents.py +0 -175
- machineconfig/scripts/python/fire_agents_help_launch.py +0 -143
- machineconfig/scripts/python/fire_agents_load_balancer.py +0 -50
- machineconfig/scripts/python/fire_jobs_args_helper.py +0 -75
- machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -74
- 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 -114
- machineconfig/scripts/python/repos.py +0 -80
- machineconfig/scripts/python/repos_helper_action.py +0 -335
- machineconfig/scripts/python/share_terminal.py +0 -104
- 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/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/repos.ps1 +0 -1
- machineconfig/scripts/windows/scheduler.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/ascii_art.sh +0 -93
- 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-3.99.dist-info/METADATA +0 -167
- machineconfig-3.99.dist-info/RECORD +0 -409
- machineconfig-3.99.dist-info/entry_points.txt +0 -18
- machineconfig/cluster/{templates → remote}/run_cloud.py +0 -0
- machineconfig/cluster/{templates → remote}/run_cluster.py +0 -0
- machineconfig/cluster/{templates → remote}/run_remote.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/{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-3.99.dist-info → machineconfig-7.66.dist-info}/WHEEL +0 -0
- {machineconfig-3.99.dist-info → machineconfig-7.66.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
import json
|
|
3
|
+
import logging
|
|
4
|
+
import shutil
|
|
5
|
+
import subprocess
|
|
6
|
+
from datetime import datetime
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from typing import TYPE_CHECKING, Optional
|
|
9
|
+
|
|
10
|
+
from machineconfig.cluster.sessions_managers.zellij_utils.monitoring_types import ActiveSessionInfo, StartResult
|
|
11
|
+
from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from machineconfig.cluster.sessions_managers.zellij_local import ZellijLayoutGenerator
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
TMP_SERIALIZATION_DIR = Path.home() / "tmp_results" / "zellij_sessions" / "serialized"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def list_saved_sessions() -> list[str]:
|
|
22
|
+
"""List all saved session IDs."""
|
|
23
|
+
if not TMP_SERIALIZATION_DIR.exists():
|
|
24
|
+
return []
|
|
25
|
+
sessions = []
|
|
26
|
+
for item in TMP_SERIALIZATION_DIR.iterdir():
|
|
27
|
+
if item.is_dir() and (item / "metadata.json").exists():
|
|
28
|
+
sessions.append(item.name)
|
|
29
|
+
return sorted(sessions)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def delete_session(session_id: str) -> bool:
|
|
33
|
+
"""Delete a saved session."""
|
|
34
|
+
session_dir = TMP_SERIALIZATION_DIR / session_id
|
|
35
|
+
if not session_dir.exists():
|
|
36
|
+
logger.warning(f"Session directory not found: {session_dir}")
|
|
37
|
+
return False
|
|
38
|
+
try:
|
|
39
|
+
shutil.rmtree(session_dir)
|
|
40
|
+
logger.info(f"✅ Deleted session: {session_id}")
|
|
41
|
+
return True
|
|
42
|
+
except Exception as e:
|
|
43
|
+
logger.error(f"Failed to delete session {session_id}: {e}")
|
|
44
|
+
return False
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_all_session_names(managers: list["ZellijLayoutGenerator"]) -> list[str]:
|
|
48
|
+
"""Get all managed session names."""
|
|
49
|
+
return [manager.session_name for manager in managers]
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def attach_to_session(managers: list["ZellijLayoutGenerator"], session_name: Optional[str]) -> str:
|
|
53
|
+
"""
|
|
54
|
+
Generate command to attach to a specific session or list attachment commands for all.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
managers: List of ZellijLayoutGenerator instances
|
|
58
|
+
session_name: Specific session to attach to, or None for all sessions
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
Command string to attach to session(s)
|
|
62
|
+
"""
|
|
63
|
+
if session_name:
|
|
64
|
+
for manager in managers:
|
|
65
|
+
if manager.session_name == session_name:
|
|
66
|
+
return f"zellij attach {session_name}"
|
|
67
|
+
raise ValueError(f"Session '{session_name}' not found")
|
|
68
|
+
else:
|
|
69
|
+
commands: list[str] = []
|
|
70
|
+
for manager in managers:
|
|
71
|
+
commands.append(f"# Attach to session '{manager.session_name}':")
|
|
72
|
+
commands.append(f"zellij attach {manager.session_name}")
|
|
73
|
+
commands.append("")
|
|
74
|
+
return "\n".join(commands)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def list_active_sessions(managers: list["ZellijLayoutGenerator"]) -> list[ActiveSessionInfo]:
|
|
78
|
+
"""List currently active zellij sessions managed by this instance."""
|
|
79
|
+
active_sessions: list[ActiveSessionInfo] = []
|
|
80
|
+
try:
|
|
81
|
+
result = subprocess.run(["zellij", "list-sessions"], capture_output=True, text=True, timeout=10)
|
|
82
|
+
if result.returncode == 0:
|
|
83
|
+
all_sessions = result.stdout.strip().split("\n") if result.stdout.strip() else []
|
|
84
|
+
for manager in managers:
|
|
85
|
+
session_name = manager.session_name
|
|
86
|
+
is_active = any(session_name in session for session in all_sessions)
|
|
87
|
+
tab_info = []
|
|
88
|
+
tab_count = 0
|
|
89
|
+
if manager.layout_config:
|
|
90
|
+
tab_count = len(manager.layout_config["layoutTabs"])
|
|
91
|
+
tab_info = [tab["tabName"] for tab in manager.layout_config["layoutTabs"]]
|
|
92
|
+
active_sessions.append({"session_name": session_name, "is_active": is_active, "tab_count": tab_count, "tabs": tab_info})
|
|
93
|
+
except Exception as e:
|
|
94
|
+
logger.error(f"Error listing active sessions: {e}")
|
|
95
|
+
return active_sessions
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def save_manager(session_layouts: list[LayoutConfig], managers: list["ZellijLayoutGenerator"], session_name_prefix: str, session_id: Optional[str]) -> str:
|
|
99
|
+
"""Save the manager state to disk."""
|
|
100
|
+
if session_id is None:
|
|
101
|
+
import uuid
|
|
102
|
+
session_id = str(uuid.uuid4())[:8]
|
|
103
|
+
session_dir = TMP_SERIALIZATION_DIR / session_id
|
|
104
|
+
session_dir.mkdir(parents=True, exist_ok=True)
|
|
105
|
+
config_file = session_dir / "session_layouts.json"
|
|
106
|
+
text = json.dumps(session_layouts, indent=2, ensure_ascii=False)
|
|
107
|
+
config_file.write_text(text, encoding="utf-8")
|
|
108
|
+
metadata = {"session_name_prefix": session_name_prefix, "created_at": str(datetime.now()), "num_managers": len(managers), "sessions": [item["layoutName"] for item in session_layouts], "manager_type": "ZellijLocalManager"}
|
|
109
|
+
metadata_file = session_dir / "metadata.json"
|
|
110
|
+
text = json.dumps(metadata, indent=2, ensure_ascii=False)
|
|
111
|
+
metadata_file.write_text(text, encoding="utf-8")
|
|
112
|
+
managers_dir = session_dir / "managers"
|
|
113
|
+
managers_dir.mkdir(exist_ok=True)
|
|
114
|
+
for i, manager in enumerate(managers):
|
|
115
|
+
manager_data = {"session_name": manager.session_name, "layout_config": manager.layout_config, "layout_path": manager.layout_path}
|
|
116
|
+
manager_file = managers_dir / f"manager_{i}_{manager.session_name}.json"
|
|
117
|
+
text = json.dumps(manager_data, indent=2, ensure_ascii=False)
|
|
118
|
+
manager_file.write_text(text, encoding="utf-8")
|
|
119
|
+
logger.info(f"✅ Saved ZellijLocalManager session to: {session_dir}")
|
|
120
|
+
return session_id
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def load_manager(session_id: str):
|
|
124
|
+
"""Load a saved manager state from disk and return the data needed to reconstruct ZellijLocalManager."""
|
|
125
|
+
from machineconfig.cluster.sessions_managers.zellij_local import ZellijLayoutGenerator
|
|
126
|
+
|
|
127
|
+
session_dir = TMP_SERIALIZATION_DIR / session_id
|
|
128
|
+
if not session_dir.exists():
|
|
129
|
+
raise FileNotFoundError(f"Session directory not found: {session_dir}")
|
|
130
|
+
config_file = session_dir / "session_layouts.json"
|
|
131
|
+
if not config_file.exists():
|
|
132
|
+
raise FileNotFoundError(f"Configuration file not found: {config_file}")
|
|
133
|
+
text = config_file.read_text(encoding="utf-8")
|
|
134
|
+
session_layouts = json.loads(text)
|
|
135
|
+
managers = []
|
|
136
|
+
managers_dir = session_dir / "managers"
|
|
137
|
+
if managers_dir.exists():
|
|
138
|
+
manager_files = sorted(managers_dir.glob("manager_*.json"))
|
|
139
|
+
for manager_file in manager_files:
|
|
140
|
+
try:
|
|
141
|
+
text = manager_file.read_text(encoding="utf-8")
|
|
142
|
+
manager_data = json.loads(text)
|
|
143
|
+
manager = ZellijLayoutGenerator(layout_config=manager_data["layout_config"], session_name=manager_data["session_name"])
|
|
144
|
+
manager.layout_path = manager_data["layout_path"]
|
|
145
|
+
managers.append(manager)
|
|
146
|
+
except Exception as e:
|
|
147
|
+
logger.warning(f"Failed to load manager from {manager_file}: {e}")
|
|
148
|
+
logger.info(f"✅ Loaded ZellijLocalManager session from: {session_dir}")
|
|
149
|
+
return session_layouts, managers
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def kill_all_sessions(managers: list["ZellijLayoutGenerator"]) -> dict[str, StartResult]:
|
|
153
|
+
"""Kill all managed zellij sessions."""
|
|
154
|
+
results: dict[str, StartResult] = {}
|
|
155
|
+
for manager in managers:
|
|
156
|
+
try:
|
|
157
|
+
session_name = manager.session_name
|
|
158
|
+
cmd = f"zellij delete-session --force {session_name}"
|
|
159
|
+
logger.info(f"Killing session '{session_name}'")
|
|
160
|
+
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=10)
|
|
161
|
+
results[session_name] = {"success": result.returncode == 0, "message": "Session killed" if result.returncode == 0 else result.stderr}
|
|
162
|
+
except Exception as e:
|
|
163
|
+
key = getattr(manager, "session_name", None) or f"manager_{managers.index(manager)}"
|
|
164
|
+
results[key] = {"success": False, "error": str(e)}
|
|
165
|
+
return results
|
|
@@ -1,22 +1,9 @@
|
|
|
1
|
-
# """CI
|
|
2
|
-
# """
|
|
3
1
|
|
|
4
|
-
|
|
5
|
-
# import time
|
|
6
2
|
import platform
|
|
7
|
-
|
|
8
|
-
# from typing import Any
|
|
9
|
-
# from rich.console import Console
|
|
10
|
-
# from machineconfig.utils.utils2 import pprint
|
|
11
|
-
# # from rich.progress import track
|
|
12
|
-
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
13
|
-
# from machineconfig.utils.installer import get_installed_cli_apps
|
|
14
|
-
# from typing import Optional
|
|
15
|
-
# from datetime import datetime
|
|
16
|
-
# import csv
|
|
3
|
+
from machineconfig.utils.source_of_truth import CONFIG_ROOT
|
|
17
4
|
|
|
18
5
|
|
|
19
|
-
APP_SUMMARY_PATH =
|
|
6
|
+
APP_SUMMARY_PATH = CONFIG_ROOT.joinpath(f"profile/records/{platform.system().lower()}/apps_summary_report.csv")
|
|
20
7
|
# CLOUD: str = "gdw" # Read.ini(DEFAULTS_PATH)['general']['rclone_config_name']
|
|
21
8
|
# # my onedrive doesn't allow sharing.
|
|
22
9
|
|
|
@@ -234,7 +221,6 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
|
|
|
234
221
|
# # cli_installers = get_cli_py_installers()
|
|
235
222
|
# # else: raise NotImplementedError(f"Platform {platform.system().lower()} is not supported yet.")
|
|
236
223
|
|
|
237
|
-
# if name == "essentials":
|
|
238
224
|
# print(f"""
|
|
239
225
|
# {'=' * 150}
|
|
240
226
|
# 📥 DOWNLOAD | Downloading {len(self.data)} apps...
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import platform
|
|
4
|
+
from typing import Optional
|
|
5
|
+
|
|
6
|
+
from rich.console import Console
|
|
7
|
+
from rich.panel import Panel
|
|
8
|
+
from machineconfig.utils.installer_utils.installer_locator_utils import WINDOWS_INSTALL_PATH
|
|
9
|
+
|
|
10
|
+
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
11
|
+
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
12
|
+
|
|
13
|
+
installer_data_modified: InstallerData = {
|
|
14
|
+
"appName": "boxes",
|
|
15
|
+
"repoURL": "https://github.com/ascii-boxes/boxes",
|
|
16
|
+
"doc": "📦 ASCI draws boxes around text.",
|
|
17
|
+
"fileNamePattern": {
|
|
18
|
+
"amd64": {
|
|
19
|
+
"windows": "boxes-{version}-intel-win32.zip",
|
|
20
|
+
"linux": None,
|
|
21
|
+
"macos": None
|
|
22
|
+
},
|
|
23
|
+
"arm64": {
|
|
24
|
+
"linux": None,
|
|
25
|
+
"macos": None,
|
|
26
|
+
"windows": None
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
def main(installer_data: InstallerData, version: Optional[str] = None) -> None:
|
|
32
|
+
console = Console()
|
|
33
|
+
_ = installer_data
|
|
34
|
+
console.print(
|
|
35
|
+
Panel.fit(
|
|
36
|
+
"\n".join([f"🖥️ Platform: {platform.system()}", f"🔄 Version: {'latest' if version is None else version}"]),
|
|
37
|
+
title="📦 Boxes Installer",
|
|
38
|
+
border_style="blue",
|
|
39
|
+
)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
installer = Installer(installer_data=installer_data_modified)
|
|
43
|
+
downloaded, _version_to_be_installed = installer.binary_download(version=version)
|
|
44
|
+
decomp_path = downloaded.decompress()
|
|
45
|
+
from pathlib import Path
|
|
46
|
+
for item in decomp_path.rglob("*"):
|
|
47
|
+
if "boxes.exe" in item.name:
|
|
48
|
+
dest_exe = Path(WINDOWS_INSTALL_PATH) / "boxes.exe"
|
|
49
|
+
if dest_exe.exists():
|
|
50
|
+
dest_exe.unlink()
|
|
51
|
+
item.rename(dest_exe)
|
|
52
|
+
if "boxes.cfg" in item.name:
|
|
53
|
+
dest_cfg = Path(WINDOWS_INSTALL_PATH) / "boxes.cfg"
|
|
54
|
+
if dest_cfg.exists():
|
|
55
|
+
dest_cfg.unlink()
|
|
56
|
+
item.rename(dest_cfg)
|
|
57
|
+
console.print("📦 Boxes downloaded and decompressed.", style="bold green")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
if __name__ == "__main__":
|
|
61
|
+
pass
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
import platform
|
|
4
4
|
import subprocess
|
|
5
5
|
from typing import Optional
|
|
6
|
+
|
|
7
|
+
from rich.console import Console
|
|
8
|
+
from rich.panel import Panel
|
|
9
|
+
|
|
6
10
|
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
7
11
|
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
8
12
|
|
|
@@ -23,89 +27,101 @@ config_dict: InstallerData = {
|
|
|
23
27
|
"appName": "gh",
|
|
24
28
|
"repoURL": "https://github.com/cli/cli",
|
|
25
29
|
"doc": "GitHub CLI",
|
|
26
|
-
"fileNamePattern": {
|
|
27
|
-
"amd64": {
|
|
28
|
-
"windows": "gh_{version}_windows_amd64.msi",
|
|
29
|
-
"linux": "gh_{version}_linux_amd64.deb",
|
|
30
|
-
"macos": "gh_{version}_macOS_amd64.pkg",
|
|
31
|
-
},
|
|
32
|
-
"arm64": {
|
|
33
|
-
"windows": "gh_{version}_windows_arm64.msi",
|
|
34
|
-
"linux": "gh_{version}_linux_arm64.deb",
|
|
35
|
-
"macos": "gh_{version}_macOS_arm64.pkg",
|
|
36
|
-
},
|
|
37
|
-
},
|
|
30
|
+
"fileNamePattern": {"amd64": {"windows": "gh_{version}_windows_amd64.msi", "linux": "gh_{version}_linux_amd64.deb", "macos": "gh_{version}_macOS_amd64.pkg"}, "arm64": {"windows": "gh_{version}_windows_arm64.msi", "linux": "gh_{version}_linux_arm64.deb", "macos": "gh_{version}_macOS_arm64.pkg"}},
|
|
38
31
|
}
|
|
39
32
|
|
|
40
33
|
|
|
34
|
+
console = Console()
|
|
35
|
+
|
|
36
|
+
|
|
41
37
|
def main(version: Optional[str]):
|
|
42
|
-
print(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
""
|
|
38
|
+
console.print(
|
|
39
|
+
Panel.fit(
|
|
40
|
+
"\n".join(
|
|
41
|
+
[
|
|
42
|
+
"[bold magenta]GitHub CLI Installer[/bold magenta]",
|
|
43
|
+
f"💻 Platform: {platform.system()}",
|
|
44
|
+
f"🔄 Version: {version or 'latest'}",
|
|
45
|
+
]
|
|
46
|
+
),
|
|
47
|
+
title="🔱 GitHub CLI",
|
|
48
|
+
border_style="magenta",
|
|
49
|
+
padding=(1, 2),
|
|
50
|
+
)
|
|
51
|
+
)
|
|
49
52
|
|
|
50
53
|
_ = version
|
|
51
54
|
inst = Installer(installer_data=config_dict)
|
|
52
|
-
print(""
|
|
53
|
-
📦 INSTALLATION | Installing GitHub CLI base package...
|
|
54
|
-
""")
|
|
55
|
+
console.print("[bold cyan]📦 INSTALLATION | Installing GitHub CLI base package...[/bold cyan]")
|
|
55
56
|
inst.install(version=version)
|
|
56
57
|
|
|
57
|
-
print(
|
|
58
|
-
|
|
59
|
-
🤖 GITHUB COPILOT | Setting up GitHub Copilot CLI extension
|
|
60
|
-
|
|
61
|
-
""
|
|
58
|
+
console.print(
|
|
59
|
+
Panel.fit(
|
|
60
|
+
"🤖 GITHUB COPILOT | Setting up GitHub Copilot CLI extension",
|
|
61
|
+
title="Extension Setup",
|
|
62
|
+
border_style="cyan",
|
|
63
|
+
)
|
|
64
|
+
)
|
|
62
65
|
|
|
63
66
|
if platform.system() == "Windows":
|
|
64
|
-
print(
|
|
65
|
-
|
|
66
|
-
""
|
|
67
|
+
console.print(
|
|
68
|
+
Panel.fit(
|
|
69
|
+
"🪟 WINDOWS SETUP | Configuring GitHub CLI for Windows...",
|
|
70
|
+
border_style="blue",
|
|
71
|
+
title="Platform Setup",
|
|
72
|
+
)
|
|
73
|
+
)
|
|
67
74
|
program = "gh extension install github/gh-copilot"
|
|
68
75
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
69
76
|
system_name = "LINUX" if platform.system() == "Linux" else "MACOS"
|
|
70
|
-
print(
|
|
71
|
-
|
|
72
|
-
""
|
|
77
|
+
console.print(
|
|
78
|
+
Panel.fit(
|
|
79
|
+
f"🐧 {system_name} SETUP | Configuring GitHub CLI for {platform.system()}...",
|
|
80
|
+
border_style="blue",
|
|
81
|
+
title="Platform Setup",
|
|
82
|
+
)
|
|
83
|
+
)
|
|
73
84
|
program = """
|
|
74
85
|
gh extension install github/gh-copilot
|
|
75
86
|
"""
|
|
76
87
|
else:
|
|
77
88
|
error_msg = f"Unsupported platform: {platform.system()}"
|
|
78
|
-
print(
|
|
79
|
-
|
|
80
|
-
❌ ERROR | {error_msg}
|
|
81
|
-
|
|
82
|
-
""
|
|
89
|
+
console.print(
|
|
90
|
+
Panel.fit(
|
|
91
|
+
f"❌ ERROR | {error_msg}",
|
|
92
|
+
title="Unsupported Platform",
|
|
93
|
+
border_style="red",
|
|
94
|
+
)
|
|
95
|
+
)
|
|
83
96
|
raise NotImplementedError(error_msg)
|
|
84
97
|
|
|
85
98
|
program += """
|
|
86
99
|
gh auth login --with-token $HOME/dotfiles/creds/git/gh_token.txt
|
|
87
100
|
"""
|
|
88
|
-
print(""
|
|
89
|
-
🔐 AUTHENTICATION | Setting up GitHub authentication with token...
|
|
90
|
-
""")
|
|
101
|
+
console.print("[bold]🔐 AUTHENTICATION | Setting up GitHub authentication with token...[/bold]")
|
|
91
102
|
|
|
92
|
-
print(""
|
|
93
|
-
🔄 EXECUTING | Running GitHub Copilot extension installation and authentication...
|
|
94
|
-
""")
|
|
103
|
+
console.print("[bold]🔄 EXECUTING | Running GitHub Copilot extension installation and authentication...[/bold]")
|
|
95
104
|
try:
|
|
96
105
|
subprocess.run(program, shell=True, text=True, check=True)
|
|
97
|
-
print("✅ Command executed successfully")
|
|
106
|
+
console.print("[green]✅ Command executed successfully[/green]")
|
|
98
107
|
except subprocess.CalledProcessError as e:
|
|
99
|
-
print(f"❌ Command failed with exit code {e.returncode}")
|
|
108
|
+
console.print(f"❌ [red]Command failed with exit code {e.returncode}[/red]")
|
|
100
109
|
raise
|
|
101
110
|
|
|
102
|
-
print(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
""
|
|
111
|
+
console.print(
|
|
112
|
+
Panel.fit(
|
|
113
|
+
"\n".join(
|
|
114
|
+
[
|
|
115
|
+
"✅ SUCCESS | GitHub CLI installation completed",
|
|
116
|
+
"🚀 GitHub Copilot CLI extension installed",
|
|
117
|
+
"🔑 Authentication configured with token",
|
|
118
|
+
]
|
|
119
|
+
),
|
|
120
|
+
title="Installation Complete",
|
|
121
|
+
border_style="green",
|
|
122
|
+
padding=(1, 2),
|
|
123
|
+
)
|
|
124
|
+
)
|
|
109
125
|
|
|
110
126
|
|
|
111
127
|
if __name__ == "__main__":
|
|
@@ -2,38 +2,40 @@
|
|
|
2
2
|
Installers do not add runtime files to the machine, hence this script.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
6
|
-
from machineconfig.utils.installer_utils.
|
|
5
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
6
|
+
from machineconfig.utils.installer_utils.installer_locator_utils import WINDOWS_INSTALL_PATH
|
|
7
7
|
from typing import Optional
|
|
8
8
|
import platform
|
|
9
9
|
|
|
10
|
-
from machineconfig.utils.installer_utils.
|
|
10
|
+
from machineconfig.utils.installer_utils.installer_locator_utils import LINUX_INSTALL_PATH
|
|
11
11
|
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
12
12
|
from rich.console import Console
|
|
13
13
|
from rich.panel import Panel
|
|
14
14
|
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
LANGUAGES_SUPPORTED_GRAMMER = ["python.so", "nu.so", "bash.so", "lua.so", "powershell.so"]
|
|
17
18
|
config_dict: InstallerData = {
|
|
18
19
|
"appName": "hx",
|
|
19
20
|
"repoURL": "CMD",
|
|
20
21
|
"doc": "Helix is a post-modern modal text editor.",
|
|
21
22
|
"fileNamePattern": {
|
|
22
23
|
"amd64": {
|
|
23
|
-
"linux": "
|
|
24
|
-
"macos": "
|
|
25
|
-
"windows": "
|
|
24
|
+
"linux": "helix-{version}-x86_64-linux.tar.xz",
|
|
25
|
+
"macos": "helix-{version}-x86_64-macos.tar.xz",
|
|
26
|
+
"windows": "helix-{version}-x86_64-windows.zip",
|
|
26
27
|
},
|
|
27
28
|
"arm64": {
|
|
28
|
-
"linux": "
|
|
29
|
-
"macos": "
|
|
30
|
-
"windows": "
|
|
29
|
+
"linux": "helix-{version}-arm64-linux.tar.xz",
|
|
30
|
+
"macos": "helix-{version}-arm64-macos.tar.xz",
|
|
31
|
+
"windows": "helix-{version}-arm64-windows.zip",
|
|
31
32
|
},
|
|
32
33
|
},
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
|
|
36
|
-
def main(version: Optional[str], install_lib: bool =
|
|
37
|
+
def main(installer_data: InstallerData, version: Optional[str], install_lib: bool = True):
|
|
38
|
+
_ = installer_data
|
|
37
39
|
console = Console()
|
|
38
40
|
|
|
39
41
|
console.print(Panel(f"HELIX EDITOR INSTALLER 🧬\nPlatform: {platform.system()}\nVersion: {'latest' if version is None else version}", title="Installer", expand=False))
|
|
@@ -43,7 +45,7 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
43
45
|
inst = Installer(installer_data=config_dict_copy)
|
|
44
46
|
|
|
45
47
|
print("\n📥 [Step 1/5] Downloading Helix editor...")
|
|
46
|
-
downloaded, _version_to_be_installed = inst.
|
|
48
|
+
downloaded, _version_to_be_installed = inst.binary_download(version=version)
|
|
47
49
|
print(" ✨ Download complete.")
|
|
48
50
|
|
|
49
51
|
print("\n🔍 [Step 2/5] Locating executable and components...")
|
|
@@ -57,6 +59,7 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
57
59
|
raise FileNotFoundError(f"Could not find 'hx' executable in {downloaded.name}")
|
|
58
60
|
|
|
59
61
|
assert len(hx_file_search) == 1, f"Expected 1 'hx' executable, found {len(hx_file_search)}"
|
|
62
|
+
|
|
60
63
|
hx_file = hx_file_search[0]
|
|
61
64
|
contrib = hx_file.parent / "contrib"
|
|
62
65
|
runtime = contrib.parent / "runtime"
|
|
@@ -72,21 +75,50 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
72
75
|
print("\n🗑️ [Step 3/5] Cleaning up previous installation (if any)...")
|
|
73
76
|
runtime_path = PathExtended.home().joinpath(".config/helix/runtime")
|
|
74
77
|
contrib_path = PathExtended.home().joinpath(".config/helix/contrib")
|
|
75
|
-
runtime_path.delete(sure=True, verbose=False)
|
|
76
|
-
contrib_path.delete(sure=True, verbose=False)
|
|
77
|
-
print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
|
|
78
78
|
|
|
79
79
|
print("\n📦 [Step 4/5] Installing Helix components...")
|
|
80
|
-
target_config_dir = PathExtended("
|
|
80
|
+
target_config_dir = PathExtended.home().joinpath(".config/helix").expanduser()
|
|
81
81
|
target_config_dir.mkdir(parents=True, exist_ok=True)
|
|
82
82
|
|
|
83
83
|
if platform.system() in ["Linux", "Darwin"]:
|
|
84
84
|
target_bin_path = PathExtended(LINUX_INSTALL_PATH) if platform.system() == "Linux" else PathExtended("/usr/local/bin")
|
|
85
85
|
exe_name = "hx"
|
|
86
86
|
hx_file.move(folder=target_bin_path, overwrite=True)
|
|
87
|
+
|
|
88
|
+
# Always install contrib (regardless of install_lib flag) — treat it like the executable.
|
|
89
|
+
contrib_path.delete(sure=True, verbose=False)
|
|
90
|
+
contrib.move(folder=target_config_dir, overwrite=True)
|
|
91
|
+
|
|
92
|
+
# Install runtime only if install_lib is True. When copying runtime, copy all subfolders
|
|
93
|
+
# except 'grammars' (for which we only copy the specific python.so file if present).
|
|
87
94
|
if install_lib:
|
|
88
|
-
|
|
89
|
-
|
|
95
|
+
runtime_path.delete(sure=True, verbose=False)
|
|
96
|
+
print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
|
|
97
|
+
target_runtime = target_config_dir.joinpath("runtime")
|
|
98
|
+
target_runtime.mkdir(parents=True, exist_ok=True)
|
|
99
|
+
|
|
100
|
+
# iterate runtime children and copy selectively
|
|
101
|
+
for child in runtime.iterdir():
|
|
102
|
+
# skip non-existent or weird entries
|
|
103
|
+
if not child.exists():
|
|
104
|
+
continue
|
|
105
|
+
if child.name == "grammars":
|
|
106
|
+
# copy only the specific language files from runtime/grammars if they exist
|
|
107
|
+
for a_language in LANGUAGES_SUPPORTED_GRAMMER:
|
|
108
|
+
lang_file = child.joinpath(a_language)
|
|
109
|
+
if lang_file.exists() and lang_file.is_file():
|
|
110
|
+
dest = target_runtime.joinpath("grammars")
|
|
111
|
+
lang_file.copy(folder=dest, overwrite=True)
|
|
112
|
+
else:
|
|
113
|
+
# copy the whole child (file or directory) into target_runtime
|
|
114
|
+
# for directories, copy will create target_runtime/<child.name>
|
|
115
|
+
try:
|
|
116
|
+
child.copy(folder=target_runtime, overwrite=True)
|
|
117
|
+
except Exception:
|
|
118
|
+
# fallback: try copying contents if it's a directory
|
|
119
|
+
if child.is_dir():
|
|
120
|
+
for sub in child.iterdir():
|
|
121
|
+
sub.copy(folder=target_runtime.joinpath(child.name), overwrite=True)
|
|
90
122
|
system_name = "Linux" if platform.system() == "Linux" else "macOS"
|
|
91
123
|
console.print(
|
|
92
124
|
Panel(
|
|
@@ -102,9 +134,34 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
102
134
|
target_bin_path = PathExtended(WINDOWS_INSTALL_PATH)
|
|
103
135
|
exe_name = "hx.exe"
|
|
104
136
|
hx_file.move(folder=target_bin_path, overwrite=True)
|
|
137
|
+
|
|
138
|
+
# Always install contrib (regardless of install_lib flag)
|
|
139
|
+
contrib_path.delete(sure=True, verbose=False)
|
|
140
|
+
contrib.move(folder=target_config_dir, overwrite=True)
|
|
141
|
+
|
|
142
|
+
# Install runtime only if install_lib is True. Copy selectively as on POSIX.
|
|
105
143
|
if install_lib:
|
|
106
|
-
|
|
107
|
-
|
|
144
|
+
runtime_path.delete(sure=True, verbose=False)
|
|
145
|
+
print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
|
|
146
|
+
target_runtime = target_config_dir.joinpath("runtime")
|
|
147
|
+
target_runtime.mkdir(parents=True, exist_ok=True)
|
|
148
|
+
|
|
149
|
+
for child in runtime.iterdir():
|
|
150
|
+
if not child.exists():
|
|
151
|
+
continue
|
|
152
|
+
if child.name == "grammars":
|
|
153
|
+
for a_language in LANGUAGES_SUPPORTED_GRAMMER:
|
|
154
|
+
lang_file = child.joinpath(a_language)
|
|
155
|
+
if lang_file.exists() and lang_file.is_file():
|
|
156
|
+
dest = target_runtime.joinpath("grammars")
|
|
157
|
+
lang_file.copy(folder=dest, overwrite=True)
|
|
158
|
+
else:
|
|
159
|
+
try:
|
|
160
|
+
child.copy(folder=target_runtime, overwrite=True)
|
|
161
|
+
except Exception:
|
|
162
|
+
if child.is_dir():
|
|
163
|
+
for sub in child.iterdir():
|
|
164
|
+
sub.copy(folder=target_runtime.joinpath(child.name), overwrite=True)
|
|
108
165
|
console.print(
|
|
109
166
|
Panel(
|
|
110
167
|
f"""✅ SUCCESS | Helix editor installed successfully on Windows!
|
|
@@ -137,4 +194,4 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
137
194
|
|
|
138
195
|
|
|
139
196
|
if __name__ == "__main__":
|
|
140
|
-
|
|
197
|
+
pass
|