machineconfig 6.23__py3-none-any.whl → 8.12__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/cluster/remote/cloud_manager.py +1 -1
- machineconfig/cluster/remote/distribute.py +0 -1
- machineconfig/cluster/remote/file_manager.py +0 -2
- machineconfig/cluster/sessions_managers/{utils → helpers}/enhanced_command_runner.py +4 -6
- machineconfig/cluster/sessions_managers/utils/load_balancer.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
- machineconfig/cluster/sessions_managers/wt_local.py +16 -221
- machineconfig/cluster/sessions_managers/wt_local_manager.py +55 -193
- 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 +3 -3
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +5 -3
- machineconfig/cluster/sessions_managers/zellij_remote.py +2 -2
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +2 -2
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -7
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_helper_with_panes.py +1 -1
- machineconfig/jobs/installer/check_installations.py +0 -1
- machineconfig/jobs/installer/installer_data.json +1408 -201
- machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +63 -92
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/jobs/installer/python_scripts/boxes.py +61 -0
- 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 +4 -1
- machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
- machineconfig/jobs/installer/{custom → python_scripts}/hx.py +75 -18
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +27 -22
- machineconfig/jobs/installer/python_scripts/sysabc.py +139 -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 +121 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
- 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 +25 -0
- machineconfig/logger.py +0 -1
- machineconfig/profile/create_helper.py +56 -18
- machineconfig/profile/create_links.py +2 -1
- machineconfig/profile/create_links_export.py +64 -18
- machineconfig/profile/create_shell_profile.py +90 -132
- machineconfig/profile/mapper.toml +18 -8
- 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 +82 -60
- machineconfig/scripts/python/ai/initai.py +1 -19
- 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.sh +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 +5 -5
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -0
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
- machineconfig/scripts/python/ai/solutions/generic.py +1 -1
- machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
- machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +7 -2
- machineconfig/scripts/python/cloud.py +14 -9
- machineconfig/scripts/python/croshell.py +135 -117
- machineconfig/scripts/python/devops.py +48 -25
- machineconfig/scripts/python/devops_navigator.py +1 -5
- machineconfig/scripts/python/env_manager/env_manager_tui.py +204 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +18 -9
- machineconfig/scripts/python/fire_jobs.py +127 -118
- machineconfig/scripts/python/ftpx.py +44 -17
- machineconfig/scripts/python/helpers/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/qr_code.py +166 -0
- machineconfig/scripts/python/helpers/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/symantic_search.py +25 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_help_launch.py +37 -15
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +41 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/copilot/config.yml +1 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/crush/crush.json +10 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/gemini/settings.json +12 -0
- machineconfig/scripts/python/helpers_agents/privacy/privacy.py +109 -0
- machineconfig/scripts/python/helpers_agents/templates/prompt.txt +10 -0
- machineconfig/scripts/python/helpers_agents/templates/template.sh +34 -0
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_copy.py +28 -21
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_mount.py +19 -17
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_sync.py +12 -11
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/helpers2.py +1 -1
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/start_slidev.py +6 -7
- machineconfig/scripts/python/helpers_devops/cli_config.py +105 -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 +221 -0
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/cli_repos.py +60 -36
- machineconfig/scripts/python/helpers_devops/cli_self.py +172 -0
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +142 -0
- machineconfig/scripts/python/{devops_helpers/cli_terminal.py → helpers_devops/cli_share_terminal.py} +15 -17
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/devops_backup_retrieve.py +7 -10
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/devops_status.py +7 -19
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/devops_update_repos.py +1 -1
- machineconfig/scripts/python/helpers_devops/run_script.py +168 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/themes/choose_wezterm_theme.py +1 -1
- machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -20
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +2 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +26 -16
- machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +3 -3
- machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
- machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/command_builder.py +1 -1
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/command_detail.py +1 -1
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/command_tree.py +160 -23
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/main_app.py +5 -5
- machineconfig/scripts/python/helpers_network/address.py +176 -0
- machineconfig/scripts/python/helpers_network/address_switch.py +78 -0
- machineconfig/scripts/python/{nw → helpers_network}/mount_nfs.py +2 -2
- machineconfig/scripts/python/{nw → helpers_network}/mount_ssh.py +1 -1
- machineconfig/scripts/python/{nw/devops_add_identity.py → helpers_network/ssh_add_identity.py} +35 -1
- machineconfig/scripts/python/{nw/devops_add_ssh_key.py → helpers_network/ssh_add_ssh_key.py} +26 -7
- machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_linux.py +7 -7
- machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_windows.py +4 -4
- machineconfig/scripts/python/{nw → helpers_network}/wifi_conn.py +1 -53
- machineconfig/scripts/python/helpers_repos/action.py +209 -0
- machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/clone.py +0 -1
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +80 -37
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/entrypoint.py +5 -5
- machineconfig/scripts/python/helpers_repos/grource.py +2 -2
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/record.py +3 -2
- machineconfig/scripts/python/helpers_repos/repo_analyzer_1.py +160 -0
- machineconfig/scripts/python/{repos_helpers/count_lines.py → helpers_repos/repo_analyzer_2.py} +113 -192
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/sync.py +5 -5
- machineconfig/scripts/python/{sessions_helpers → helpers_sessions}/sessions_multiprocess.py +19 -13
- machineconfig/scripts/python/helpers_utils/download.py +150 -0
- machineconfig/scripts/python/helpers_utils/pdf.py +96 -0
- machineconfig/scripts/python/helpers_utils/python.py +187 -0
- machineconfig/scripts/python/interactive.py +26 -35
- machineconfig/scripts/python/{entry.py → mcfg_entry.py} +24 -10
- machineconfig/scripts/python/msearch.py +72 -0
- machineconfig/scripts/python/sessions.py +101 -38
- machineconfig/scripts/python/terminal.py +136 -0
- machineconfig/scripts/python/utils.py +62 -0
- machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -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/linux/lfrc +10 -11
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +15 -17
- machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
- machineconfig/settings/linters/.ruff.toml +1 -1
- machineconfig/settings/marimo/marimo.toml +80 -0
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/shells/bash/init.sh +57 -10
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
- machineconfig/settings/shells/nushell/config.nu +2 -35
- machineconfig/settings/shells/nushell/env.nu +45 -6
- machineconfig/settings/shells/nushell/init.nu +314 -0
- machineconfig/settings/shells/pwsh/init.ps1 +59 -23
- 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/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/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 +84 -0
- machineconfig/settings/yazi/yazi_windows.toml +58 -0
- machineconfig/settings/zellij/layouts/st.kdl +39 -8
- machineconfig/setup_linux/__init__.py +2 -2
- machineconfig/setup_linux/apps_desktop.sh +8 -27
- machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -11
- machineconfig/setup_linux/web_shortcuts/live_from_github.sh +31 -0
- 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 +3 -5
- machineconfig/setup_windows/ssh/openssh-server.ps1 +1 -1
- machineconfig/setup_windows/uv.ps1 +8 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +26 -10
- machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +30 -0
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/utils/accessories.py +7 -5
- machineconfig/utils/code.py +143 -167
- machineconfig/utils/files/art/fat_croco.txt +10 -0
- machineconfig/utils/files/art/halfwit_croco.txt +9 -0
- machineconfig/utils/files/art/happy_croco.txt +22 -0
- machineconfig/utils/files/art/water_croco.txt +11 -0
- machineconfig/utils/files/ascii_art.py +1 -1
- machineconfig/utils/files/headers.py +6 -11
- machineconfig/utils/files/read.py +3 -9
- machineconfig/utils/installer_utils/github_release_bulk.py +156 -119
- machineconfig/utils/installer_utils/install_from_url.py +183 -0
- machineconfig/utils/installer_utils/installer_class.py +44 -101
- machineconfig/utils/installer_utils/installer_cli.py +175 -0
- machineconfig/utils/installer_utils/installer_helper.py +129 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +39 -87
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +17 -63
- machineconfig/utils/io.py +77 -4
- machineconfig/utils/links.py +56 -38
- machineconfig/utils/meta.py +235 -145
- machineconfig/utils/options.py +46 -18
- machineconfig/utils/options_tv.py +119 -0
- machineconfig/utils/path_extended.py +46 -97
- machineconfig/utils/path_helper.py +76 -23
- machineconfig/utils/procs.py +10 -23
- machineconfig/utils/scheduler.py +84 -115
- machineconfig/utils/scheduling.py +0 -3
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
- machineconfig/utils/schemas/layouts/layout_types.py +1 -1
- machineconfig/utils/ssh.py +214 -476
- machineconfig/utils/ssh_utils/abc.py +5 -0
- machineconfig/utils/ssh_utils/copy_from_here.py +111 -0
- machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
- machineconfig/utils/ssh_utils/utils.py +142 -0
- machineconfig/utils/ssh_utils/wsl.py +210 -0
- machineconfig/utils/terminal.py +3 -113
- machineconfig/utils/upgrade_packages.py +114 -28
- machineconfig/utils/ve.py +12 -4
- machineconfig-8.12.dist-info/METADATA +132 -0
- machineconfig-8.12.dist-info/RECORD +504 -0
- {machineconfig-6.23.dist-info → machineconfig-8.12.dist-info}/entry_points.txt +5 -1
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -16
- machineconfig/jobs/python/python_ve_symlink.py +0 -37
- machineconfig/jobs/python/vscode/api.py +0 -57
- machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -12
- machineconfig/jobs/windows/archive/openssh-server_add_key.ps1 +0 -7
- machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1 +0 -14
- 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/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/devops_helpers/cli_config.py +0 -81
- machineconfig/scripts/python/devops_helpers/cli_config_dotfile.py +0 -84
- machineconfig/scripts/python/devops_helpers/cli_data.py +0 -18
- machineconfig/scripts/python/devops_helpers/cli_nw.py +0 -73
- machineconfig/scripts/python/devops_helpers/cli_self.py +0 -117
- machineconfig/scripts/python/devops_helpers/cli_share_server.py +0 -104
- machineconfig/scripts/python/helper_navigator/__init__.py +0 -20
- 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/fire_agents_helper_types.py +0 -30
- machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
- machineconfig/scripts/python/helpers_fire/template.sh +0 -15
- machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
- machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
- machineconfig/scripts/python/repos_helpers/action.py +0 -378
- machineconfig/scripts/python/repos_helpers/count_lines_frontend.py +0 -17
- machineconfig/scripts/windows/fzfb.ps1 +0 -3
- machineconfig/scripts/windows/fzfg.ps1 +0 -2
- machineconfig/scripts/windows/fzfrga.bat +0 -20
- 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/shells/pwsh/profile.ps1 +0 -0
- machineconfig/settings/yazi/keymap.toml +0 -0
- machineconfig/settings/yazi/yazi.toml +0 -4
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_linux/nix/cli_installation.sh +0 -137
- machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
- machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
- machineconfig/setup_windows/apps.ps1 +0 -62
- machineconfig/setup_windows/others/obs.ps1 +0 -4
- machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
- machineconfig/setup_windows/wt_and_pwsh/__init__.py +0 -0
- machineconfig/utils/installer_utils/installer.py +0 -225
- machineconfig-6.23.dist-info/METADATA +0 -84
- machineconfig-6.23.dist-info/RECORD +0 -428
- machineconfig/cluster/sessions_managers/{utils → helpers}/load_balancer_helper.py +0 -0
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_helper.py +0 -0
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_helper_restart.py +0 -0
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_manager_helper.py +0 -0
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +0 -0
- machineconfig/jobs/installer/{custom_dev → 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/web_shortcuts → jobs/scripts/bash_scripts}/android.sh +0 -0
- machineconfig/jobs/{linux/msc → scripts/bash_scripts}/lid.sh +0 -0
- machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/mint_keyboard_shortcuts.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/{jobs/python → scripts/python/ai/utils}/__init__.py +0 -0
- machineconfig/scripts/python/{cloud_helpers → helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{croshell_helpers → helpers_agents/agentic_frameworks}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_help_search.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_load_balancer.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents/templates}/template.ps1 +0 -0
- machineconfig/scripts/python/{devops_helpers → helpers_cloud}/__init__.py +0 -0
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/helpers5.py +0 -0
- /machineconfig/scripts/python/{devops_helpers/themes → helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/pomodoro.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/scheduler.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/viewer.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/viewer_template.py +0 -0
- /machineconfig/scripts/python/{helpers_fire → helpers_devops}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_fire/agentic_frameworks → helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/scripts/python/{devops_helpers → helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_fire_command/f.py} +0 -0
- /machineconfig/scripts/python/{helper_navigator → helpers_navigator}/data_models.py +0 -0
- /machineconfig/scripts/python/{helper_navigator → helpers_navigator}/search_bar.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers_network}/__init__.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_network}/mount_nw_drive.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_network}/onetimeshare.py +0 -0
- /machineconfig/scripts/python/{repos_helpers → helpers_repos}/update.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_sessions}/__init__.py +0 -0
- /machineconfig/{scripts/python/sessions_helpers → settings/wt}/__init__.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
- {machineconfig-6.23.dist-info → machineconfig-8.12.dist-info}/WHEEL +0 -0
- {machineconfig-6.23.dist-info → machineconfig-8.12.dist-info}/top_level.txt +0 -0
machineconfig/utils/code.py
CHANGED
|
@@ -1,109 +1,107 @@
|
|
|
1
|
-
import platform
|
|
2
|
-
from typing import Optional
|
|
3
|
-
import subprocess
|
|
4
|
-
import os
|
|
5
|
-
# import time
|
|
6
|
-
from rich.console import Console
|
|
7
|
-
from rich.panel import Panel
|
|
8
|
-
from rich.syntax import Syntax
|
|
9
1
|
|
|
2
|
+
from typing import Any, Literal, Optional, Callable, cast
|
|
10
3
|
from machineconfig.utils.accessories import randstr
|
|
11
|
-
from
|
|
12
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def get_shell_script_executing_python_file(python_file: str, func: Optional[str], ve_path: Optional[str], executable: Optional[str], strict_execution: bool = True):
|
|
16
|
-
if executable is None: exe_resolved = "python"
|
|
17
|
-
else: exe_resolved = executable
|
|
18
|
-
if func is None: exec_line = f"""{exe_resolved} {python_file}"""
|
|
19
|
-
else: exec_line = f"""{exe_resolved} -m fire {python_file} {func}"""
|
|
20
|
-
if ve_path is None: ve_activate_line = ""
|
|
21
|
-
else: ve_activate_line = get_ve_activate_line(ve_path)
|
|
22
|
-
shell_script = f"""
|
|
23
|
-
echo "Executing `{exec_line}`"
|
|
24
|
-
{ve_activate_line}
|
|
25
|
-
{exec_line}
|
|
26
|
-
deactivate || true
|
|
27
|
-
"""
|
|
28
|
-
if strict_execution:
|
|
29
|
-
if platform.system() == "Windows":
|
|
30
|
-
shell_script = """$ErrorActionPreference = "Stop" """ + "\n" + shell_script
|
|
31
|
-
if platform.system() in ["Linux", "Darwin"]:
|
|
32
|
-
shell_script = "set -e" + "\n" + shell_script
|
|
33
|
-
if platform.system() in ["Linux", "Darwin"]:
|
|
34
|
-
shell_script = "#!/bin/bash" + "\n" + shell_script # vs #!/usr/bin/env bash
|
|
35
|
-
return shell_script
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def get_shell_file_executing_python_script(python_script: str, ve_path: Optional[str], executable: Optional[str], verbose: bool = True):
|
|
39
|
-
if verbose:
|
|
40
|
-
python_script = f"""
|
|
41
|
-
code = r'''{python_script}'''
|
|
42
|
-
try:
|
|
43
|
-
from machineconfig.utils.utils import print_code
|
|
44
|
-
print_code(code=code, lexer="python", desc="Python Script")
|
|
45
|
-
except ImportError:
|
|
46
|
-
from rich.console import Console
|
|
47
|
-
from rich.panel import Panel
|
|
48
|
-
console = Console()
|
|
49
|
-
console.print(Panel(f'''📜 PYTHON SCRIPT:\n\n{{code}}''', title="Python Script", expand=False))
|
|
50
|
-
""" + python_script
|
|
51
|
-
python_file = PathExtended.tmp().joinpath("tmp_scripts", "python", randstr() + ".py")
|
|
52
|
-
python_file.parent.mkdir(parents=True, exist_ok=True)
|
|
53
|
-
python_file.write_text(python_script, encoding="utf-8")
|
|
54
|
-
shell_script = get_shell_script_executing_python_file(python_file=str(python_file), func=None, ve_path=ve_path, executable=executable)
|
|
55
|
-
shell_file = write_shell_script_to_file(shell_script)
|
|
56
|
-
return shell_file
|
|
4
|
+
from pathlib import Path
|
|
57
5
|
|
|
58
6
|
|
|
59
|
-
def
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
shell_file.write_text(shell_script, encoding="utf-8")
|
|
69
|
-
return shell_file
|
|
7
|
+
def get_uv_run_command(platform: str) -> str:
|
|
8
|
+
res = cast(Literal["Windows", "windows", "nt", "Linux", "linux", "Darwin", "darwin", "macos"], platform)
|
|
9
|
+
match res:
|
|
10
|
+
case "Windows" | "windows" | "nt":
|
|
11
|
+
return """& "$env:USERPROFILE/.local/bin/uv" run"""
|
|
12
|
+
case "Linux" | "linux" | "Darwin" | "darwin" | "macos":
|
|
13
|
+
return """$HOME/.local/bin/uv run"""
|
|
14
|
+
case _:
|
|
15
|
+
return """$HOME/.local/bin/uv run"""
|
|
70
16
|
|
|
17
|
+
def print_code(code: str, lexer: str, desc: str, subtitle: str = ""):
|
|
18
|
+
import platform
|
|
19
|
+
try:
|
|
20
|
+
from rich.console import Console
|
|
21
|
+
from rich.panel import Panel
|
|
22
|
+
from rich.syntax import Syntax
|
|
23
|
+
if lexer == "shell":
|
|
24
|
+
if platform.system() == "Windows":
|
|
25
|
+
lexer = "powershell"
|
|
26
|
+
elif platform.system() in ["Linux", "Darwin"]:
|
|
27
|
+
lexer = "sh"
|
|
28
|
+
else:
|
|
29
|
+
raise NotImplementedError(f"Platform {platform.system()} not supported for lexer {lexer}")
|
|
30
|
+
console = Console()
|
|
31
|
+
console.print(Panel(Syntax(code=code, lexer=lexer), title=f"📄 {desc}", subtitle=subtitle), style="bold red")
|
|
32
|
+
except ImportError:
|
|
33
|
+
print(f"--- {desc} ---")
|
|
34
|
+
print(code)
|
|
35
|
+
print(f"--- End of {desc} ---")
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def get_uv_command_executing_python_script(python_script: str, uv_with: Optional[list[str]], uv_project_dir: Optional[str],
|
|
39
|
+
prepend_print: bool = True) -> tuple[str, Path]:
|
|
40
|
+
# python file
|
|
41
|
+
python_file = Path.home().joinpath("tmp_results", "tmp_scripts", "python", randstr() + ".py")
|
|
42
|
+
python_file.parent.mkdir(parents=True, exist_ok=True)
|
|
43
|
+
if prepend_print:
|
|
44
|
+
from machineconfig.utils.meta import lambda_to_python_script
|
|
45
|
+
print_code_string = lambda_to_python_script(lambda: print_code(code=python_script, lexer="python", desc="Temporary Python Script", subtitle="Executing via shell script"),
|
|
46
|
+
in_global=True, import_module=False)
|
|
47
|
+
python_file.write_text(print_code_string + "\n" + python_script, encoding="utf-8")
|
|
48
|
+
else:
|
|
49
|
+
python_file.write_text(python_script, encoding="utf-8")
|
|
71
50
|
|
|
72
|
-
|
|
73
|
-
if
|
|
74
|
-
if
|
|
75
|
-
|
|
51
|
+
# shell script
|
|
52
|
+
if uv_with is not None and len(uv_with) > 0:
|
|
53
|
+
if prepend_print: uv_with.append("rich")
|
|
54
|
+
uv_with_arg = "--with " + '"' + ",".join(uv_with) + '"'
|
|
55
|
+
else:
|
|
56
|
+
if prepend_print:
|
|
57
|
+
uv_with_arg = "--with rich"
|
|
76
58
|
else:
|
|
77
|
-
|
|
78
|
-
if
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if result.stdout:
|
|
86
|
-
print(f"STDOUT: {result.stdout}")
|
|
87
|
-
if result.stderr:
|
|
88
|
-
print(f"STDERR: {result.stderr}")
|
|
89
|
-
print(f"Return code: {result.returncode}")
|
|
90
|
-
return None
|
|
59
|
+
uv_with_arg = ""
|
|
60
|
+
if uv_project_dir is not None:
|
|
61
|
+
uv_project_dir_arg = "--project" + f' "{uv_project_dir}"'
|
|
62
|
+
else:
|
|
63
|
+
uv_project_dir_arg = ""
|
|
64
|
+
import platform
|
|
65
|
+
uv_run = get_uv_run_command(platform=platform.system())
|
|
66
|
+
shell_script = f"""{uv_run} {uv_with_arg} {uv_project_dir_arg} {str(python_file)} """
|
|
91
67
|
|
|
68
|
+
return shell_script, python_file
|
|
92
69
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
70
|
+
|
|
71
|
+
def run_lambda_function(lmb: Callable[[], Any], uv_with: Optional[list[str]], uv_project_dir: Optional[str]) -> None:
|
|
72
|
+
from machineconfig.utils.meta import lambda_to_python_script
|
|
73
|
+
code = lambda_to_python_script(lmb,
|
|
74
|
+
in_global=True, import_module=False)
|
|
75
|
+
uv_command, _py_file = get_uv_command_executing_python_script(python_script=code, uv_with=uv_with, uv_project_dir=uv_project_dir)
|
|
76
|
+
run_shell_script(uv_command)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def run_python_script_in_marimo(py_script: str, uv_project_with: Optional[str]):
|
|
80
|
+
tmp_dir = Path.home().joinpath("tmp_results", "tmp_scripts", "marimo", randstr())
|
|
81
|
+
tmp_dir.mkdir(parents=True, exist_ok=True)
|
|
82
|
+
pyfile = tmp_dir / "marimo_db_explore.py"
|
|
83
|
+
pyfile.write_text(py_script, encoding="utf-8")
|
|
84
|
+
if uv_project_with is not None:
|
|
85
|
+
requirements = f"""--with "marimo" --project {uv_project_with} """
|
|
86
|
+
else:
|
|
87
|
+
requirements = """--with "marimo" """
|
|
88
|
+
fire_line = f"""
|
|
89
|
+
cd {tmp_dir}
|
|
90
|
+
uv run {requirements} marimo convert {pyfile.name} -o marimo_nb.py
|
|
91
|
+
bat marimo_nb.py
|
|
92
|
+
uv run {requirements} marimo edit --host 0.0.0.0 marimo_nb.py
|
|
93
|
+
"""
|
|
94
|
+
print_code(code=py_script, desc="Generated Marimo DB Explore Script", lexer="python")
|
|
95
|
+
exit_then_run_shell_script(fire_line)
|
|
103
96
|
|
|
104
97
|
|
|
105
98
|
def run_shell_script(script: str, display_script: bool = True, clean_env: bool = False):
|
|
106
99
|
import tempfile
|
|
100
|
+
import platform
|
|
101
|
+
from rich.console import Console
|
|
102
|
+
from rich.panel import Panel
|
|
103
|
+
from rich.syntax import Syntax
|
|
104
|
+
|
|
107
105
|
if platform.system() == "Windows":
|
|
108
106
|
suffix = ".ps1"
|
|
109
107
|
lexer = "powershell"
|
|
@@ -112,97 +110,75 @@ def run_shell_script(script: str, display_script: bool = True, clean_env: bool =
|
|
|
112
110
|
lexer = "bash"
|
|
113
111
|
with tempfile.NamedTemporaryFile(mode='w', suffix=suffix, delete=False, encoding='utf-8') as temp_file:
|
|
114
112
|
temp_file.write(script)
|
|
115
|
-
|
|
113
|
+
temp_shell_script_path = Path(temp_file.name)
|
|
116
114
|
console = Console()
|
|
117
115
|
if display_script:
|
|
118
116
|
from rich.syntax import Syntax
|
|
119
|
-
console.print(Panel(Syntax(code=script, lexer=lexer), title=f"📄 shell script @ {
|
|
117
|
+
console.print(Panel(Syntax(code=script, lexer=lexer), title=f"📄 shell script @ {temp_shell_script_path}", subtitle="shell script being executed"), style="bold red")
|
|
120
118
|
env = {} if clean_env else None
|
|
121
119
|
if platform.system() == "Windows":
|
|
122
120
|
import subprocess
|
|
123
|
-
proc = subprocess.run(f'powershell -ExecutionPolicy Bypass -File "{
|
|
121
|
+
proc = subprocess.run(f'powershell -ExecutionPolicy Bypass -File "{temp_shell_script_path}"', check=True, shell=True, env=env)
|
|
124
122
|
elif platform.system() == "Linux" or platform.system() == "Darwin":
|
|
125
123
|
import subprocess
|
|
126
|
-
proc = subprocess.run(f"bash {str(
|
|
124
|
+
proc = subprocess.run(f"bash {str(temp_shell_script_path)}", check=True, shell=True, env=env)
|
|
127
125
|
else:
|
|
128
126
|
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
129
127
|
# console.print(f"✅ [green]Script executed successfully:[/green] [blue]{temp_script_path}[/blue]")
|
|
130
128
|
if proc.returncode != 0:
|
|
131
|
-
console.print(f"❌ [red]Script execution failed with return code {proc.returncode}:[/red] [blue]{
|
|
129
|
+
console.print(f"❌ [red]Script execution failed with return code {proc.returncode}:[/red] [blue]{temp_shell_script_path}[/blue]")
|
|
132
130
|
elif proc.returncode == 0:
|
|
133
|
-
console.print(f"✅ [green]Script executed successfully:[/green] [blue]{
|
|
131
|
+
console.print(f"✅ [green]Script executed successfully:[/green] [blue]{temp_shell_script_path}[/blue]")
|
|
134
132
|
else:
|
|
135
|
-
console.print(f"⚠️ [yellow]Script executed with warnings (return code {proc.returncode}):[/yellow] [blue]{
|
|
136
|
-
|
|
137
|
-
console.print(f"🗑️ [blue]Temporary script deleted:[/blue] [green]{
|
|
133
|
+
console.print(f"⚠️ [yellow]Script executed with warnings (return code {proc.returncode}):[/yellow] [blue]{temp_shell_script_path}[/blue]")
|
|
134
|
+
temp_shell_script_path.unlink(missing_ok=True)
|
|
135
|
+
console.print(f"🗑️ [blue]Temporary script deleted:[/blue] [green]{temp_shell_script_path}[/green]")
|
|
138
136
|
return proc
|
|
139
137
|
|
|
140
138
|
|
|
141
|
-
def
|
|
142
|
-
|
|
143
|
-
console
|
|
139
|
+
def exit_then_run_shell_script(script: str, strict: bool = False):
|
|
140
|
+
import os
|
|
141
|
+
from rich.console import Console
|
|
144
142
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
Write-Host "🔍 Monitoring process PID: $targetPid"
|
|
151
|
-
|
|
152
|
-
while ($true) {{
|
|
153
|
-
$process = Get-Process -Id $targetPid -ErrorAction SilentlyContinue
|
|
154
|
-
if (-not $process) {{
|
|
155
|
-
Write-Host "✅ Process $targetPid has exited. Running script..."
|
|
156
|
-
break
|
|
157
|
-
}}
|
|
158
|
-
Start-Sleep -Seconds $checkInterval
|
|
159
|
-
}}
|
|
160
|
-
|
|
161
|
-
# Execute the provided script
|
|
162
|
-
{script}
|
|
163
|
-
"""
|
|
164
|
-
suffix = ".ps1"
|
|
165
|
-
cmd = ["powershell", "-ExecutionPolicy", "Bypass", "-NoProfile", "-WindowStyle", "Hidden", "-File"]
|
|
143
|
+
console = Console()
|
|
144
|
+
op_program_path = os.environ.get("OP_PROGRAM_PATH", None)
|
|
145
|
+
if op_program_path is not None:
|
|
146
|
+
exists = Path(op_program_path).exists()
|
|
166
147
|
else:
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
""
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
cmd.append(str(monitor_script_path))
|
|
197
|
-
|
|
198
|
-
if platform.system() == "Windows":
|
|
199
|
-
creation_flags = subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.DETACHED_PROCESS # type: ignore
|
|
200
|
-
process = subprocess.Popen(cmd, creationflags=creation_flags, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.DEVNULL)
|
|
148
|
+
exists = False
|
|
149
|
+
# three cases: (op_program_path is None, exists=False), (op_program_path is set, exists=False), (op_program_path is set, exists=True)
|
|
150
|
+
|
|
151
|
+
if strict: # we want to assert op_program_path is set and is not an already existing file
|
|
152
|
+
if (op_program_path is None or exists):
|
|
153
|
+
import platform
|
|
154
|
+
if platform.system() == "Windows":
|
|
155
|
+
suffix = ".ps1"
|
|
156
|
+
lexer = "powershell"
|
|
157
|
+
else:
|
|
158
|
+
suffix = ".sh"
|
|
159
|
+
lexer = "bash"
|
|
160
|
+
op_program_path = Path.home().joinpath("tmp_results", "tmp_scripts", "manual_run", f"manual_script_{randstr()}{suffix}")
|
|
161
|
+
op_program_path.parent.mkdir(parents=True, exist_ok=True)
|
|
162
|
+
op_program_path.write_text(script, encoding="utf-8")
|
|
163
|
+
print_code(code=script, lexer=lexer, desc="script to run manually")
|
|
164
|
+
console.print("[bold yellow]⚠️ STRICT MODE:[/bold yellow] [cyan]Please run the script manually via your shell by executing:[/cyan]")
|
|
165
|
+
console.print(f"[green]{str(op_program_path)}[/green]")
|
|
166
|
+
console.print("[red]❌ OP_PROGRAM_PATH environment variable is not set in strict mode.[/red]")
|
|
167
|
+
import sys
|
|
168
|
+
sys.exit(1)
|
|
169
|
+
|
|
170
|
+
if op_program_path is not None and not exists:
|
|
171
|
+
op_program_path = Path(op_program_path)
|
|
172
|
+
op_program_path.parent.mkdir(parents=True, exist_ok=True)
|
|
173
|
+
op_program_path.write_text(script, encoding="utf-8")
|
|
174
|
+
console.print("[cyan]🚀 Handing over to shell script runner via OP_PROGRAM_PATH:[/cyan]")
|
|
175
|
+
console.print(f"[bold green]{str(op_program_path)}[/bold green]")
|
|
176
|
+
print_code(code=script, lexer="shell", desc="script to run via OP_PROGRAM_PATH")
|
|
201
177
|
else:
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
178
|
+
if op_program_path is not None and exists:
|
|
179
|
+
console.print(f"[yellow]⚠️ OP_PROGRAM_PATH @ {str(op_program_path)} already exists.[/yellow] [cyan]Falling back to direct execution.[/cyan]")
|
|
180
|
+
elif op_program_path is None:
|
|
181
|
+
console.print("[cyan]ℹ️ OP_PROGRAM_PATH is not set.[/cyan] [yellow]Falling back to direct execution.[/yellow]")
|
|
182
|
+
run_shell_script(script)
|
|
183
|
+
import sys
|
|
184
|
+
sys.exit(0)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
_ ___ /^^\ /^\ /^^\_
|
|
2
|
+
_ _@)@) \ ,,/ '` ~ `'~~ ', `\.
|
|
3
|
+
_/o\_ _ _ _/~`.`...'~\ ./~~..,'`','',.,' ' ~:
|
|
4
|
+
/ `,'.~,~.~ . , . , ~|, ,/ .,' , ,. .. ,,. `, ~\_
|
|
5
|
+
( ' _' _ '_` _ ' . , `\_/ .' ..' ' ` ` `.. `, \_
|
|
6
|
+
~V~ V~ V~ V~ ~\ ` ' . ' , ' .,.,''`.,.''`.,.``. ', \_
|
|
7
|
+
_/\ /\ /\ /\_/, . ' , `_/~\_ .' .,. ,, , _/~\_ `. `. '., \_
|
|
8
|
+
< ~ ~ '~`'~'`, ., . `_: ::: \_ ' `_/ ::: \_ `.,' . ', \_
|
|
9
|
+
\ ' `_ '`_ _ ',/ _::_::_ \ _ _/ _::_::_ \ `.,'.,`., \-,-,-,_,_,
|
|
10
|
+
`'~~ `'~~ `'~~ `'~~ \(_)(_)(_)/ `~~' \(_)(_)(_)/ ~'`\_.._,._,'_;_;_;_;_;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
.--. .--.
|
|
2
|
+
/ \/ \
|
|
3
|
+
| .-. .-. \
|
|
4
|
+
|/_ |/_ | \
|
|
5
|
+
|| `\|| `\| `----.
|
|
6
|
+
|\0_/ \0_/ --, \_
|
|
7
|
+
.--"""""-. / (` \ `-.
|
|
8
|
+
/ \-----'-. \ \
|
|
9
|
+
\ () () /`\ \
|
|
10
|
+
| .___.-' | \
|
|
11
|
+
\ /` \| / ;
|
|
12
|
+
`-.___ ___.' .-.`.---.| \
|
|
13
|
+
\| ``-..___,.-'`\| / / / | `\
|
|
14
|
+
` \| ,`/ / / , /
|
|
15
|
+
` |\ / / |\/
|
|
16
|
+
, .'`-; ' \/
|
|
17
|
+
, |\-' .' , .-'`
|
|
18
|
+
.-|\--;`` .-' |\.'
|
|
19
|
+
( `"'-.|\ (___,.--'`'
|
|
20
|
+
`-. `"` _.--'
|
|
21
|
+
`. _.-'`-.
|
|
22
|
+
`''---''`` `."
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
_.---._ .---.
|
|
2
|
+
__...---' .---. `---'-. `.
|
|
3
|
+
~ -~ -.-''__.--' _.'( | )`. `. `._ :
|
|
4
|
+
-.~~ .'__-'_ .--'' ._`---'_.-. `. `-`.
|
|
5
|
+
~ ~_~-~-~_ ~ -._ -._``---. -. `-._ `.
|
|
6
|
+
~- ~ ~ -_ -~ ~ -.._ _ _ _ ..-_ `. `-._``--.._
|
|
7
|
+
~~-~ ~-_ _~ ~-~ ~ -~ _~~_-~ -._ `-. -. `-._``--.._.--''. ~ -~_
|
|
8
|
+
~~ -~_-~ _~- _~~ _~-_~ ~-_~~ ~-.___ -._ `-.__ `. `. ~ -_~
|
|
9
|
+
~~ _~- ~~- -_~ ~- ~ - _~~- _~~ ~---...__ _ ._ .` `. ~-_~
|
|
10
|
+
~ ~- _~~- _-_~ ~-_ ~-~ ~_-~ _~- ~_~-_~ ~--.....--~ -~_ ~
|
|
11
|
+
~ ~ - ~ ~ ~~ - ~~- ~~- ~- ~ -~ ~ ~ -~~- ~- ~-~
|
|
@@ -62,7 +62,7 @@ def get_art(comment: Optional[str] = None, artlib: Optional[BOX_OR_CHAR] = None,
|
|
|
62
62
|
try:
|
|
63
63
|
comment = subprocess.run("fortune", shell=True, capture_output=True, text=True, check=True).stdout
|
|
64
64
|
except Exception:
|
|
65
|
-
comment = "
|
|
65
|
+
comment = "machineconfig"
|
|
66
66
|
if artlib is None: artlib = random.choice(['boxes', 'cowsay'])
|
|
67
67
|
to_file = '' if not file else f'> {file}'
|
|
68
68
|
if artlib == 'boxes':
|
|
@@ -6,7 +6,6 @@ import random
|
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
from rich import pretty
|
|
8
8
|
from rich.console import Console
|
|
9
|
-
from typing import Optional
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
def print_header():
|
|
@@ -26,8 +25,9 @@ def print_header():
|
|
|
26
25
|
table.add_row("Virtual Environment", os.getenv('VIRTUAL_ENV', 'None'))
|
|
27
26
|
table.add_row("Running @", str(Path.cwd()))
|
|
28
27
|
|
|
28
|
+
from machineconfig.utils.installer_utils.installer_runner import get_machineconfig_version
|
|
29
29
|
|
|
30
|
-
console.print(Panel(table, title="[bold blue]✨ 🐊
|
|
30
|
+
console.print(Panel(table, title=f"[bold blue]✨ 🐊 Machineconfig Shell {get_machineconfig_version()} ✨ Made with 🐍 | Built with ❤️[/bold blue]", border_style="blue"))
|
|
31
31
|
def print_logo(logo: str):
|
|
32
32
|
from machineconfig.utils.files.ascii_art import font_box_color, character_color, character_or_box_color
|
|
33
33
|
if platform.system() == "Windows":
|
|
@@ -38,18 +38,13 @@ def print_logo(logo: str):
|
|
|
38
38
|
if random.choice([True, True, False]): font_box_color(logo)
|
|
39
39
|
else: character_color(logo)
|
|
40
40
|
else:
|
|
41
|
-
print("\n" + "🚫 " + "-" * 70 + " 🚫")
|
|
42
|
-
print("🔍 Missing ASCII art dependencies. Install with: iwr bit.ly/cfgasciiartwindows | iex")
|
|
43
|
-
print("🚫 " + "-" * 70 + " 🚫\n")
|
|
41
|
+
# print("\n" + "🚫 " + "-" * 70 + " 🚫")
|
|
42
|
+
# print("🔍 Missing ASCII art dependencies. Install with: iwr bit.ly/cfgasciiartwindows | iex")
|
|
43
|
+
# print("🚫 " + "-" * 70 + " 🚫\n")
|
|
44
44
|
_default_art = Path(random.choice(glob.glob(str(Path(__file__).parent.joinpath("art", "*")))))
|
|
45
45
|
print(_default_art.read_text())
|
|
46
46
|
elif platform.system() in ["Linux", "Darwin"]: # Explicitly handle both Linux and macOS
|
|
47
|
-
|
|
48
|
-
path_dirs = os.environ['PATH'].split(os.pathsep)
|
|
49
|
-
for path_dir in path_dirs:
|
|
50
|
-
path_to_executable = os.path.join(path_dir, executable_name)
|
|
51
|
-
if os.path.isfile(path_to_executable) and os.access(path_to_executable, os.X_OK): return path_to_executable
|
|
52
|
-
return None
|
|
47
|
+
from machineconfig.utils.installer_utils.installer_locator_utils import is_executable_in_path
|
|
53
48
|
avail_cowsay = is_executable_in_path("cowsay")
|
|
54
49
|
avail_lolcat = is_executable_in_path("lolcat")
|
|
55
50
|
avail_boxes = is_executable_in_path("boxes")
|
|
@@ -37,17 +37,11 @@ class Read:
|
|
|
37
37
|
raise ImportError(err) from err2
|
|
38
38
|
@staticmethod
|
|
39
39
|
def json(path: 'Path', r: bool = False, **kwargs: Any) -> Any: # return could be list or dict etc
|
|
40
|
-
import
|
|
41
|
-
|
|
42
|
-
mydict = json.loads(Path(path).read_text(encoding='utf-8'), **kwargs)
|
|
43
|
-
except Exception:
|
|
44
|
-
import pyjson5
|
|
45
|
-
mydict = pyjson5.loads(Path(path).read_text(encoding='utf-8'), **kwargs) # file has C-style comments.
|
|
46
|
-
_ = r
|
|
47
|
-
return mydict
|
|
40
|
+
from machineconfig.utils.io import read_json
|
|
41
|
+
return read_json(path, r=r, **kwargs)
|
|
48
42
|
@staticmethod
|
|
49
43
|
def yaml(path: 'Path', r: bool = False) -> Any: # return could be list or dict etc
|
|
50
|
-
import yaml
|
|
44
|
+
import yaml
|
|
51
45
|
with open(str(path), "r", encoding="utf-8") as file:
|
|
52
46
|
mydict = yaml.load(file, Loader=yaml.FullLoader)
|
|
53
47
|
_ = r
|