machineconfig 6.82__py3-none-any.whl → 8.51__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.
- machineconfig/cluster/remote/cloud_manager.py +1 -1
- machineconfig/cluster/remote/run_cluster.py +1 -1
- machineconfig/cluster/remote/run_remote.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +29 -15
- machineconfig/cluster/sessions_managers/wt_local.py +17 -222
- machineconfig/cluster/sessions_managers/wt_local_manager.py +56 -194
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +42 -198
- 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_reporting.py +76 -0
- machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +1 -1
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +4 -2
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +2 -2
- machineconfig/jobs/installer/checks/check_installations.py +133 -0
- machineconfig/jobs/installer/checks/install_utils.py +132 -0
- machineconfig/jobs/installer/checks/report_utils.py +39 -0
- machineconfig/jobs/installer/checks/vt_utils.py +89 -0
- machineconfig/jobs/installer/installer_data.json +1500 -310
- machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
- machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +62 -91
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/jobs/installer/{custom → python_scripts}/boxes.py +2 -3
- machineconfig/jobs/installer/{custom_dev → python_scripts}/brave.py +5 -3
- machineconfig/jobs/installer/python_scripts/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/code.py +14 -9
- machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
- machineconfig/jobs/installer/python_scripts/hx.py +214 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +32 -26
- machineconfig/jobs/installer/python_scripts/sysabc.py +145 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/wezterm.py +2 -19
- machineconfig/jobs/installer/{custom_dev → python_scripts}/winget.py +10 -14
- machineconfig/jobs/installer/python_scripts/yazi.py +139 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
- machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
- machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +13 -0
- machineconfig/jobs/scripts/powershell_scripts/obs.ps1 +4 -0
- machineconfig/jobs/scripts_dynamic/a.py +428 -0
- machineconfig/logger.py +1 -2
- machineconfig/profile/create_helper.py +56 -18
- machineconfig/profile/create_links.py +79 -21
- machineconfig/profile/create_links_export.py +87 -36
- machineconfig/profile/create_shell_profile.py +92 -127
- machineconfig/profile/mapper_data.toml +45 -0
- machineconfig/profile/mapper_dotfiles.toml +249 -0
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/wrap_mcfg +46 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +85 -165
- machineconfig/scripts/python/ai/initai.py +4 -2
- machineconfig/scripts/python/ai/scripts/__init__.py +1 -0
- machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
- machineconfig/scripts/python/ai/{command_runner → scripts}/command_runner.sh +1 -1
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +2 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +8 -6
- machineconfig/scripts/python/ai/solutions/claude/claude.py +1 -1
- machineconfig/scripts/python/ai/solutions/cline/cline.py +1 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
- machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +6 -6
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +33 -0
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
- machineconfig/scripts/python/ai/solutions/crush/crush.py +1 -1
- machineconfig/scripts/python/ai/solutions/cursor/cursors.py +1 -1
- machineconfig/scripts/python/ai/solutions/gemini/gemini.py +1 -1
- machineconfig/scripts/python/ai/solutions/gemini/settings.json +3 -0
- machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
- machineconfig/scripts/python/ai/{solutions → utils}/generic.py +2 -15
- machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +13 -5
- machineconfig/scripts/python/cloud.py +58 -11
- machineconfig/scripts/python/croshell.py +10 -162
- machineconfig/scripts/python/devops.py +73 -36
- machineconfig/scripts/python/devops_navigator.py +16 -6
- machineconfig/scripts/python/fire_jobs.py +8 -222
- machineconfig/scripts/python/ftpx.py +7 -200
- machineconfig/scripts/python/graph/cli_graph.json +8743 -0
- machineconfig/scripts/python/{env_manager → helper_env}/path_manager_tui.py +2 -2
- machineconfig/scripts/python/helpers/helper_env/env_manager_tui.py +204 -0
- machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_launch.py +38 -16
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_helper_types.py +11 -14
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +1 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +10 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/gemini/settings.json +12 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/privacy.py +109 -0
- machineconfig/scripts/python/helpers/helpers_agents/templates/prompt.txt +10 -0
- machineconfig/scripts/python/helpers/helpers_agents/templates/template.sh +34 -0
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_copy.py +32 -25
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_mount.py +29 -22
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_sync.py +9 -8
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers2.py +1 -1
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/crosh.py +3 -3
- machineconfig/scripts/python/helpers/helpers_croshell/croshell_impl.py +225 -0
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/scheduler.py +4 -4
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/start_slidev.py +12 -12
- machineconfig/scripts/python/helpers/helpers_devops/backup_config.py +149 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +262 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_config.py +98 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +274 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_data.py +67 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_nw.py +201 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +274 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_self.py +197 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_share_file.py +151 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_share_server.py +125 -0
- machineconfig/scripts/python/{helpers_devops/cli_terminal.py → helpers/helpers_devops/cli_share_terminal.py} +26 -22
- machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +167 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_status.py +17 -23
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_update_repos.py +1 -1
- machineconfig/scripts/python/{interactive.py → helpers/helpers_devops/interactive.py} +78 -71
- machineconfig/scripts/python/helpers/helpers_devops/run_script.py +197 -0
- machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +41 -0
- machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +48 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_wezterm_theme.py +4 -4
- machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers/helpers_fire_command/file_wrangler.py} +57 -20
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_args_helper.py +1 -0
- machineconfig/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +233 -0
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_route_helper.py +26 -16
- machineconfig/scripts/python/helpers/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +248 -0
- machineconfig/scripts/{linux → python/helpers/helpers_msearch/scripts_linux}/fzfg +6 -5
- machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
- machineconfig/scripts/python/helpers/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
- machineconfig/scripts/python/helpers/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/helpers/helpers_navigator/cli_graph_loader.py +234 -0
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/command_builder.py +61 -13
- machineconfig/scripts/python/helpers/helpers_navigator/command_detail.py +153 -0
- machineconfig/scripts/python/helpers/helpers_navigator/command_tree.py +45 -0
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/data_models.py +18 -11
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/main_app.py +5 -5
- machineconfig/scripts/python/helpers/helpers_network/address.py +174 -0
- machineconfig/scripts/python/helpers/helpers_network/address_switch.py +78 -0
- machineconfig/scripts/python/helpers/helpers_network/ftpx_impl.py +276 -0
- machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nfs.py +2 -2
- machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_ssh.py +3 -3
- machineconfig/scripts/python/helpers/helpers_network/ssh_add_identity.py +73 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_add_ssh_key.py +175 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_debug_linux.py +319 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_debug_windows.py +275 -0
- machineconfig/scripts/python/{nw → helpers/helpers_network}/wifi_conn.py +1 -53
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action.py +3 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action_helper.py +3 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/clone.py +0 -1
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/cloud_repo_sync.py +159 -48
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/grource.py +4 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/record.py +33 -12
- machineconfig/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +160 -0
- machineconfig/scripts/python/{helpers_repos/count_lines.py → helpers/helpers_repos/repo_analyzer_2.py} +156 -191
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/update.py +0 -6
- machineconfig/scripts/python/helpers/helpers_search/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/helpers_search/qr_code.py +166 -0
- machineconfig/scripts/python/helpers/helpers_search/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -0
- machineconfig/scripts/python/helpers/helpers_search/symantic_search.py +25 -0
- machineconfig/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
- machineconfig/scripts/python/helpers/helpers_sessions/sessions_impl.py +186 -0
- machineconfig/scripts/python/{helpers_sessions → helpers/helpers_sessions}/sessions_multiprocess.py +20 -14
- machineconfig/scripts/python/helpers/helpers_terminal/__init__.py +0 -0
- machineconfig/scripts/python/helpers/helpers_terminal/terminal_impl.py +96 -0
- machineconfig/scripts/python/helpers/helpers_utils/download.py +150 -0
- machineconfig/scripts/python/helpers/helpers_utils/pdf.py +96 -0
- machineconfig/scripts/python/helpers/helpers_utils/python.py +210 -0
- machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
- machineconfig/scripts/python/mcfg_entry.py +143 -0
- machineconfig/scripts/python/msearch.py +26 -0
- machineconfig/scripts/python/sessions.py +69 -135
- machineconfig/scripts/python/terminal.py +58 -0
- machineconfig/scripts/python/utils.py +115 -38
- machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
- machineconfig/settings/atuin/config.toml +294 -0
- machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
- 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 +3 -2
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +14 -16
- machineconfig/settings/linters/.ruff.toml +2 -1
- machineconfig/settings/marimo/marimo.toml +1 -1
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
- machineconfig/settings/shells/bash/init.sh +47 -12
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
- machineconfig/settings/shells/nushell/config.nu +25 -33
- machineconfig/settings/shells/nushell/env.nu +21 -8
- machineconfig/settings/shells/nushell/init.nu +138 -0
- machineconfig/settings/shells/pwsh/init.ps1 +111 -17
- machineconfig/settings/shells/pwsh/search_pwsh_history.ps1 +99 -0
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +6 -1
- machineconfig/settings/shells/wt/settings.json +27 -18
- machineconfig/settings/shells/zsh/init.sh +42 -23
- machineconfig/settings/television/cable_unix/alias.toml +8 -0
- machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
- machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
- machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
- machineconfig/settings/television/cable_unix/channels.toml +19 -0
- machineconfig/settings/television/cable_unix/dirs.toml +13 -0
- machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
- machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
- machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_unix/env.toml +17 -0
- machineconfig/settings/television/cable_unix/files.toml +11 -0
- machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
- machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
- machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
- machineconfig/settings/television/cable_unix/git-log.toml +12 -0
- machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
- machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
- machineconfig/settings/television/cable_unix/guix.toml +20 -0
- machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
- machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
- machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
- machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
- machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
- machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
- machineconfig/settings/television/cable_unix/procs.toml +20 -0
- machineconfig/settings/television/cable_unix/text.toml +17 -0
- machineconfig/settings/television/cable_unix/tldr.toml +18 -0
- machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
- machineconfig/settings/television/cable_windows/alias.toml +7 -0
- machineconfig/settings/television/cable_windows/dirs.toml +13 -0
- machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
- machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_windows/env.toml +17 -0
- machineconfig/settings/television/cable_windows/files.toml +14 -0
- machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
- machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
- machineconfig/settings/television/cable_windows/git-log.toml +11 -0
- machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
- machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
- machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
- machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
- machineconfig/settings/television/cable_windows/text.toml +17 -0
- machineconfig/settings/tv/config.toml +234 -0
- machineconfig/settings/tv/themes/catppuccin-mocha-sky.toml +22 -0
- machineconfig/settings/wsl/.wslconfig +5 -30
- machineconfig/settings/wt/__init__.py +0 -0
- machineconfig/settings/yazi/init.lua +61 -0
- machineconfig/settings/yazi/keymap_linux.toml +94 -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/theme.toml +4 -0
- machineconfig/settings/yazi/yazi_linux.toml +94 -0
- machineconfig/settings/yazi/yazi_windows.toml +58 -0
- machineconfig/settings/zellij/layouts/st.kdl +40 -9
- machineconfig/settings/zellij/layouts/st2.kdl +1 -1
- machineconfig/setup_linux/__init__.py +2 -2
- machineconfig/setup_linux/apps_desktop.sh +8 -27
- machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -12
- machineconfig/setup_linux/web_shortcuts/live_from_github.sh +34 -0
- machineconfig/setup_mac/__init__.py +1 -4
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_windows/__init__.py +2 -5
- machineconfig/setup_windows/uv.ps1 +8 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -12
- machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +31 -0
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/type_hinting/sql/__init__.py +1 -0
- machineconfig/type_hinting/sql/base.py +216 -0
- machineconfig/type_hinting/sql/core_schema.py +64 -0
- machineconfig/type_hinting/sql/core_schema_typeddict.py +41 -0
- machineconfig/type_hinting/sql/typeddict_codegen.py +222 -0
- machineconfig/type_hinting/typedict/__init__.py +1 -0
- machineconfig/type_hinting/typedict/ast_utils.py +130 -0
- machineconfig/type_hinting/typedict/generator_helpers.py +319 -0
- machineconfig/type_hinting/typedict/generators.py +231 -0
- machineconfig/type_hinting/typedict/polars_schema.py +24 -0
- machineconfig/type_hinting/typedict/polars_schema_typeddict.py +63 -0
- machineconfig/utils/accessories.py +31 -4
- machineconfig/utils/code.py +163 -51
- machineconfig/utils/files/ascii_art.py +11 -15
- machineconfig/utils/files/headers.py +6 -7
- machineconfig/utils/files/read.py +8 -1
- machineconfig/utils/installer_utils/github_release_bulk.py +95 -138
- machineconfig/utils/installer_utils/github_release_scraper.py +99 -0
- machineconfig/utils/installer_utils/install_from_url.py +183 -0
- machineconfig/utils/installer_utils/installer_class.py +53 -102
- machineconfig/utils/installer_utils/installer_cli.py +161 -0
- machineconfig/utils/installer_utils/installer_helper.py +129 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +42 -91
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +20 -65
- machineconfig/utils/io.py +94 -9
- machineconfig/utils/links.py +56 -38
- machineconfig/utils/meta.py +38 -21
- machineconfig/utils/options.py +81 -23
- machineconfig/utils/options_utils/__init__.py +0 -0
- machineconfig/utils/options_utils/options_tv_linux.py +211 -0
- machineconfig/utils/options_utils/options_tv_windows.py +88 -0
- machineconfig/utils/options_utils/tv_options.py +37 -0
- machineconfig/utils/path_extended.py +52 -102
- machineconfig/utils/path_helper.py +76 -23
- machineconfig/utils/procs.py +1 -1
- machineconfig/utils/scheduler.py +26 -53
- machineconfig/utils/scheduling.py +0 -2
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
- machineconfig/utils/schemas/layouts/layout_types.py +1 -1
- machineconfig/utils/source_of_truth.py +6 -1
- machineconfig/utils/ssh.py +216 -419
- machineconfig/utils/ssh_utils/abc.py +5 -0
- machineconfig/utils/ssh_utils/copy_from_here.py +116 -0
- machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
- machineconfig/utils/ssh_utils/utils.py +158 -0
- machineconfig/utils/ssh_utils/wsl.py +147 -0
- machineconfig/utils/ssh_utils/wsl_helper.py +217 -0
- machineconfig/utils/terminal.py +1 -0
- machineconfig/utils/upgrade_packages.py +107 -35
- machineconfig/utils/ve.py +12 -4
- machineconfig-8.51.dist-info/METADATA +140 -0
- machineconfig-8.51.dist-info/RECORD +543 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/entry_points.txt +4 -1
- machineconfig/jobs/installer/check_installations.py +0 -248
- machineconfig/jobs/installer/custom/hx.py +0 -140
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
- machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
- machineconfig/jobs/installer/powershell_scripts/openssh-server_add_key.ps1 +0 -7
- machineconfig/jobs/installer/powershell_scripts/openssh-server_copy-ssh-id.ps1 +0 -14
- machineconfig/profile/backup.toml +0 -49
- machineconfig/profile/mapper.toml +0 -256
- machineconfig/scripts/linux/fzf2g +0 -21
- machineconfig/scripts/linux/fzfag +0 -17
- machineconfig/scripts/linux/fzffg +0 -25
- machineconfig/scripts/linux/fzfrga +0 -21
- machineconfig/scripts/linux/mcfgs +0 -38
- machineconfig/scripts/linux/other/share_smb +0 -1
- machineconfig/scripts/linux/other/switch_ip +0 -20
- machineconfig/scripts/linux/skrg +0 -4
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
- machineconfig/scripts/python/helpers_devops/cli_config.py +0 -120
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -77
- machineconfig/scripts/python/helpers_devops/cli_data.py +0 -25
- machineconfig/scripts/python/helpers_devops/cli_nw.py +0 -73
- machineconfig/scripts/python/helpers_devops/cli_repos.py +0 -181
- machineconfig/scripts/python/helpers_devops/cli_self.py +0 -122
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +0 -104
- machineconfig/scripts/python/helpers_devops/cli_utils.py +0 -221
- machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +0 -80
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +0 -3
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -37
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -44
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -43
- machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
- machineconfig/scripts/python/helpers_fire/template.sh +0 -15
- machineconfig/scripts/python/helpers_navigator/__init__.py +0 -20
- machineconfig/scripts/python/helpers_navigator/command_detail.py +0 -44
- machineconfig/scripts/python/helpers_navigator/command_tree.py +0 -588
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +0 -17
- machineconfig/scripts/python/helpers_repos/entrypoint.py +0 -76
- machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
- machineconfig/scripts/python/mcfg.py +0 -48
- machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
- machineconfig/scripts/python/nw/devops_add_identity.py +0 -82
- machineconfig/scripts/python/nw/devops_add_ssh_key.py +0 -134
- machineconfig/scripts/python/nw/ssh_debug_linux.py +0 -391
- machineconfig/scripts/python/nw/ssh_debug_windows.py +0 -338
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
- machineconfig/scripts/windows/fzfb.ps1 +0 -3
- machineconfig/scripts/windows/fzfg.ps1 +0 -2
- machineconfig/scripts/windows/fzfrga.bat +0 -20
- machineconfig/scripts/windows/mcfgs.ps1 +0 -17
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -13
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
- machineconfig/settings/lf/windows/tst.ps1 +0 -1
- machineconfig/settings/yazi/yazi.toml +0 -4
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_linux/others/cli_installation.sh +0 -137
- machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -30
- machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
- machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
- machineconfig/setup_mac/apps.sh +0 -73
- machineconfig/setup_mac/ssh/openssh_setup.sh +0 -114
- machineconfig/setup_windows/apps.ps1 +0 -62
- machineconfig/setup_windows/others/obs.ps1 +0 -4
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
- machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
- machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
- machineconfig/utils/installer_utils/installer.py +0 -225
- machineconfig/utils/tst.py +0 -20
- machineconfig-6.82.dist-info/METADATA +0 -82
- machineconfig-6.82.dist-info/RECORD +0 -441
- machineconfig/jobs/installer/{custom_dev → checks}/__init__.py +0 -0
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
- machineconfig/{scripts/python/helpers_cloud → jobs/installer/python_scripts}/__init__.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/alacritty.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/bypass_paywall.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/cursor.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/espanso.py +0 -0
- machineconfig/jobs/installer/{custom → python_scripts}/gh.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/goes.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/lvim.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/redis.py +0 -0
- machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/android.sh +0 -0
- machineconfig/jobs/{installer/linux_scripts → scripts/bash_scripts}/lid.sh +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_drive +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nw_drive +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_smb +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_cloud.sh +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_nfs +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/start_docker +0 -0
- machineconfig/{scripts → jobs/scripts/powershell_scripts}/Restore-ThunderbirdProfile.ps1 +0 -0
- machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/docker.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nfs.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nw.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_smb.ps1 +0 -0
- machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/power_options.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_cloud.cmd +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_smb.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/unlock_bitlocker.ps1 +0 -0
- machineconfig/scripts/python/{helpers_croshell → ai/utils}/__init__.py +0 -0
- machineconfig/scripts/python/ai/{solutions/_shared.py → utils/shared.py} +0 -0
- machineconfig/scripts/python/{helpers_devops → graph}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_devops/themes → helpers}/__init__.py +0 -0
- machineconfig/scripts/python/{env_manager → helpers/helper_env}/__init__.py +0 -0
- machineconfig/scripts/python/{env_manager → helpers/helper_env}/path_manager_backend.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_search.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_load_balancer.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents/templates}/template.ps1 +0 -0
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_cloud}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers5.py +0 -0
- /machineconfig/scripts/python/{helpers_sessions → helpers/helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/pomodoro.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer_template.py +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_devops}/__init__.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → scripts/python/helpers/helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
- /machineconfig/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_fire_command/__init__.py} +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/cloud_manager.py +0 -0
- /machineconfig/scripts/python/{helpers_fire_command/fire_jobs_streamlit_helper.py → helpers/helpers_fire_command/f.py} +0 -0
- /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
- /machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/search_bar.py +0 -0
- /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers/helpers_network/__init__.py} +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nw_drive.py +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_network}/onetimeshare.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/sync.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/WHEEL +0 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Installers do not add runtime files to the machine, hence this script.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
6
|
+
from machineconfig.utils.installer_utils.installer_locator_utils import WINDOWS_INSTALL_PATH
|
|
7
|
+
from typing import Optional
|
|
8
|
+
import platform
|
|
9
|
+
|
|
10
|
+
from machineconfig.utils.installer_utils.installer_locator_utils import LINUX_INSTALL_PATH
|
|
11
|
+
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
12
|
+
from rich.console import Console
|
|
13
|
+
from rich.panel import Panel
|
|
14
|
+
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
LANGUAGES_SUPPORTED = ["python", "nu", "bash", "lua", "powershell", "json", "json5", "toml", "ini", "yaml", "markdown", "markdoc", "markdown_inline"]
|
|
18
|
+
config_dict: InstallerData = {
|
|
19
|
+
"appName": "hx",
|
|
20
|
+
"repoURL": "CMD",
|
|
21
|
+
"doc": "Helix is a post-modern modal text editor.",
|
|
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
|
+
},
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def main(installer_data: InstallerData, version: Optional[str], install_lib: bool = True):
|
|
38
|
+
_ = installer_data
|
|
39
|
+
console = Console()
|
|
40
|
+
|
|
41
|
+
console.print(Panel(f"HELIX EDITOR INSTALLER 🧬\nPlatform: {platform.system()}\nVersion: {'latest' if version is None else version}", title="Installer", expand=False))
|
|
42
|
+
|
|
43
|
+
config_dict_copy = config_dict.copy()
|
|
44
|
+
config_dict_copy["repoURL"] = "https://github.com/helix-editor/helix"
|
|
45
|
+
inst = Installer(installer_data=config_dict_copy)
|
|
46
|
+
|
|
47
|
+
print("\n📥 [Step 1/5] Downloading Helix editor...")
|
|
48
|
+
downloaded, _version_to_be_installed = inst.binary_download(version=version)
|
|
49
|
+
print(" ✨ Download complete.")
|
|
50
|
+
|
|
51
|
+
print("\n🔍 [Step 2/5] Locating executable and components...")
|
|
52
|
+
if platform.system() == "Windows":
|
|
53
|
+
hx_file_search = [p for p in downloaded.rglob("hx.exe") if p.is_file()]
|
|
54
|
+
else:
|
|
55
|
+
hx_file_search = [p for p in downloaded.rglob("hx") if p.is_file()]
|
|
56
|
+
|
|
57
|
+
if not hx_file_search:
|
|
58
|
+
console.print(Panel("❌ ERROR: Could not find 'hx' executable in downloaded files.", title="Error", expand=False))
|
|
59
|
+
raise FileNotFoundError(f"Could not find 'hx' executable in {downloaded.name}")
|
|
60
|
+
|
|
61
|
+
assert len(hx_file_search) == 1, f"Expected 1 'hx' executable, found {len(hx_file_search)}"
|
|
62
|
+
|
|
63
|
+
hx_file = hx_file_search[0]
|
|
64
|
+
contrib = hx_file.parent / "contrib"
|
|
65
|
+
runtime = contrib.parent / "runtime"
|
|
66
|
+
|
|
67
|
+
if not runtime.exists():
|
|
68
|
+
console.print(Panel(f"❌ ERROR: 'runtime' directory not found at expected location: {runtime}", title="Error", expand=False))
|
|
69
|
+
raise FileNotFoundError(f"'runtime' directory not found at expected location: {runtime}")
|
|
70
|
+
if not contrib.exists():
|
|
71
|
+
console.print(Panel(f"❌ ERROR: 'contrib' directory not found at expected location: {contrib}", title="Error", expand=False))
|
|
72
|
+
raise FileNotFoundError(f"'contrib' directory not found at expected location: {contrib}")
|
|
73
|
+
print(" ✨ Executable and components located.")
|
|
74
|
+
|
|
75
|
+
print("\n🗑️ [Step 3/5] Cleaning up previous installation (if any)...")
|
|
76
|
+
if platform.system() in ["Linux", "Darwin"]:
|
|
77
|
+
runtime_path = PathExtended.home().joinpath(".config/helix/runtime")
|
|
78
|
+
contrib_path = PathExtended.home().joinpath(".config/helix/contrib")
|
|
79
|
+
target_config_dir = PathExtended.home().joinpath(".config/helix").expanduser()
|
|
80
|
+
target_config_dir.mkdir(parents=True, exist_ok=True)
|
|
81
|
+
elif platform.system() == "Windows":
|
|
82
|
+
runtime_path = PathExtended.home().joinpath("AppData/Roaming/helix/runtime")
|
|
83
|
+
contrib_path = PathExtended.home().joinpath("AppData/Roaming/helix/contrib")
|
|
84
|
+
target_config_dir = PathExtended.home().joinpath("AppData/Roaming/helix").expanduser()
|
|
85
|
+
target_config_dir.mkdir(parents=True, exist_ok=True)
|
|
86
|
+
else:
|
|
87
|
+
console.print(
|
|
88
|
+
Panel(
|
|
89
|
+
f"""⚠️ WARNING | Unsupported operating system: {platform.system()}
|
|
90
|
+
| Installation aborted.""",
|
|
91
|
+
title="Warning",
|
|
92
|
+
expand=False,
|
|
93
|
+
)
|
|
94
|
+
)
|
|
95
|
+
print("\n🧹 [Step 5/5] Cleaning up temporary download files...")
|
|
96
|
+
downloaded.delete(sure=True)
|
|
97
|
+
print(" ✨ Cleanup complete.")
|
|
98
|
+
return f"Error: Unsupported OS: {platform.system()}"
|
|
99
|
+
|
|
100
|
+
if platform.system() in ["Linux", "Darwin"]:
|
|
101
|
+
target_bin_path = PathExtended(LINUX_INSTALL_PATH) if platform.system() == "Linux" else PathExtended("/usr/local/bin")
|
|
102
|
+
exe_name = "hx"
|
|
103
|
+
hx_file.move(folder=target_bin_path, overwrite=True)
|
|
104
|
+
|
|
105
|
+
# Always install contrib (regardless of install_lib flag) — treat it like the executable.
|
|
106
|
+
contrib_path.delete(sure=True, verbose=False)
|
|
107
|
+
contrib.move(folder=target_config_dir, overwrite=True)
|
|
108
|
+
|
|
109
|
+
# Install runtime only if install_lib is True. When copying runtime, copy all subfolders
|
|
110
|
+
# except 'grammars' (for which we only copy the specific python.so file if present).
|
|
111
|
+
if install_lib:
|
|
112
|
+
runtime_path.delete(sure=True, verbose=False)
|
|
113
|
+
print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
|
|
114
|
+
target_runtime = target_config_dir.joinpath("runtime")
|
|
115
|
+
target_runtime.mkdir(parents=True, exist_ok=True)
|
|
116
|
+
|
|
117
|
+
# iterate runtime children and copy selectively
|
|
118
|
+
for child in runtime.iterdir():
|
|
119
|
+
# skip non-existent or weird entries
|
|
120
|
+
if not child.exists():
|
|
121
|
+
continue
|
|
122
|
+
if child.name == "grammars":
|
|
123
|
+
# copy only the specific language files from runtime/grammars if they exist
|
|
124
|
+
for a_language in LANGUAGES_SUPPORTED:
|
|
125
|
+
lang_file = child.joinpath(f"{a_language}.so")
|
|
126
|
+
if lang_file.exists() and lang_file.is_file():
|
|
127
|
+
dest = target_runtime.joinpath("grammars")
|
|
128
|
+
lang_file.copy(folder=dest, overwrite=True)
|
|
129
|
+
else:
|
|
130
|
+
# copy the whole child (file or directory) into target_runtime
|
|
131
|
+
# for directories, copy will create target_runtime/<child.name>
|
|
132
|
+
try:
|
|
133
|
+
child.copy(folder=target_runtime, overwrite=True)
|
|
134
|
+
except Exception:
|
|
135
|
+
# fallback: try copying contents if it's a directory
|
|
136
|
+
if child.is_dir():
|
|
137
|
+
for sub in child.iterdir():
|
|
138
|
+
sub.copy(folder=target_runtime.joinpath(child.name), overwrite=True)
|
|
139
|
+
system_name = "Linux" if platform.system() == "Linux" else "macOS"
|
|
140
|
+
console.print(
|
|
141
|
+
Panel(
|
|
142
|
+
f"""✅ SUCCESS | Helix editor installed successfully on {system_name}!
|
|
143
|
+
|
|
144
|
+
📂 Executable: {target_bin_path / exe_name}
|
|
145
|
+
🔧 Config: {target_config_dir}""",
|
|
146
|
+
title="Success",
|
|
147
|
+
expand=False,
|
|
148
|
+
)
|
|
149
|
+
)
|
|
150
|
+
elif platform.system() == "Windows":
|
|
151
|
+
target_bin_path = PathExtended(WINDOWS_INSTALL_PATH)
|
|
152
|
+
exe_name = "hx.exe"
|
|
153
|
+
hx_file.move(folder=target_bin_path, overwrite=True)
|
|
154
|
+
|
|
155
|
+
# Always install contrib (regardless of install_lib flag)
|
|
156
|
+
contrib_path.delete(sure=True, verbose=False)
|
|
157
|
+
contrib.move(folder=target_config_dir, overwrite=True)
|
|
158
|
+
|
|
159
|
+
# Install runtime only if install_lib is True. Copy selectively as on POSIX.
|
|
160
|
+
if install_lib:
|
|
161
|
+
runtime_path.delete(sure=True, verbose=False)
|
|
162
|
+
print(f" ✨ Cleaned '{runtime_path}' and '{contrib_path}'.")
|
|
163
|
+
target_runtime = target_config_dir.joinpath("runtime")
|
|
164
|
+
target_runtime.mkdir(parents=True, exist_ok=True)
|
|
165
|
+
|
|
166
|
+
for child in runtime.iterdir():
|
|
167
|
+
if not child.exists():
|
|
168
|
+
continue
|
|
169
|
+
if child.name == "grammars":
|
|
170
|
+
for a_language in LANGUAGES_SUPPORTED:
|
|
171
|
+
lang_file = child.joinpath(f"{a_language}.dll")
|
|
172
|
+
if lang_file.exists() and lang_file.is_file():
|
|
173
|
+
dest = target_runtime.joinpath("grammars")
|
|
174
|
+
lang_file.copy(folder=dest, overwrite=True)
|
|
175
|
+
else:
|
|
176
|
+
try:
|
|
177
|
+
child.copy(folder=target_runtime, overwrite=True)
|
|
178
|
+
except Exception:
|
|
179
|
+
if child.is_dir():
|
|
180
|
+
for sub in child.iterdir():
|
|
181
|
+
sub.copy(folder=target_runtime.joinpath(child.name), overwrite=True)
|
|
182
|
+
console.print(
|
|
183
|
+
Panel(
|
|
184
|
+
f"""✅ SUCCESS | Helix editor installed successfully on Windows!
|
|
185
|
+
📂 Executable: {target_bin_path / exe_name}
|
|
186
|
+
🔧 Config: {target_config_dir}""",
|
|
187
|
+
title="Success",
|
|
188
|
+
expand=False,
|
|
189
|
+
)
|
|
190
|
+
)
|
|
191
|
+
else:
|
|
192
|
+
console.print(
|
|
193
|
+
Panel(
|
|
194
|
+
f"""⚠️ WARNING | Unsupported operating system: {platform.system()}
|
|
195
|
+
| Installation aborted.""",
|
|
196
|
+
title="Warning",
|
|
197
|
+
expand=False,
|
|
198
|
+
)
|
|
199
|
+
)
|
|
200
|
+
print("\n🧹 [Step 5/5] Cleaning up temporary download files...")
|
|
201
|
+
downloaded.delete(sure=True)
|
|
202
|
+
print(" ✨ Cleanup complete.")
|
|
203
|
+
return f"Error: Unsupported OS: {platform.system()}"
|
|
204
|
+
|
|
205
|
+
print("\n🧹 [Step 5/5] Cleaning up temporary download files...")
|
|
206
|
+
downloaded.delete(sure=True)
|
|
207
|
+
print(" ✨ Cleanup complete.")
|
|
208
|
+
|
|
209
|
+
console.print(Panel("🎉 Installation Finished Successfully! 🎉", title="Finished", expand=False))
|
|
210
|
+
return ""
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
if __name__ == "__main__":
|
|
214
|
+
pass
|
|
@@ -32,7 +32,7 @@ def main(installer_data: InstallerData, version: Optional[str]) -> None:
|
|
|
32
32
|
|
|
33
33
|
if current_platform == "Windows":
|
|
34
34
|
console.print("🪟 Installing Nerd Fonts on Windows...", style="bold")
|
|
35
|
-
from machineconfig.jobs.installer.
|
|
35
|
+
from machineconfig.jobs.installer.python_scripts.nerfont_windows_helper import install_nerd_fonts
|
|
36
36
|
|
|
37
37
|
try:
|
|
38
38
|
install_nerd_fonts()
|
|
@@ -108,4 +108,4 @@ def main(installer_data: InstallerData, version: Optional[str]) -> None:
|
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
if __name__ == "__main__":
|
|
111
|
-
|
|
111
|
+
main(1, None) # type: ignore
|
|
@@ -13,12 +13,12 @@ from rich.console import Console
|
|
|
13
13
|
from rich.panel import Panel
|
|
14
14
|
|
|
15
15
|
from machineconfig.utils.path_extended import PathExtended
|
|
16
|
+
from machineconfig.utils.accessories import randstr
|
|
16
17
|
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
17
18
|
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
18
19
|
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
19
20
|
|
|
20
21
|
|
|
21
|
-
# Nerd Fonts installer configuration data
|
|
22
22
|
nerd_fonts: InstallerData = {
|
|
23
23
|
"appName": "Cascadia Code Nerd Font",
|
|
24
24
|
"repoURL": "https://github.com/ryanoasis/nerd-fonts",
|
|
@@ -38,14 +38,6 @@ nerd_fonts: InstallerData = {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
# Patterns to match any installed variant (NF, Nerd Font, Mono, Propo, style weights) of Cascadia/Caskaydia
|
|
42
|
-
# We'll compile them at runtime for flexibility. Keep them simple to avoid false positives.
|
|
43
|
-
# REQUIRED_FONT_PATTERNS: tuple[str, ...] = (
|
|
44
|
-
# r"caskaydiacove.*(nf|nerd ?font)",
|
|
45
|
-
# r"cascadiacode.*(nf|nerd ?font)"
|
|
46
|
-
# )
|
|
47
|
-
|
|
48
|
-
|
|
49
41
|
console = Console()
|
|
50
42
|
|
|
51
43
|
|
|
@@ -80,22 +72,28 @@ def _list_installed_fonts() -> list[str]:
|
|
|
80
72
|
|
|
81
73
|
|
|
82
74
|
def _missing_required_fonts(installed_fonts: Iterable[str]) -> list[str]:
|
|
83
|
-
"""Check which
|
|
84
|
-
|
|
75
|
+
"""Check which feature fonts are missing from installed fonts.
|
|
76
|
+
|
|
85
77
|
Args:
|
|
86
78
|
installed_fonts: List of installed font names
|
|
87
|
-
|
|
79
|
+
|
|
88
80
|
Returns:
|
|
89
|
-
List of missing font
|
|
81
|
+
List of descriptions for missing font groups
|
|
90
82
|
"""
|
|
91
|
-
import re
|
|
92
83
|
|
|
93
|
-
|
|
84
|
+
def _normalize(name: str) -> str:
|
|
85
|
+
return name.lower().replace(" ", "").replace("_", "")
|
|
86
|
+
|
|
87
|
+
installed_norm = [_normalize(font) for font in installed_fonts]
|
|
88
|
+
requirements: list[tuple[str, str]] = [
|
|
89
|
+
("cascadiacode", "Cascadia Code family"),
|
|
90
|
+
("caskaydiacove", "Caskaydia Cove Nerd Font family"),
|
|
91
|
+
]
|
|
92
|
+
|
|
94
93
|
missing: list[str] = []
|
|
95
|
-
for
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
missing.append(pattern)
|
|
94
|
+
for needle, label in requirements:
|
|
95
|
+
if not any(needle in font for font in installed_norm):
|
|
96
|
+
missing.append(label)
|
|
99
97
|
return missing
|
|
100
98
|
|
|
101
99
|
|
|
@@ -125,18 +123,22 @@ def install_nerd_fonts() -> None:
|
|
|
125
123
|
console.print(f"🔍 Missing fonts detected: {', '.join(missing)}. Proceeding with installation...")
|
|
126
124
|
console.print("🔍 Downloading Nerd Fonts package...")
|
|
127
125
|
|
|
128
|
-
folder, _version_to_be_installed = Installer(installer_data=nerd_fonts).
|
|
126
|
+
folder, _version_to_be_installed = Installer(installer_data=nerd_fonts).binary_download(version=None)
|
|
129
127
|
|
|
130
128
|
console.print("🧹 Cleaning up unnecessary files...")
|
|
131
|
-
[p.delete(sure=True) for p in folder.
|
|
132
|
-
[p.delete(sure=True) for p in folder.
|
|
133
|
-
[p.delete(sure=True) for p in folder.
|
|
129
|
+
[PathExtended(p).delete(sure=True) for p in folder.glob("*Windows*")]
|
|
130
|
+
[PathExtended(p).delete(sure=True) for p in folder.glob("*readme*")]
|
|
131
|
+
[PathExtended(p).delete(sure=True) for p in folder.glob("*LICENSE*")]
|
|
132
|
+
|
|
133
|
+
print("Fonts to be installed:")
|
|
134
|
+
for font in (list(folder.glob("*.ttf")) + list(folder.glob("*.otf"))):
|
|
135
|
+
print(f" - {font}")
|
|
134
136
|
|
|
135
137
|
console.print("⚙️ Installing fonts via PowerShell...")
|
|
136
|
-
file = PathExtended.
|
|
138
|
+
file = PathExtended("~/tmp_results/tmp_files").expanduser().joinpath(f"{randstr()}.ps1")
|
|
137
139
|
file.parent.mkdir(parents=True, exist_ok=True)
|
|
138
|
-
|
|
139
|
-
raw_content = LIBRARY_ROOT.joinpath("jobs/installer/
|
|
140
|
+
|
|
141
|
+
raw_content = LIBRARY_ROOT.joinpath("jobs/installer/powershell_scripts/install_fonts.ps1").read_text(encoding="utf-8").replace(r".\fonts-to-be-installed", str(folder))
|
|
140
142
|
# PowerShell 5.1 can choke on certain unicode chars in some locales; keep ASCII only.
|
|
141
143
|
content = "".join(ch for ch in raw_content if ord(ch) < 128)
|
|
142
144
|
file.write_text(content, encoding="utf-8")
|
|
@@ -156,3 +158,7 @@ def install_nerd_fonts() -> None:
|
|
|
156
158
|
console.print()
|
|
157
159
|
render_banner("✅ Nerd Fonts installation complete! ✅", "Nerd Fonts Installer", "green", box.DOUBLE)
|
|
158
160
|
console.print()
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
if __name__ == "__main__":
|
|
164
|
+
install_nerd_fonts()
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import platform
|
|
4
|
+
from typing import Optional
|
|
5
|
+
from rich import box
|
|
6
|
+
from rich.console import Console
|
|
7
|
+
from rich.panel import Panel
|
|
8
|
+
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
9
|
+
|
|
10
|
+
ps1 = r"""
|
|
11
|
+
$winget = Get-Command winget -ErrorAction SilentlyContinue
|
|
12
|
+
if (-not $winget) {
|
|
13
|
+
Write-Host "winget not found. Installing..."
|
|
14
|
+
$finalUrl = (Invoke-WebRequest 'https://github.com/microsoft/winget-cli/releases/latest' -UseBasicParsing).BaseResponse.ResponseUri.AbsoluteUri
|
|
15
|
+
$releaseTag = $finalUrl.Split('/')[-1]
|
|
16
|
+
$DownloadUrl = "https://github.com/microsoft/winget-cli/releases/download/$releaseTag/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
|
|
17
|
+
$DestDir = Join-Path $HOME "Downloads"
|
|
18
|
+
$DestFile = Join-Path $DestDir "Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
|
|
19
|
+
# Create folder if it doesn't exist
|
|
20
|
+
if (-not (Test-Path $DestDir)) {
|
|
21
|
+
New-Item -ItemType Directory -Path $DestDir | Out-Null
|
|
22
|
+
}
|
|
23
|
+
Write-Host "Downloading winget installer..."
|
|
24
|
+
# Invoke-WebRequest -Uri $DownloadUrl -OutFile $DestFile
|
|
25
|
+
# Start-BitsTransfer -Source $DownloadUrl -Destination $DestFile #
|
|
26
|
+
#Invoke-WebRequest -Uri $DownloadUrl -OutFile $DestFile -UseBasicParsing
|
|
27
|
+
curl.exe -L -o $DestFile $DownloadUrl
|
|
28
|
+
Write-Host "Saved to: $DestFile"
|
|
29
|
+
# We MUST run Add-AppxPackage in Windows PowerShell
|
|
30
|
+
Write-Host "Installing package via Windows PowerShell..."
|
|
31
|
+
powershell.exe -NoLogo -NoProfile -Command "Add-AppxPackage -Path `"$DestFile`" "
|
|
32
|
+
Write-Host "Installation complete."
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
Write-Host "winget already available. Skipping installation."
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
winget install --no-upgrade --name "Powershell" --Id "Microsoft.PowerShell" --source winget --scope user --accept-package-agreements --accept-source-agreements # powershell require admin
|
|
39
|
+
winget install --no-upgrade --name "Windows Terminal" --Id "Microsoft.WindowsTerminal" --source winget --scope user --accept-package-agreements --accept-source-agreements # Terminal is is installed by default on W 11
|
|
40
|
+
winget install --no-upgrade --name "Git" --Id "Git.Git" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
41
|
+
powershell -c "irm bun.sh/install.ps1|iex"
|
|
42
|
+
|
|
43
|
+
# --GROUP:gui:Brave+VSCode+Git+WezTerm
|
|
44
|
+
# --GROUP:dev2:VSRedistrib+VSBuildTools+Codeblocks+GnuWin32: Make+GnuPG+graphviz+WinFsp+SSHFS-win+xming+Node.js+Rustup+Cloudflare+Cloudflare WARP+Microsoft Garage Mouse without Borders
|
|
45
|
+
# --GROUP:user:nu+Chrome+ChromeRemoteDesktop+Zoom+7zip+Firefox+Thunderbird+StreamlabsOBS+OBSStudio+MiKTeX+TexMaker+notepad+++Lapce+TesseractOCR+perl+DB Browser for SQLite+sql server management studio+Adobe Acrobat Reader DC+julia+Chafa+bottom+onefetch+Just+hyperfine+AWS CLI
|
|
46
|
+
# Install-Module -Name Terminal-Icons -Repository PSGallery -Force -AcceptLicense -PassThru -Confirm # -RequiredVersion 2.5.10
|
|
47
|
+
# [System.Environment]::SetEnvironmentVariable('PYTHONUTF8', '1', 'User')
|
|
48
|
+
# [System.Environment]::SetEnvironmentVariable('PYTHONIOENCODING', 'utf-8', 'User')
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
zsh = r"""
|
|
54
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
55
|
+
echo "🔄 Updating Homebrew..."
|
|
56
|
+
brew update || true
|
|
57
|
+
|
|
58
|
+
curl -fsSL https://bun.com/install | bash
|
|
59
|
+
|
|
60
|
+
# Note: git and nano are pre-installed on macOS, but we install via Homebrew to ensure latest versions
|
|
61
|
+
# brew install git || true
|
|
62
|
+
# brew install nano || true
|
|
63
|
+
# brew install curl || true
|
|
64
|
+
# nvm install node || true
|
|
65
|
+
# brew install make
|
|
66
|
+
# brew install ffmpeg
|
|
67
|
+
# brew install openssl
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
echo "✅ Essential tools installation complete."
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
bash = r"""
|
|
74
|
+
sudo apt update -y || true
|
|
75
|
+
sudo apt install nala -y || true
|
|
76
|
+
sudo nala install curl wget gpg lsb-release apt-transport-https -y || true
|
|
77
|
+
sudo nala install git net-tools htop nano -y || true
|
|
78
|
+
sudo nala install build-essential python3-dev -y || true # C build toolchain: Where build-essential brings gcc, make, etc., and python3-dev ensures headers for your Python version.
|
|
79
|
+
# sudo nala install libssl-dev -y
|
|
80
|
+
# sudo nala install libaa-bin -y
|
|
81
|
+
|
|
82
|
+
# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
|
|
83
|
+
# source ~/.bashrc || true
|
|
84
|
+
# nvm install node || true
|
|
85
|
+
|
|
86
|
+
sudo nala install unzip -y # required by bun installer
|
|
87
|
+
curl -fsSL https://bun.com/install | bash
|
|
88
|
+
. ~/.bashrc || true
|
|
89
|
+
# sudo ln -s $(which bun) /usr/local/bin/node # trick programs that expect node to use bun runtime.
|
|
90
|
+
sudo ln -s ~/.bun/bin/bun /usr/local/bin/node
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
sudo nala install samba -y || true
|
|
94
|
+
sudo nala install fuse3 -y || true
|
|
95
|
+
sudo nala install nfs-common -y || true
|
|
96
|
+
|
|
97
|
+
# echo 'keyboard-configuration keyboard-configuration/layout select US English' | sudo debconf-set-selections
|
|
98
|
+
# echo 'keyboard-configuration keyboard-configuration/layoutcode string us' | sudo debconf-set-selections
|
|
99
|
+
# sudo DEBIAN_FRONTEND=noninteractive nala install -y cmatrix
|
|
100
|
+
# sudo nala install hollywood -y || true
|
|
101
|
+
|
|
102
|
+
# sudo nala install ffmpeg -y || true # Required by some dev tools
|
|
103
|
+
# sudo nala install make -y || true # Required by LunarVim and SpaceVim
|
|
104
|
+
# (curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) || true
|
|
105
|
+
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def main(installer_data: InstallerData, version: Optional[str]) -> None:
|
|
110
|
+
console = Console()
|
|
111
|
+
_ = installer_data
|
|
112
|
+
console.print(
|
|
113
|
+
Panel.fit(
|
|
114
|
+
"\n".join([f"💻 Platform: {platform.system()}", f"🔄 Version: {'latest' if version is None else version}"]),
|
|
115
|
+
title="🔧 ABC Installer",
|
|
116
|
+
border_style="blue",
|
|
117
|
+
box=box.ROUNDED,
|
|
118
|
+
)
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
_ = version
|
|
122
|
+
if platform.system() == "Windows":
|
|
123
|
+
console.print("🪟 Installing ABC on Windows using winget...", style="bold")
|
|
124
|
+
program = ps1
|
|
125
|
+
elif platform.system() == "Linux":
|
|
126
|
+
console.print("🐧 Installing ABC on Linux...", style="bold")
|
|
127
|
+
program = bash
|
|
128
|
+
elif platform.system() == "Darwin":
|
|
129
|
+
console.print("🍎 Installing ABC on macOS...", style="bold")
|
|
130
|
+
program = zsh
|
|
131
|
+
else:
|
|
132
|
+
error_msg = f"Unsupported platform: {platform.system()}"
|
|
133
|
+
console.print(
|
|
134
|
+
Panel.fit(
|
|
135
|
+
"\n".join([error_msg]),
|
|
136
|
+
title="❌ Error",
|
|
137
|
+
subtitle="⚠️ Unsupported platform",
|
|
138
|
+
border_style="red",
|
|
139
|
+
box=box.ROUNDED,
|
|
140
|
+
)
|
|
141
|
+
)
|
|
142
|
+
raise NotImplementedError(error_msg)
|
|
143
|
+
from machineconfig.utils.code import print_code, run_shell_script
|
|
144
|
+
print_code(code=program, lexer="shell", desc="Installation Script Preview")
|
|
145
|
+
run_shell_script(program, display_script=True, clean_env=False)
|
|
@@ -9,10 +9,6 @@ from rich.panel import Panel
|
|
|
9
9
|
|
|
10
10
|
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
# config_dict: InstallerData = {"appName": "Wezterm", "repoURL": "CMD", "doc": "Modern, GPU-accelerated terminal emulator"}
|
|
14
|
-
|
|
15
|
-
|
|
16
12
|
console = Console()
|
|
17
13
|
|
|
18
14
|
|
|
@@ -35,21 +31,8 @@ def main(installer_data: InstallerData, version: Optional[str]):
|
|
|
35
31
|
|
|
36
32
|
_ = version
|
|
37
33
|
if platform.system() == "Windows":
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
Panel.fit(
|
|
41
|
-
"\n".join(
|
|
42
|
-
[
|
|
43
|
-
f"❌ ERROR | {error_msg}",
|
|
44
|
-
"💡 TIP: Please download and install manually from the WezTerm website",
|
|
45
|
-
]
|
|
46
|
-
),
|
|
47
|
-
title="Unsupported Platform",
|
|
48
|
-
border_style="red",
|
|
49
|
-
padding=(1, 2),
|
|
50
|
-
)
|
|
51
|
-
)
|
|
52
|
-
raise NotImplementedError(error_msg)
|
|
34
|
+
program = """winget install --no-upgrade --name "WezTerm" --Id "wez.wezterm" --source winget --accept-package-agreements --accept-source-agreements
|
|
35
|
+
"""
|
|
53
36
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
54
37
|
system_name = "LINUX" if platform.system() == "Linux" else "MACOS"
|
|
55
38
|
console.print(
|
|
@@ -3,11 +3,16 @@ import requests
|
|
|
3
3
|
import tempfile
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from typing import Optional
|
|
6
|
+
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
6
7
|
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
#
|
|
10
|
-
|
|
9
|
+
r"""
|
|
10
|
+
# download latest from
|
|
11
|
+
cd $HOME/Downloads
|
|
12
|
+
d u "https://github.com/microsoft/winget-cli/releases/download/v1.12.170-preview/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
|
|
13
|
+
# this must be run in windows powershell, not in pwsh
|
|
14
|
+
Add-AppxPackage .\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
|
|
15
|
+
"""
|
|
11
16
|
|
|
12
17
|
def is_winget_available() -> bool:
|
|
13
18
|
"""
|
|
@@ -110,7 +115,7 @@ def install_msix_package(package_path: Path) -> bool:
|
|
|
110
115
|
return False
|
|
111
116
|
|
|
112
117
|
|
|
113
|
-
def
|
|
118
|
+
def main(installer_data: InstallerData, version: Optional[str]) -> bool:
|
|
114
119
|
"""
|
|
115
120
|
Ensure winget is available on the system. If not available, download and install it.
|
|
116
121
|
|
|
@@ -118,6 +123,7 @@ def ensure_winget_available() -> bool:
|
|
|
118
123
|
bool: True if winget is available (either was already installed or successfully installed),
|
|
119
124
|
False if installation failed
|
|
120
125
|
"""
|
|
126
|
+
_ = installer_data
|
|
121
127
|
# First check if winget is already available
|
|
122
128
|
if is_winget_available():
|
|
123
129
|
print("Winget is already available on the system.")
|
|
@@ -164,13 +170,3 @@ def ensure_winget_available() -> bool:
|
|
|
164
170
|
else:
|
|
165
171
|
print("Installation completed but winget is still not available. You may need to restart your terminal or add it to PATH.")
|
|
166
172
|
return False
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if __name__ == "__main__":
|
|
170
|
-
# Example usage
|
|
171
|
-
print("=== Winget Installation ===\n")
|
|
172
|
-
|
|
173
|
-
if ensure_winget_available():
|
|
174
|
-
print("Winget is ready to use!")
|
|
175
|
-
else:
|
|
176
|
-
print("Failed to ensure winget availability.")
|