machineconfig 3.7__py3-none-any.whl → 7.69__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- 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 +7 -21
- machineconfig/jobs/installer/custom/boxes.py +61 -0
- machineconfig/jobs/installer/custom/gh.py +128 -0
- machineconfig/jobs/{python_custom_installers → installer/custom}/hx.py +84 -18
- machineconfig/jobs/installer/custom_dev/alacritty.py +86 -0
- machineconfig/jobs/installer/custom_dev/brave.py +82 -0
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py +59 -0
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +63 -0
- machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/cursor.py +7 -7
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
- machineconfig/jobs/installer/custom_dev/espanso.py +117 -0
- machineconfig/jobs/installer/custom_dev/goes.py +68 -0
- machineconfig/jobs/installer/custom_dev/lvim.py +89 -0
- machineconfig/jobs/installer/custom_dev/nerdfont.py +111 -0
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +149 -0
- machineconfig/jobs/installer/custom_dev/redis.py +88 -0
- machineconfig/jobs/installer/custom_dev/sysabc.py +145 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +92 -0
- machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/winget.py +2 -3
- machineconfig/jobs/installer/installer_data.json +3440 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/brave.sh +4 -14
- machineconfig/jobs/{python_custom_installers/scripts/linux/warp-cli.sh → installer/linux_scripts/cloudflare_warp_cli.sh} +5 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/docker.sh +6 -18
- machineconfig/jobs/installer/linux_scripts/docker_start.sh +37 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/edge.sh +3 -11
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
- machineconfig/jobs/{python_custom_installers/scripts/linux → 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/{python_custom_installers/scripts/linux → installer/linux_scripts}/redis.sh +6 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/vscode.sh +5 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → 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/__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/{mcinit.py → initai.py} +3 -38
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +114 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +88 -22
- machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -1
- machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
- machineconfig/scripts/python/ai/solutions/gemini/settings.json +1 -1
- 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 +129 -198
- machineconfig/scripts/python/define.py +31 -0
- machineconfig/scripts/python/devops.py +45 -131
- machineconfig/scripts/python/devops_navigator.py +6 -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/fire_jobs.py +166 -235
- machineconfig/scripts/python/ftpx.py +164 -100
- machineconfig/scripts/python/helpers/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/symantic_search.py +25 -0
- 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} +52 -39
- machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +13 -18
- machineconfig/scripts/python/helpers_cloud/cloud_sync.py +81 -0
- machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -1
- machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +32 -20
- 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/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -2
- machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -89
- 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_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 +620 -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/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 +187 -0
- machineconfig/scripts/python/mcfg_entry.py +63 -0
- machineconfig/scripts/python/msearch.py +40 -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 -51
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +67 -0
- machineconfig/scripts/python/sessions.py +167 -0
- machineconfig/scripts/python/terminal.py +127 -0
- machineconfig/scripts/python/utils.py +66 -0
- machineconfig/scripts/windows/mounts/Restore-ThunderbirdProfile.ps1 +92 -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/lfcd.ps1 +1 -1
- 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 +61 -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 +14 -1
- 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 +28 -203
- 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 +17 -0
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -189
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
- machineconfig/utils/accessories.py +52 -12
- 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/decompress.py +45 -0
- machineconfig/utils/files/read.py +95 -0
- machineconfig/utils/installer_utils/github_release_bulk.py +188 -0
- machineconfig/utils/installer_utils/install_from_url.py +180 -0
- machineconfig/utils/installer_utils/installer_class.py +239 -316
- machineconfig/utils/installer_utils/installer_cli.py +186 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +90 -5
- machineconfig/utils/installer_utils/installer_runner.py +191 -0
- machineconfig/utils/io.py +77 -24
- machineconfig/utils/links.py +309 -100
- machineconfig/utils/meta.py +255 -0
- machineconfig/utils/notifications.py +1 -1
- machineconfig/utils/options.py +19 -47
- machineconfig/utils/path_extended.py +111 -121
- 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 +28 -6
- machineconfig/utils/schemas/layouts/layout_types.py +34 -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.69.dist-info/METADATA +124 -0
- machineconfig-7.69.dist-info/RECORD +454 -0
- machineconfig-7.69.dist-info/entry_points.txt +15 -0
- machineconfig/cluster/templates/cli_click.py +0 -102
- machineconfig/cluster/templates/cli_gooey.py +0 -115
- machineconfig/cluster/templates/utils.py +0 -51
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -32
- 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 -48
- machineconfig/jobs/python/vscode/link_ve.py +0 -63
- machineconfig/jobs/python/vscode/select_interpreter.py +0 -87
- machineconfig/jobs/python/vscode/sync_code.py +0 -58
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +0 -63
- machineconfig/jobs/python_custom_installers/dev/aider.py +0 -37
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +0 -65
- machineconfig/jobs/python_custom_installers/dev/brave.py +0 -71
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +0 -50
- machineconfig/jobs/python_custom_installers/dev/code.py +0 -51
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -78
- machineconfig/jobs/python_custom_installers/dev/espanso.py +0 -90
- machineconfig/jobs/python_custom_installers/dev/goes.py +0 -55
- machineconfig/jobs/python_custom_installers/dev/lvim.py +0 -77
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +0 -68
- machineconfig/jobs/python_custom_installers/dev/redis.py +0 -65
- machineconfig/jobs/python_custom_installers/dev/reverse_proxy.md +0 -31
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +0 -70
- machineconfig/jobs/python_custom_installers/docker.py +0 -74
- machineconfig/jobs/python_custom_installers/gh.py +0 -97
- machineconfig/jobs/python_custom_installers/scripts/linux/docker_start.sh +0 -45
- machineconfig/jobs/python_custom_installers/scripts/linux/pgsql.sh +0 -49
- machineconfig/jobs/python_custom_installers/scripts/linux/timescaledb.sh +0 -85
- machineconfig/jobs/python_custom_installers/warp-cli.py +0 -71
- machineconfig/jobs/python_generic_installers/config.json +0 -603
- machineconfig/jobs/python_generic_installers/config.json.bak +0 -414
- machineconfig/jobs/python_generic_installers/dev/config.archive.json +0 -18
- machineconfig/jobs/python_generic_installers/dev/config.json +0 -825
- machineconfig/jobs/python_generic_installers/dev/config.json.bak +0 -565
- machineconfig/jobs/python_linux_installers/archive/config.json +0 -18
- machineconfig/jobs/python_linux_installers/archive/config.json.bak +0 -10
- machineconfig/jobs/python_linux_installers/config.json +0 -145
- machineconfig/jobs/python_linux_installers/config.json.bak +0 -110
- machineconfig/jobs/python_linux_installers/dev/config.json +0 -276
- machineconfig/jobs/python_linux_installers/dev/config.json.bak +0 -206
- machineconfig/jobs/python_windows_installers/archive/file.json +0 -11
- machineconfig/jobs/python_windows_installers/config.json +0 -82
- machineconfig/jobs/python_windows_installers/config.json.bak +0 -56
- machineconfig/jobs/python_windows_installers/dev/config.json +0 -4
- machineconfig/jobs/python_windows_installers/dev/config.json.bak +0 -3
- 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 -169
- 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/kill_process +0 -2
- machineconfig/scripts/linux/mcinit +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/archive/im2text.py +0 -34
- machineconfig/scripts/python/archive/tmate_conn.py +0 -41
- machineconfig/scripts/python/archive/tmate_start.py +0 -44
- machineconfig/scripts/python/cloud_repo_sync.py +0 -192
- machineconfig/scripts/python/cloud_sync.py +0 -85
- machineconfig/scripts/python/devops_devapps_install.py +0 -202
- machineconfig/scripts/python/devops_update_repos.py +0 -180
- machineconfig/scripts/python/dotfile.py +0 -52
- machineconfig/scripts/python/fire_agents.py +0 -176
- 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 -84
- machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -66
- 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 -160
- machineconfig/scripts/python/snapshot.py +0 -25
- machineconfig/scripts/python/start_terminals.py +0 -121
- machineconfig/scripts/python/wsl_windows_transfer.py +0 -72
- 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/kill_process.ps1 +0 -1
- machineconfig/scripts/windows/mcinit.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/setup_windows/wt_and_pwsh/install_nerd_fonts.py +0 -100
- machineconfig/utils/ai/generate_file_checklist.py +0 -68
- machineconfig/utils/installer.py +0 -255
- machineconfig-3.7.dist-info/METADATA +0 -165
- machineconfig-3.7.dist-info/RECORD +0 -432
- machineconfig-3.7.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/jobs/{python → installer}/__init__.py +0 -0
- machineconfig/jobs/{python_custom_installers → installer/custom_dev}/__init__.py +0 -0
- machineconfig/{setup_windows/wt_and_pwsh → jobs/installer/powershell_scripts}/install_fonts.ps1 +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_generic_installers → scripts/python/helpers_agents}/__init__.py +0 -0
- machineconfig/{jobs/python_linux_installers → scripts/python/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/python_linux_installers/dev → 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/python_windows_installers → scripts/python/helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.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/{jobs/python_windows_installers/archive → scripts/python/helpers_devops}/__init__.py +0 -0
- /machineconfig/{jobs/python_windows_installers/dev → scripts/python/helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/scripts/python/{helpers → helpers_fire_command}/__init__.py +0 -0
- /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_fire_command/fire_jobs_streamlit_helper.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/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_sessions/__init__.py} +0 -0
- /machineconfig/scripts/{windows/share_nfs.ps1 → python/nw/__init__.py} +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/{settings/yazi/keymap.toml → utils/files/ouch/__init__.py} +0 -0
- {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/WHEEL +0 -0
- {machineconfig-3.7.dist-info → machineconfig-7.69.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
|
|
|
@@ -193,7 +180,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
|
|
|
193
180
|
# else: return None
|
|
194
181
|
|
|
195
182
|
|
|
196
|
-
# class
|
|
183
|
+
# class precheckedPackages:
|
|
197
184
|
# def __init__(self):
|
|
198
185
|
# # Read CSV using standard library
|
|
199
186
|
# self.data = []
|
|
@@ -214,7 +201,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
|
|
|
214
201
|
# @staticmethod
|
|
215
202
|
# def install_cli_apps(app_url: str):
|
|
216
203
|
# try:
|
|
217
|
-
# exe =
|
|
204
|
+
# exe = precheckedPackages.download_google_links(app_url)
|
|
218
205
|
# except Exception as ex: # type: ignore
|
|
219
206
|
# print(f"❌ ERROR | Failed downloading {app_url}: {ex}")
|
|
220
207
|
# return None
|
|
@@ -225,7 +212,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
|
|
|
225
212
|
# exe.move(folder=PathExtended.home().joinpath("AppData/Local/Microsoft/WindowsApps"), overwrite=True)
|
|
226
213
|
# return True
|
|
227
214
|
|
|
228
|
-
# def download_safe_apps(self, name: str="
|
|
215
|
+
# def download_safe_apps(self, name: str="essentials"):
|
|
229
216
|
# # if platform.system().lower() == "windows":
|
|
230
217
|
# # from machineconfig.jobs.python.python_windows_installers_all import get_cli_py_installers
|
|
231
218
|
# # cli_installers = get_cli_py_installers()
|
|
@@ -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 == "AllEssentials":
|
|
238
224
|
# print(f"""
|
|
239
225
|
# {'=' * 150}
|
|
240
226
|
# 📥 DOWNLOAD | Downloading {len(self.data)} apps...
|
|
@@ -244,13 +230,13 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
|
|
|
244
230
|
# app_urls = [item['app_url'] for item in self.data]
|
|
245
231
|
# from concurrent.futures import ThreadPoolExecutor
|
|
246
232
|
# with ThreadPoolExecutor(max_workers=20) as executor:
|
|
247
|
-
# _res = list(executor.map(
|
|
233
|
+
# _res = list(executor.map(precheckedPackages.install_cli_apps, app_urls))
|
|
248
234
|
# else:
|
|
249
235
|
# app_items = [item for item in self.data if item['app_name'] == name]
|
|
250
236
|
# if not app_items:
|
|
251
237
|
# raise ValueError(f"App '{name}' not found in data")
|
|
252
238
|
# app_url = app_items[0]['app_url']
|
|
253
|
-
# _res =
|
|
239
|
+
# _res = precheckedPackages.install_cli_apps(app_url=app_url)
|
|
254
240
|
|
|
255
241
|
# # print("\n" * 3)
|
|
256
242
|
# # for item_flag, item_name in zip(res, self.df["app_name"]):
|
|
@@ -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
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"""gh-cli installer"""
|
|
2
|
+
|
|
3
|
+
import platform
|
|
4
|
+
import subprocess
|
|
5
|
+
from typing import Optional
|
|
6
|
+
|
|
7
|
+
from rich.console import Console
|
|
8
|
+
from rich.panel import Panel
|
|
9
|
+
|
|
10
|
+
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
11
|
+
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
12
|
+
|
|
13
|
+
r"""
|
|
14
|
+
https://github.com/cli/cli
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# as per https://docs.github.com/en/copilot/github-copilot-in-the-cli/using-github-copilot-in-the-cli
|
|
18
|
+
# gh auth login
|
|
19
|
+
# gh extension install github/gh-copilot
|
|
20
|
+
|
|
21
|
+
# & 'C:\Program Files\GitHub CLI\gh.exe' extension install github/gh-copilot
|
|
22
|
+
# & 'C:\Program Files\GitHub CLI\gh.exe' extension install auth login
|
|
23
|
+
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
config_dict: InstallerData = {
|
|
27
|
+
"appName": "gh",
|
|
28
|
+
"repoURL": "https://github.com/cli/cli",
|
|
29
|
+
"doc": "GitHub CLI",
|
|
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"}},
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
console = Console()
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def main(version: Optional[str]):
|
|
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
|
+
)
|
|
52
|
+
|
|
53
|
+
_ = version
|
|
54
|
+
inst = Installer(installer_data=config_dict)
|
|
55
|
+
console.print("[bold cyan]📦 INSTALLATION | Installing GitHub CLI base package...[/bold cyan]")
|
|
56
|
+
inst.install(version=version)
|
|
57
|
+
|
|
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
|
+
)
|
|
65
|
+
|
|
66
|
+
if platform.system() == "Windows":
|
|
67
|
+
console.print(
|
|
68
|
+
Panel.fit(
|
|
69
|
+
"🪟 WINDOWS SETUP | Configuring GitHub CLI for Windows...",
|
|
70
|
+
border_style="blue",
|
|
71
|
+
title="Platform Setup",
|
|
72
|
+
)
|
|
73
|
+
)
|
|
74
|
+
program = "gh extension install github/gh-copilot"
|
|
75
|
+
elif platform.system() in ["Linux", "Darwin"]:
|
|
76
|
+
system_name = "LINUX" if platform.system() == "Linux" else "MACOS"
|
|
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
|
+
)
|
|
84
|
+
program = """
|
|
85
|
+
gh extension install github/gh-copilot
|
|
86
|
+
"""
|
|
87
|
+
else:
|
|
88
|
+
error_msg = f"Unsupported platform: {platform.system()}"
|
|
89
|
+
console.print(
|
|
90
|
+
Panel.fit(
|
|
91
|
+
f"❌ ERROR | {error_msg}",
|
|
92
|
+
title="Unsupported Platform",
|
|
93
|
+
border_style="red",
|
|
94
|
+
)
|
|
95
|
+
)
|
|
96
|
+
raise NotImplementedError(error_msg)
|
|
97
|
+
|
|
98
|
+
program += """
|
|
99
|
+
gh auth login --with-token $HOME/dotfiles/creds/git/gh_token.txt
|
|
100
|
+
"""
|
|
101
|
+
console.print("[bold]🔐 AUTHENTICATION | Setting up GitHub authentication with token...[/bold]")
|
|
102
|
+
|
|
103
|
+
console.print("[bold]🔄 EXECUTING | Running GitHub Copilot extension installation and authentication...[/bold]")
|
|
104
|
+
try:
|
|
105
|
+
subprocess.run(program, shell=True, text=True, check=True)
|
|
106
|
+
console.print("[green]✅ Command executed successfully[/green]")
|
|
107
|
+
except subprocess.CalledProcessError as e:
|
|
108
|
+
console.print(f"❌ [red]Command failed with exit code {e.returncode}[/red]")
|
|
109
|
+
raise
|
|
110
|
+
|
|
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
|
+
)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
if __name__ == "__main__":
|
|
128
|
+
pass
|
|
@@ -2,29 +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
|
-
"repoURL": "
|
|
20
|
+
"repoURL": "CMD",
|
|
20
21
|
"doc": "Helix is a post-modern modal text editor.",
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
"fileNamePattern": {
|
|
23
|
+
"amd64": {
|
|
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",
|
|
27
|
+
},
|
|
28
|
+
"arm64": {
|
|
29
|
+
"linux": "helix-{version}-arm64-linux.tar.xz",
|
|
30
|
+
"macos": "helix-{version}-arm64-macos.tar.xz",
|
|
31
|
+
"windows": "helix-{version}-arm64-windows.zip",
|
|
32
|
+
},
|
|
33
|
+
},
|
|
24
34
|
}
|
|
25
35
|
|
|
26
36
|
|
|
27
|
-
def main(version: Optional[str], install_lib: bool =
|
|
37
|
+
def main(installer_data: InstallerData, version: Optional[str], install_lib: bool = True):
|
|
38
|
+
_ = installer_data
|
|
28
39
|
console = Console()
|
|
29
40
|
|
|
30
41
|
console.print(Panel(f"HELIX EDITOR INSTALLER 🧬\nPlatform: {platform.system()}\nVersion: {'latest' if version is None else version}", title="Installer", expand=False))
|
|
@@ -34,7 +45,7 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
34
45
|
inst = Installer(installer_data=config_dict_copy)
|
|
35
46
|
|
|
36
47
|
print("\n📥 [Step 1/5] Downloading Helix editor...")
|
|
37
|
-
downloaded, _version_to_be_installed = inst.
|
|
48
|
+
downloaded, _version_to_be_installed = inst.binary_download(version=version)
|
|
38
49
|
print(" ✨ Download complete.")
|
|
39
50
|
|
|
40
51
|
print("\n🔍 [Step 2/5] Locating executable and components...")
|
|
@@ -48,6 +59,7 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
48
59
|
raise FileNotFoundError(f"Could not find 'hx' executable in {downloaded.name}")
|
|
49
60
|
|
|
50
61
|
assert len(hx_file_search) == 1, f"Expected 1 'hx' executable, found {len(hx_file_search)}"
|
|
62
|
+
|
|
51
63
|
hx_file = hx_file_search[0]
|
|
52
64
|
contrib = hx_file.parent / "contrib"
|
|
53
65
|
runtime = contrib.parent / "runtime"
|
|
@@ -63,21 +75,50 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
63
75
|
print("\n🗑️ [Step 3/5] Cleaning up previous installation (if any)...")
|
|
64
76
|
runtime_path = PathExtended.home().joinpath(".config/helix/runtime")
|
|
65
77
|
contrib_path = PathExtended.home().joinpath(".config/helix/contrib")
|
|
66
|
-
runtime_path.delete(sure=True, verbose=False)
|
|
67
|
-
contrib_path.delete(sure=True, verbose=False)
|
|
68
|
-
print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
|
|
69
78
|
|
|
70
79
|
print("\n📦 [Step 4/5] Installing Helix components...")
|
|
71
|
-
target_config_dir = PathExtended("
|
|
80
|
+
target_config_dir = PathExtended.home().joinpath(".config/helix").expanduser()
|
|
72
81
|
target_config_dir.mkdir(parents=True, exist_ok=True)
|
|
73
82
|
|
|
74
83
|
if platform.system() in ["Linux", "Darwin"]:
|
|
75
84
|
target_bin_path = PathExtended(LINUX_INSTALL_PATH) if platform.system() == "Linux" else PathExtended("/usr/local/bin")
|
|
76
85
|
exe_name = "hx"
|
|
77
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).
|
|
78
94
|
if install_lib:
|
|
79
|
-
|
|
80
|
-
|
|
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)
|
|
81
122
|
system_name = "Linux" if platform.system() == "Linux" else "macOS"
|
|
82
123
|
console.print(
|
|
83
124
|
Panel(
|
|
@@ -93,9 +134,34 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
93
134
|
target_bin_path = PathExtended(WINDOWS_INSTALL_PATH)
|
|
94
135
|
exe_name = "hx.exe"
|
|
95
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.
|
|
96
143
|
if install_lib:
|
|
97
|
-
|
|
98
|
-
|
|
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)
|
|
99
165
|
console.print(
|
|
100
166
|
Panel(
|
|
101
167
|
f"""✅ SUCCESS | Helix editor installed successfully on Windows!
|
|
@@ -128,4 +194,4 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
128
194
|
|
|
129
195
|
|
|
130
196
|
if __name__ == "__main__":
|
|
131
|
-
|
|
197
|
+
pass
|