machineconfig 7.98__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/run_cluster.py +1 -1
- machineconfig/cluster/remote/run_remote.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +10 -8
- machineconfig/cluster/sessions_managers/wt_local.py +1 -1
- machineconfig/cluster/sessions_managers/wt_local_manager.py +1 -1
- machineconfig/cluster/sessions_managers/zellij_local.py +1 -1
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +1 -1
- 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 +271 -152
- machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
- machineconfig/jobs/installer/package_groups.py +11 -9
- machineconfig/jobs/installer/{custom → python_scripts}/boxes.py +1 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/brave.py +1 -1
- machineconfig/jobs/installer/{custom_dev → python_scripts}/code.py +10 -8
- machineconfig/jobs/installer/{custom → python_scripts}/hx.py +30 -13
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +1 -1
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +6 -5
- machineconfig/jobs/installer/{custom_dev → python_scripts}/sysabc.py +26 -20
- machineconfig/jobs/installer/{custom_dev → python_scripts}/wezterm.py +1 -1
- machineconfig/jobs/installer/{custom → python_scripts}/yazi.py +39 -19
- 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 -1
- machineconfig/profile/create_helper.py +21 -10
- machineconfig/profile/create_links.py +77 -20
- machineconfig/profile/create_links_export.py +63 -58
- machineconfig/profile/create_shell_profile.py +14 -0
- machineconfig/profile/mapper_data.toml +45 -0
- machineconfig/profile/mapper_dotfiles.toml +249 -0
- machineconfig/scripts/python/agents.py +76 -171
- machineconfig/scripts/python/ai/initai.py +3 -1
- machineconfig/scripts/python/ai/scripts/__init__.py +1 -0
- 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/github_copilot.py +1 -1
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +29 -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/{solutions → utils}/generic.py +2 -15
- machineconfig/scripts/python/ai/utils/vscode_tasks.py +6 -3
- machineconfig/scripts/python/cloud.py +58 -11
- machineconfig/scripts/python/croshell.py +4 -155
- machineconfig/scripts/python/devops.py +57 -38
- machineconfig/scripts/python/devops_navigator.py +17 -3
- machineconfig/scripts/python/fire_jobs.py +10 -193
- machineconfig/scripts/python/ftpx.py +5 -224
- 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/{env_manager → helpers/helper_env}/env_manager_tui.py +1 -1
- machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
- machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_crush.py +1 -1
- machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_cursor_agents.py +1 -1
- machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_gemini.py +1 -1
- machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_qwen.py +1 -1
- machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
- machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/fire_agents_help_launch.py +10 -7
- 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_agents → helpers/helpers_agents}/templates/template.sh +3 -1
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_copy.py +6 -6
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_mount.py +10 -5
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_sync.py +4 -4
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers2.py +1 -1
- 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 +7 -6
- 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_devops → helpers/helpers_devops}/cli_nw.py +69 -82
- machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +274 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_self.py +47 -22
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_share_file.py +44 -30
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_share_server.py +26 -43
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_share_terminal.py +12 -6
- machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +167 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_status.py +12 -6
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_update_repos.py +1 -1
- machineconfig/scripts/python/{interactive.py → helpers/helpers_devops/interactive.py} +64 -50
- 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 +3 -3
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/file_wrangler.py +1 -0
- 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 +3 -3
- machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +248 -0
- machineconfig/scripts/python/{helpers_msearch → helpers/helpers_msearch}/scripts_linux/fzfg +4 -3
- machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
- machineconfig/scripts/python/{helpers_msearch → helpers/helpers_msearch}/scripts_windows/fzfg.ps1 +1 -1
- 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_network → helpers/helpers_network}/address.py +52 -10
- 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/{helpers_network → helpers/helpers_network}/mount_ssh.py +2 -2
- 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/{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}/cloud_repo_sync.py +118 -34
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/grource.py +3 -2
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/record.py +33 -13
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/repo_analyzer_2.py +63 -19
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/update.py +0 -6
- machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -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 +1 -2
- 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_utils → helpers/helpers_utils}/download.py +1 -1
- machineconfig/scripts/python/{helpers_devops/cli_utils.py → helpers/helpers_utils/pdf.py} +2 -2
- machineconfig/scripts/python/{helpers_utils/path.py → helpers/helpers_utils/python.py} +65 -40
- machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
- machineconfig/scripts/python/mcfg_entry.py +133 -48
- machineconfig/scripts/python/msearch.py +16 -61
- machineconfig/scripts/python/sessions.py +68 -203
- machineconfig/scripts/python/terminal.py +27 -102
- machineconfig/scripts/python/utils.py +101 -22
- machineconfig/settings/atuin/config.toml +294 -0
- machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
- machineconfig/settings/linters/.ruff.toml +2 -1
- machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
- machineconfig/settings/shells/bash/init.sh +6 -3
- machineconfig/settings/shells/nushell/config.nu +23 -1
- machineconfig/settings/shells/nushell/env.nu +22 -48
- machineconfig/settings/shells/nushell/init.nu +64 -240
- machineconfig/settings/shells/pwsh/init.ps1 +69 -1
- machineconfig/settings/shells/pwsh/search_pwsh_history.ps1 +99 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +4 -1
- machineconfig/settings/shells/wt/settings.json +21 -21
- machineconfig/settings/shells/zsh/init.sh +25 -4
- machineconfig/settings/television/cable_unix/bash-history.toml +1 -1
- machineconfig/settings/television/cable_windows/pwsh-history.toml +1 -1
- 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/yazi_linux.toml +18 -8
- machineconfig/settings/zellij/layouts/st.kdl +40 -9
- machineconfig/settings/zellij/layouts/st2.kdl +1 -1
- machineconfig/setup_linux/__init__.py +0 -1
- machineconfig/setup_linux/apps_desktop.sh +8 -27
- machineconfig/setup_linux/web_shortcuts/interactive.sh +10 -10
- machineconfig/setup_linux/web_shortcuts/live_from_github.sh +3 -0
- machineconfig/setup_mac/__init__.py +0 -2
- machineconfig/setup_windows/__init__.py +2 -5
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +14 -13
- machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +4 -3
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +3 -3
- 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 +24 -0
- machineconfig/utils/code.py +78 -33
- machineconfig/utils/files/ascii_art.py +10 -14
- machineconfig/utils/files/headers.py +3 -5
- machineconfig/utils/files/read.py +8 -1
- machineconfig/utils/installer_utils/github_release_bulk.py +11 -91
- machineconfig/utils/installer_utils/github_release_scraper.py +99 -0
- machineconfig/utils/installer_utils/install_from_url.py +1 -1
- machineconfig/utils/installer_utils/installer_class.py +12 -4
- machineconfig/utils/installer_utils/installer_cli.py +1 -15
- machineconfig/utils/installer_utils/installer_helper.py +2 -2
- machineconfig/utils/installer_utils/installer_locator_utils.py +13 -13
- machineconfig/utils/installer_utils/installer_runner.py +4 -4
- machineconfig/utils/io.py +25 -8
- machineconfig/utils/meta.py +6 -4
- machineconfig/utils/options.py +49 -19
- 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 +8 -7
- machineconfig/utils/scheduler.py +8 -2
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
- machineconfig/utils/source_of_truth.py +6 -1
- machineconfig/utils/ssh.py +73 -23
- machineconfig/utils/ssh_utils/abc.py +1 -1
- machineconfig/utils/ssh_utils/copy_from_here.py +19 -14
- machineconfig/utils/ssh_utils/copy_to_here.py +2 -1
- machineconfig/utils/ssh_utils/utils.py +23 -7
- machineconfig/utils/ssh_utils/wsl.py +107 -170
- machineconfig/utils/ssh_utils/wsl_helper.py +217 -0
- machineconfig/utils/upgrade_packages.py +4 -8
- {machineconfig-7.98.dist-info → machineconfig-8.51.dist-info}/METADATA +30 -22
- machineconfig-8.51.dist-info/RECORD +543 -0
- machineconfig/jobs/installer/check_installations.py +0 -248
- machineconfig/profile/backup.toml +0 -49
- machineconfig/profile/mapper.toml +0 -263
- machineconfig/scripts/linux/other/switch_ip +0 -20
- machineconfig/scripts/python/helpers/run_py_script.py +0 -79
- machineconfig/scripts/python/helpers/tmp_py_scripts/a.py +0 -26
- machineconfig/scripts/python/helpers_devops/cli_config.py +0 -105
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -89
- machineconfig/scripts/python/helpers_devops/cli_data.py +0 -25
- machineconfig/scripts/python/helpers_devops/cli_repos.py +0 -215
- 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_navigator/__init__.py +0 -20
- machineconfig/scripts/python/helpers_navigator/command_detail.py +0 -44
- machineconfig/scripts/python/helpers_navigator/command_tree.py +0 -620
- machineconfig/scripts/python/helpers_network/devops_add_identity.py +0 -82
- machineconfig/scripts/python/helpers_network/devops_add_ssh_key.py +0 -153
- machineconfig/scripts/python/helpers_network/ssh_debug_linux.py +0 -391
- machineconfig/scripts/python/helpers_network/ssh_debug_windows.py +0 -338
- machineconfig/scripts/python/helpers_network/wsl_windows_transfer.py +0 -67
- machineconfig/scripts/python/helpers_repos/entrypoint.py +0 -77
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -13
- 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/ssh/openssh_setup.sh +0 -114
- 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/setup_windows/ssh/openssh-server_add_key.ps1 +0 -7
- machineconfig/setup_windows/ssh/openssh-server_copy-ssh-id.ps1 +0 -14
- machineconfig/utils/options_tv.py +0 -119
- machineconfig/utils/tst.py +0 -20
- machineconfig-7.98.dist-info/RECORD +0 -504
- /machineconfig/jobs/installer/{custom_dev → checks}/__init__.py +0 -0
- /machineconfig/{scripts/python/helpers_agents → 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}/cloudflare_warp_cli.py +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/cursor.py +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.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/jobs/installer/{custom_dev → python_scripts}/winget.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/helpers_network → jobs/scripts/bash_scripts}/mount_drive +0 -0
- /machineconfig/{scripts/python/helpers_network → jobs/scripts/bash_scripts}/mount_nfs +0 -0
- /machineconfig/{scripts/python/helpers_network → jobs/scripts/bash_scripts}/mount_nw_drive +0 -0
- /machineconfig/{scripts/python/helpers_network → 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/windows/mounts → 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/ai/{solutions/_shared.py → utils/shared.py} +0 -0
- /machineconfig/scripts/python/{helpers_agents/agentic_frameworks → graph}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_cloud → 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_croshell → helpers/helpers_agents}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_devops → helpers/helpers_agents/agentic_frameworks}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/agentic_frameworks/fire_crush.json +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/fire_agents_help_search.py +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/fire_agents_helper_types.py +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/fire_agents_load_balancer.py +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/templates/prompt.txt +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/templates/template.ps1 +0 -0
- /machineconfig/scripts/python/{helpers_devops/themes → helpers/helpers_cloud}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_helpers.py +0 -0
- /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers5.py +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/crosh.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/{helpers_network → helpers/helpers_devops}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_sessions → helpers/helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → scripts/python/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 → helpers/helpers_fire_command}/f.py +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_streamlit_helper.py +0 -0
- /machineconfig/scripts/python/{helpers_msearch → helpers/helpers_msearch}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/search_bar.py +0 -0
- /machineconfig/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_network/__init__.py} +0 -0
- /machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/mount_nfs.py +0 -0
- /machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/mount_nw_drive.py +0 -0
- /machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/onetimeshare.py +0 -0
- /machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/wifi_conn.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/clone.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/repo_analyzer_1.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/sync.py +0 -0
- /machineconfig/scripts/python/helpers/{ast_search.py → helpers_search/ast_search.py} +0 -0
- /machineconfig/scripts/python/helpers/{qr_code.py → helpers_search/qr_code.py} +0 -0
- /machineconfig/scripts/python/helpers/{repo_rag.py → helpers_search/repo_rag.py} +0 -0
- /machineconfig/scripts/python/helpers/{symantic_search.py → helpers_search/symantic_search.py} +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
- {machineconfig-7.98.dist-info → machineconfig-8.51.dist-info}/WHEEL +0 -0
- {machineconfig-7.98.dist-info → machineconfig-8.51.dist-info}/entry_points.txt +0 -0
- {machineconfig-7.98.dist-info → machineconfig-8.51.dist-info}/top_level.txt +0 -0
|
@@ -2,17 +2,6 @@
|
|
|
2
2
|
"""
|
|
3
3
|
Interactive Machine Configuration Setup Script
|
|
4
4
|
|
|
5
|
-
A Python version of the interactive installation script that uses questionary
|
|
6
|
-
for better user experience with checkbox selections.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# echo # 📧 Thunderbird Setup Note:
|
|
10
|
-
# Run after installing Thunderbird and starting it once:
|
|
11
|
-
# cd ~/AppData/Roaming/ThunderBird/Profiles
|
|
12
|
-
# $res = ls
|
|
13
|
-
# $name = $res[0].Name
|
|
14
|
-
# mv $backup_folder $name
|
|
15
|
-
#
|
|
16
5
|
|
|
17
6
|
|
|
18
7
|
"""
|
|
@@ -63,31 +52,6 @@ def display_header() -> None:
|
|
|
63
52
|
console.print()
|
|
64
53
|
console.print(Align.center(Text(bug_report, style="dim white")))
|
|
65
54
|
console.print()
|
|
66
|
-
def display_completion_message() -> None:
|
|
67
|
-
completion_text = Text("INSTALLATION COMPLETE", style="bold green")
|
|
68
|
-
subtitle_text = Text("System setup finished successfully", style="italic green")
|
|
69
|
-
console.print(Panel(f"✨ {completion_text}\n{subtitle_text}\n\n🎉 Your system has been configured successfully!\n🔄 You may need to reboot to apply all changes.", border_style="green", padding=(1, 2)))
|
|
70
|
-
def display_dotfiles_instructions() -> None:
|
|
71
|
-
header_text = Text("DOTFILES MIGRATION", style="bold yellow")
|
|
72
|
-
subtitle_text = Text("Configuration transfer options", style="italic yellow")
|
|
73
|
-
instructions = """
|
|
74
|
-
🖱️ [bold blue]Method 1: USING MOUSE WITHOUT KB OR BROWSER SHARE[/bold blue]
|
|
75
|
-
On original machine, run:
|
|
76
|
-
[dim]cd ~/dotfiles/creds/msc
|
|
77
|
-
easy-sharing . --password rew --username al[/dim]
|
|
78
|
-
Then open brave on new machine to get MouseWithoutBorders password
|
|
79
|
-
|
|
80
|
-
🔐 [bold blue]Method 2: USING SSH[/bold blue]
|
|
81
|
-
FROM REMOTE, RUN:
|
|
82
|
-
[dim]fptx ~/dotfiles $USER@$(hostname):^ -z
|
|
83
|
-
# OR, using IP address if router has not yet found the hostname:
|
|
84
|
-
fptx ~/dotfiles $USER@$(hostname -I | awk '{print $1}'):^ -z[/dim]
|
|
85
|
-
|
|
86
|
-
☁️ [bold blue]Method 3: USING INTERNET SECURE SHARE[/bold blue]
|
|
87
|
-
[dim]cd ~
|
|
88
|
-
cloud_copy SHARE_URL . --config ss[/dim]
|
|
89
|
-
(requires symlinks to be created first)"""
|
|
90
|
-
console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
|
|
91
55
|
|
|
92
56
|
|
|
93
57
|
def get_installation_choices() -> list[str]:
|
|
@@ -117,12 +81,12 @@ def execute_installations(selected_options: list[str]) -> None:
|
|
|
117
81
|
except Exception as e:
|
|
118
82
|
console.print(f"❌ Error installing CLI applications: {e}", style="bold red")
|
|
119
83
|
if platform.system() != "Windows":
|
|
120
|
-
run_shell_script(". $HOME/.bashrc")
|
|
84
|
+
run_shell_script(". $HOME/.bashrc", display_script=True, clean_env=False)
|
|
121
85
|
|
|
122
86
|
if "install_machineconfig" in selected_options:
|
|
123
87
|
console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
|
|
124
|
-
from machineconfig.scripts.python.helpers_devops.cli_self import install
|
|
125
|
-
install()
|
|
88
|
+
from machineconfig.scripts.python.helpers.helpers_devops.cli_self import install
|
|
89
|
+
install(copy_assets=True, dev=False)
|
|
126
90
|
|
|
127
91
|
if "install_ssh_server" in selected_options:
|
|
128
92
|
console.print(Panel("🔒 [bold red]SSH SERVER[/bold red]\n[italic]Remote access setup[/italic]", border_style="red"))
|
|
@@ -131,9 +95,9 @@ def execute_installations(selected_options: list[str]) -> None:
|
|
|
131
95
|
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
|
|
132
96
|
Start-Service sshd
|
|
133
97
|
Set-Service -Name sshd -StartupType 'Automatic'"""
|
|
134
|
-
run_shell_script(f'powershell -Command "{powershell_script}"')
|
|
98
|
+
run_shell_script(f'powershell -Command "{powershell_script}"', display_script=True, clean_env=False)
|
|
135
99
|
else:
|
|
136
|
-
run_shell_script("sudo nala install openssh-server -y")
|
|
100
|
+
run_shell_script("sudo nala install openssh-server -y", display_script=True, clean_env=False)
|
|
137
101
|
|
|
138
102
|
if "install_shell_profile" in selected_options:
|
|
139
103
|
console.print(Panel("🐚 [bold green]SHELL PROFILE[/bold green]\n[italic]Shell configuration setup[/italic]", border_style="green"))
|
|
@@ -142,27 +106,71 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
|
|
|
142
106
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
143
107
|
create_default_shell_profile()
|
|
144
108
|
console.print("✅ Shell profile configured successfully", style="bold green")
|
|
145
|
-
from machineconfig.profile.create_links_export import
|
|
146
|
-
|
|
109
|
+
from machineconfig.profile.create_links_export import main_from_parser
|
|
110
|
+
main_from_parser(sensitivity="public", method="copy", on_conflict="overwrite-default-path", which="all")
|
|
147
111
|
if platform.system() == "Windows":
|
|
148
|
-
from machineconfig.jobs.installer.
|
|
112
|
+
from machineconfig.jobs.installer.python_scripts.nerfont_windows_helper import install_nerd_fonts
|
|
149
113
|
install_nerd_fonts()
|
|
150
|
-
from machineconfig.
|
|
114
|
+
from machineconfig.settings.wt.set_wt_settings import main as set_wt_settings_main
|
|
151
115
|
set_wt_settings_main()
|
|
152
116
|
except Exception as e:
|
|
153
117
|
console.print(f"❌ Error configuring shell profile: {e}", style="bold red")
|
|
154
118
|
|
|
119
|
+
if "retrieve_repositories" in selected_options or "retrieve_data" in selected_options:
|
|
120
|
+
# we cannot proceed before dotfiles are in place
|
|
121
|
+
if Path.home().joinpath("dotfiles").exists():
|
|
122
|
+
console.print("✅ Dotfiles directory found.", style="bold green")
|
|
123
|
+
else:
|
|
124
|
+
header_text = Text("DOTFILES MIGRATION", style="bold yellow")
|
|
125
|
+
subtitle_text = Text("Configuration transfer options", style="italic yellow")
|
|
126
|
+
instructions = """
|
|
127
|
+
On remote, run:
|
|
128
|
+
devops config export-dotfiles --password pwd
|
|
129
|
+
On new machine, run:
|
|
130
|
+
devops config import-dotfiles --password pwd
|
|
131
|
+
"""
|
|
132
|
+
console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
|
|
133
|
+
i_sorted_it_out = "I have sorted out dotfiles migration already and want to proceed."
|
|
134
|
+
exit_now = "Exit now and sort out dotfiles migration first."
|
|
135
|
+
fetch_over_lan = "I already exposed dotfiles over LAN, let's fetch them now."
|
|
136
|
+
fetch_over_ssh = "I wanted to bring them using SSH SCP now."
|
|
137
|
+
options: list[str] = [
|
|
138
|
+
i_sorted_it_out,
|
|
139
|
+
exit_now,
|
|
140
|
+
fetch_over_lan,
|
|
141
|
+
fetch_over_ssh,
|
|
142
|
+
]
|
|
143
|
+
answer = questionary.select("⚠️ DOTFILES NOT FOUND. How do you want to proceed?", choices=options).ask()
|
|
144
|
+
if answer == i_sorted_it_out:
|
|
145
|
+
console.print("✅ Proceeding as per user confirmation.", style="bold green")
|
|
146
|
+
elif answer == exit_now:
|
|
147
|
+
console.print("❌ Exiting for dotfiles migration.", style="bold red")
|
|
148
|
+
sys.exit(0)
|
|
149
|
+
elif answer == fetch_over_lan:
|
|
150
|
+
from machineconfig.scripts.python.helpers.helpers_devops.cli_config_dotfile import import_dotfiles
|
|
151
|
+
import_dotfiles(use_ssh=False)
|
|
152
|
+
elif answer == fetch_over_ssh:
|
|
153
|
+
from machineconfig.scripts.python.helpers.helpers_devops.cli_config_dotfile import import_dotfiles
|
|
154
|
+
import_dotfiles(use_ssh=True)
|
|
155
|
+
if not Path.home().joinpath("dotfiles").exists():
|
|
156
|
+
console.print("❌ Dotfiles directory still not found after attempted import. Exiting...", style="bold red")
|
|
157
|
+
sys.exit(1)
|
|
158
|
+
# devops config sync --sensitivity public --method symlink --on-conflict overwrite-default-path --which all
|
|
159
|
+
# devops config sync --sensitivity private --method symlink --on-conflict overwrite-default-path --which all
|
|
160
|
+
from machineconfig.profile.create_links_export import main_from_parser
|
|
161
|
+
main_from_parser(sensitivity="private", method="symlink", on_conflict="overwrite-default-path", which="all")
|
|
162
|
+
|
|
155
163
|
if "retrieve_repositories" in selected_options:
|
|
156
164
|
console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
|
|
157
|
-
from machineconfig.scripts.python.helpers_devops import cli_repos
|
|
158
|
-
cli_repos.clone(
|
|
165
|
+
from machineconfig.scripts.python.helpers.helpers_devops import cli_repos
|
|
166
|
+
cli_repos.clone(interactive=True)
|
|
159
167
|
|
|
160
168
|
if "retrieve_data" in selected_options:
|
|
161
169
|
console.print(Panel("💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]", border_style="bright_cyan"))
|
|
162
170
|
console.print("🔧 Retrieving backup data", style="bold cyan")
|
|
163
171
|
try:
|
|
164
|
-
from machineconfig.scripts.python.helpers_devops.
|
|
165
|
-
main_backup_retrieve(direction="RETRIEVE", cloud=None, which=None)
|
|
172
|
+
from machineconfig.scripts.python.helpers.helpers_devops.cli_backup_retrieve import main_backup_retrieve
|
|
173
|
+
main_backup_retrieve(direction="RETRIEVE", cloud=None, which=None, repo="all")
|
|
166
174
|
console.print("✅ Backup data retrieved successfully", style="bold green")
|
|
167
175
|
except Exception as e:
|
|
168
176
|
console.print(f"❌ Error retrieving backup data: {e}", style="bold red")
|
|
@@ -180,7 +188,13 @@ def main() -> None:
|
|
|
180
188
|
console.print("❌ Installation cancelled.", style="bold red")
|
|
181
189
|
sys.exit(0)
|
|
182
190
|
execute_installations(selected_options=selected_options)
|
|
183
|
-
|
|
191
|
+
completion_text = Text("INSTALLATION COMPLETE", style="bold green")
|
|
192
|
+
subtitle_text = Text("System setup finished successfully", style="italic green")
|
|
193
|
+
console.print(Panel(f"✨ {completion_text}\n{subtitle_text}\n\n🎉 Your system has been configured successfully!\n🔄 You may need to reboot to apply all changes.", border_style="green", padding=(1, 2)))
|
|
194
|
+
|
|
195
|
+
from machineconfig.profile.create_shell_profile import reload_shell_profile_and_exit
|
|
196
|
+
reload_shell_profile_and_exit()
|
|
197
|
+
|
|
184
198
|
|
|
185
199
|
|
|
186
200
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
"""run python/shell scripts from pre-defined directorys, or, run command/file in the machineconfig environment
|
|
4
|
+
|
|
5
|
+
Recursively Searched Predefined Directories:
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
* 'private' : $HOME/dotfiles/scripts
|
|
9
|
+
|
|
10
|
+
* 'public' : $HOME/.config/machineconfig/scripts
|
|
11
|
+
|
|
12
|
+
* 'library' : $MACHINECONFIG_LIBRARY_ROOT/jobs/scripts
|
|
13
|
+
|
|
14
|
+
* 'dynamic' : fetched from GitHub repository on the fly (relies on latest commit, rather than the version currently installed)
|
|
15
|
+
|
|
16
|
+
* 'custom' : custom directories from comma separated entry 'scripts' under 'general' section @ ~/dotfiles/machineconfig/defaults.ini
|
|
17
|
+
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
import typer
|
|
22
|
+
from typing import Annotated, Optional, Literal
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def run_py_script(ctx: typer.Context,
|
|
26
|
+
name: Annotated[str, typer.Argument(help="Name of script to run, e.g., 'a' for a.py, or command to execute")] = "",
|
|
27
|
+
where: Annotated[Literal["all", "a", "private", "p", "public", "b", "library", "l", "dynamic", "d", "custom", "c"], typer.Option("--where", "-w", help="Where to look for the script")] = "all",
|
|
28
|
+
interactive: Annotated[bool, typer.Option(..., "--interactive", "-i", help="Interactive selection of scripts to run")] = False,
|
|
29
|
+
command: Annotated[Optional[bool], typer.Option(..., "--command", "-c", help="Run as command")] = False,
|
|
30
|
+
list_scripts: Annotated[bool, typer.Option(..., "--list", "-l", help="List available scripts in all locations")] = False,
|
|
31
|
+
) -> None:
|
|
32
|
+
if command:
|
|
33
|
+
exec(name)
|
|
34
|
+
return
|
|
35
|
+
|
|
36
|
+
from pathlib import Path
|
|
37
|
+
if list_scripts:
|
|
38
|
+
from machineconfig.scripts.python.helpers.helpers_search.script_help import list_available_scripts
|
|
39
|
+
list_available_scripts(where=where)
|
|
40
|
+
return
|
|
41
|
+
|
|
42
|
+
if not interactive and not name:
|
|
43
|
+
typer.echo("❌ ERROR: You must provide a script name or use --interactive option to select a script.")
|
|
44
|
+
raise typer.Exit(code=1)
|
|
45
|
+
target_file: Optional[Path] = None
|
|
46
|
+
|
|
47
|
+
if where in ["dynamic", "d"]:
|
|
48
|
+
# src/machineconfig/jobs/scripts/python_scripts/a.py
|
|
49
|
+
if "." in name: resolved_names: list[str] = [name]
|
|
50
|
+
else: resolved_names = [f"{name}{a_suffix}" for a_suffix in [".py", ".sh", "", ".ps1", ".bat", ".cmd"]]
|
|
51
|
+
urls = [f"""https://raw.githubusercontent.com/thisismygitrepo/machineconfig/refs/heads/main/src/machineconfig/jobs/scripts_dynamic/{a_resolved_name}""" for a_resolved_name in resolved_names]
|
|
52
|
+
for a_url in urls:
|
|
53
|
+
try:
|
|
54
|
+
print(f"Fetching temporary script from {a_url} ...")
|
|
55
|
+
import requests
|
|
56
|
+
response = requests.get(a_url)
|
|
57
|
+
if response.status_code != 200:
|
|
58
|
+
print(f"❌ ERROR: Could not fetch script '{name}.py' from repository. Status Code: {response.status_code}")
|
|
59
|
+
raise RuntimeError(f"Could not fetch script '{name}.py' from repository.")
|
|
60
|
+
script_content = response.text
|
|
61
|
+
target_file = Path.home().joinpath("tmp_results", "tmp_scripts", "python", f"{name}.py")
|
|
62
|
+
target_file.parent.mkdir(parents=True, exist_ok=True)
|
|
63
|
+
target_file.write_text(script_content, encoding="utf-8")
|
|
64
|
+
except Exception as _e:
|
|
65
|
+
pass
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
if target_file is None and Path(name).is_file():
|
|
69
|
+
if name.endswith(".py"):
|
|
70
|
+
import machineconfig
|
|
71
|
+
import subprocess
|
|
72
|
+
import sys
|
|
73
|
+
subprocess.run([sys.executable, name], cwd=machineconfig.__path__[0])
|
|
74
|
+
return
|
|
75
|
+
else:
|
|
76
|
+
if Path(name).suffix in [".sh", ".ps1", ".bat", ".cmd", ""]:
|
|
77
|
+
target_file = Path(name)
|
|
78
|
+
else:
|
|
79
|
+
print(f"❌ Error: File '{name}' is not a recognized script type. Supported types are {'.py', '.sh', '.ps1', '.bat', '.cmd', ''}.")
|
|
80
|
+
raise typer.Exit(code=1)
|
|
81
|
+
|
|
82
|
+
from machineconfig.utils.source_of_truth import CONFIG_ROOT, LIBRARY_ROOT, DEFAULTS_PATH
|
|
83
|
+
private_root = Path.home().joinpath("dotfiles/scripts") # local directory
|
|
84
|
+
public_root = CONFIG_ROOT.joinpath("scripts") # local machineconfig directory
|
|
85
|
+
library_root = LIBRARY_ROOT.joinpath("jobs", "scripts")
|
|
86
|
+
|
|
87
|
+
def get_custom_roots() -> list[Path]:
|
|
88
|
+
custom_roots: list[Path] = []
|
|
89
|
+
if DEFAULTS_PATH.is_file():
|
|
90
|
+
from configparser import ConfigParser
|
|
91
|
+
config = ConfigParser()
|
|
92
|
+
config.read(DEFAULTS_PATH)
|
|
93
|
+
if config.has_section("general") and config.has_option("general", "scripts"):
|
|
94
|
+
custom_dirs = config.get("general", "scripts").split(",")
|
|
95
|
+
for custom_dir in custom_dirs:
|
|
96
|
+
custom_path = Path(custom_dir.strip()).expanduser().resolve()
|
|
97
|
+
if custom_path.is_dir():
|
|
98
|
+
custom_roots.append(custom_path)
|
|
99
|
+
return custom_roots
|
|
100
|
+
|
|
101
|
+
roots: list[Path] = []
|
|
102
|
+
match where:
|
|
103
|
+
case "all" | "a":
|
|
104
|
+
roots = [private_root, public_root, library_root] + get_custom_roots()
|
|
105
|
+
case "private" | "p":
|
|
106
|
+
roots = [private_root]
|
|
107
|
+
case "public" | "b":
|
|
108
|
+
roots = [public_root]
|
|
109
|
+
case "library" | "l":
|
|
110
|
+
roots = [library_root]
|
|
111
|
+
case "dynamic" | "d":
|
|
112
|
+
roots = []
|
|
113
|
+
case "custom" | "c":
|
|
114
|
+
roots = get_custom_roots()
|
|
115
|
+
|
|
116
|
+
suffixes: list[str]
|
|
117
|
+
if "." in name:
|
|
118
|
+
suffixes = [""]
|
|
119
|
+
else:
|
|
120
|
+
import platform
|
|
121
|
+
if platform.system() == "Windows":
|
|
122
|
+
suffixes = [".py", ".bat", ".cmd", ".ps1"]
|
|
123
|
+
elif platform.system() == "Darwin" or platform.system() == "Linux":
|
|
124
|
+
suffixes = [""] # files without suffix could be shell scripts, and that already cover files with .sh suffix without duplications
|
|
125
|
+
else:
|
|
126
|
+
suffixes = [".py"]
|
|
127
|
+
|
|
128
|
+
# Finding target file
|
|
129
|
+
potential_matches: list[Path] = []
|
|
130
|
+
if target_file is None:
|
|
131
|
+
for a_root in roots:
|
|
132
|
+
for a_suffix in suffixes:
|
|
133
|
+
if a_root.joinpath(f"{name}{a_suffix}").is_file():
|
|
134
|
+
target_file = a_root.joinpath(f"{name}{a_suffix}")
|
|
135
|
+
break # perfect match
|
|
136
|
+
potential_matches += [a_file for a_file in a_root.rglob(f"*{name}*{a_suffix}") if a_file.is_file()]
|
|
137
|
+
|
|
138
|
+
if target_file is None:
|
|
139
|
+
if len(potential_matches) == 1:
|
|
140
|
+
target_file = potential_matches[0]
|
|
141
|
+
elif len(potential_matches) == 0:
|
|
142
|
+
typer.echo(ctx.get_help())
|
|
143
|
+
typer.echo()
|
|
144
|
+
typer.echo(typer.style(f"❌ ERROR: Could not find script '{name}'.", fg=typer.colors.RED, bold=True))
|
|
145
|
+
typer.echo("Searched in:")
|
|
146
|
+
for r in roots:
|
|
147
|
+
typer.echo(f" - {r}")
|
|
148
|
+
raise typer.Exit(code=1)
|
|
149
|
+
else:
|
|
150
|
+
typer.echo(typer.style(f"Warning: Could not find script '{name}'. Checked {len(potential_matches)} candidate files, trying interactively:", fg=typer.colors.YELLOW))
|
|
151
|
+
from machineconfig.utils.options import choose_from_options
|
|
152
|
+
options = [str(p) for p in potential_matches]
|
|
153
|
+
chosen_file_part = choose_from_options(options, multi=False, msg="Select the script to run:", tv=True, preview="bat")
|
|
154
|
+
target_file = Path(chosen_file_part)
|
|
155
|
+
|
|
156
|
+
typer.echo(typer.style(f"✅ Found script at: {target_file}", fg=typer.colors.GREEN))
|
|
157
|
+
if target_file.suffix == ".py":
|
|
158
|
+
from machineconfig.utils.code import get_uv_command_executing_python_file, exit_then_run_shell_script
|
|
159
|
+
shell_script = get_uv_command_executing_python_file(python_file=str(target_file), uv_project_dir=None, uv_with=None, prepend_print=False)
|
|
160
|
+
exit_then_run_shell_script(script=shell_script)
|
|
161
|
+
else:
|
|
162
|
+
from machineconfig.utils.code import exit_then_run_shell_file
|
|
163
|
+
exit_then_run_shell_file(script_path=str(target_file), strict=True)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def copy_script_to_local(ctx: typer.Context,
|
|
167
|
+
name: Annotated[str, typer.Argument(help="Name of the temporary python script to copy, e.g., 'a' for a.py")],
|
|
168
|
+
alias: Annotated[Optional[str], typer.Option("--alias", "-a", help="Whether to create call it a different name locally")] = None
|
|
169
|
+
) -> None:
|
|
170
|
+
"""
|
|
171
|
+
Copy a temporary python script stored in machineconfig/scripts/python/helpers/tmp_py_scripts to the local machine.
|
|
172
|
+
"""
|
|
173
|
+
url = f"""https://raw.githubusercontent.com/thisismygitrepo/machineconfig/refs/heads/main/src/machineconfig/scripts/python/helpers/tmp_py_scripts/{name}.py"""
|
|
174
|
+
import requests
|
|
175
|
+
response = requests.get(url)
|
|
176
|
+
if response.status_code != 200:
|
|
177
|
+
typer.echo(ctx.get_help())
|
|
178
|
+
typer.echo()
|
|
179
|
+
typer.echo(typer.style(f"❌ ERROR: Could not fetch script '{name}.py' from repository. Status Code: {response.status_code}", fg=typer.colors.RED, bold=True))
|
|
180
|
+
raise typer.Exit(code=1)
|
|
181
|
+
script_content = response.text
|
|
182
|
+
from machineconfig.utils.source_of_truth import CONFIG_ROOT
|
|
183
|
+
local_path = CONFIG_ROOT.joinpath(f"scripts_python/{alias or name}.py")
|
|
184
|
+
with open(local_path, "w") as f:
|
|
185
|
+
f.write(script_content)
|
|
186
|
+
typer.echo(typer.style(f"✅ Script '{name}.py' has been copied to '{local_path}'.", fg=typer.colors.GREEN))
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
def get_app():
|
|
190
|
+
app = typer.Typer(
|
|
191
|
+
name="run-tmp-script",
|
|
192
|
+
help="Helper to run temporary python scripts stored in machineconfig/scripts/python/helpers/tmp_py_scripts",
|
|
193
|
+
no_args_is_help=True,
|
|
194
|
+
)
|
|
195
|
+
from machineconfig.jobs.scripts_dynamic import a
|
|
196
|
+
app.command()(a.main)
|
|
197
|
+
return app
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
$presets = @{
|
|
2
|
+
"nerd-font-symbols" = "Changes the symbols for each module to use Nerd Font symbols."
|
|
3
|
+
"no-nerd-font" = "Changes the symbols so that no Nerd Font symbols are used."
|
|
4
|
+
"bracketed-segments" = "Changes the format to show segments in brackets."
|
|
5
|
+
"plain-text-symbols" = "Changes the symbols for each module into plain text."
|
|
6
|
+
"no-runtime-versions" = "Hides the version of language runtimes."
|
|
7
|
+
"no-empty-icons" = "Does not show icons if the toolset is not found."
|
|
8
|
+
"pure-preset" = "Emulates the look and behavior of Pure."
|
|
9
|
+
"pastel-powerline" = "Inspired by M365Princess."
|
|
10
|
+
"tokyo-night" = "Inspired by tokyo-night-vscode-theme."
|
|
11
|
+
"gruvbox-rainbow" = "Inspired by Pastel Powerline and Tokyo Night."
|
|
12
|
+
"jetpack" = "Pseudo minimalist preset inspired by geometry and spaceship."
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
$input_list = $presets.Keys | ForEach-Object { "$_`t$($presets[$_])" }
|
|
16
|
+
|
|
17
|
+
$preview_config = "$env:TEMP/starship_preview.toml"
|
|
18
|
+
|
|
19
|
+
# Preview command for PowerShell
|
|
20
|
+
# We need to split the line and get the first part.
|
|
21
|
+
# tv replaces {} with the line.
|
|
22
|
+
# We use powershell -c for the preview command to be safe and consistent.
|
|
23
|
+
|
|
24
|
+
$preview_cmd = "powershell -c `"`$preset = '{}'.Split('`t')[0]; starship preset `$preset > $preview_config; `$env:STARSHIP_CONFIG='$preview_config'; `$env:STARSHIP_SHELL='powershell'; starship prompt`""
|
|
25
|
+
|
|
26
|
+
if (Get-Command "tv" -ErrorAction SilentlyContinue) {
|
|
27
|
+
$selected_line = $input_list | tv --preview-command $preview_cmd --preview-size 50
|
|
28
|
+
} elseif (Get-Command "fzf" -ErrorAction SilentlyContinue) {
|
|
29
|
+
# fzf fallback
|
|
30
|
+
$selected_line = $input_list | fzf --ansi --delimiter "`t" --with-nth 1,2 --preview "powershell -c `"`$preset = {1}; starship preset `$preset > $preview_config; `$env:STARSHIP_CONFIG='$preview_config'; `$env:STARSHIP_SHELL='powershell'; starship prompt`"" --preview-window bottom:50%
|
|
31
|
+
} else {
|
|
32
|
+
Write-Host "Error: 'tv' or 'fzf' not found."
|
|
33
|
+
exit 1
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if ($selected_line) {
|
|
37
|
+
$selected_preset = $selected_line.Split("`t")[0]
|
|
38
|
+
Write-Host "Applying $selected_preset..."
|
|
39
|
+
starship preset $selected_preset -o "$HOME/.config/starship.toml"
|
|
40
|
+
Write-Host "Done!"
|
|
41
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Ensure UTF-8 encoding for symbols and CLI tools
|
|
4
|
+
export LANG=C.UTF-8
|
|
5
|
+
export LC_ALL=C.UTF-8
|
|
6
|
+
export LC_CTYPE=C.UTF-8
|
|
7
|
+
export PYTHONIOENCODING=utf-8
|
|
8
|
+
|
|
9
|
+
# Presets
|
|
10
|
+
presets=(
|
|
11
|
+
"nerd-font-symbols Changes the symbols for each module to use Nerd Font symbols."
|
|
12
|
+
"no-nerd-font Changes the symbols so that no Nerd Font symbols are used."
|
|
13
|
+
"bracketed-segments Changes the format to show segments in brackets."
|
|
14
|
+
"plain-text-symbols Changes the symbols for each module into plain text."
|
|
15
|
+
"no-runtime-versions Hides the version of language runtimes."
|
|
16
|
+
"no-empty-icons Does not show icons if the toolset is not found."
|
|
17
|
+
"pure-preset Emulates the look and behavior of Pure."
|
|
18
|
+
"pastel-powerline Inspired by M365Princess."
|
|
19
|
+
"tokyo-night Inspired by tokyo-night-vscode-theme."
|
|
20
|
+
"gruvbox-rainbow Inspired by Pastel Powerline and Tokyo Night."
|
|
21
|
+
"jetpack Pseudo minimalist preset inspired by geometry and spaceship."
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
# Join presets with newlines
|
|
25
|
+
input_data=$(printf "%s\n" "${presets[@]}")
|
|
26
|
+
|
|
27
|
+
preview_config="/tmp/starship_preview.toml"
|
|
28
|
+
# Preview command needs to extract the first column (preset name) from the line
|
|
29
|
+
# {} will be replaced by the selected line
|
|
30
|
+
# We use awk to handle multiple spaces as delimiter
|
|
31
|
+
preview_cmd="preset=\$(echo '{}' | awk '{print \$1}'); starship preset \"\$preset\" > $preview_config && LANG=C.UTF-8 LC_ALL=C.UTF-8 STARSHIP_CONFIG=$preview_config STARSHIP_SHELL=fish starship prompt"
|
|
32
|
+
|
|
33
|
+
if command -v tv &> /dev/null; then
|
|
34
|
+
# tv requires input from stdin if no source-command is given
|
|
35
|
+
selected_line=$(printf "%s" "$input_data" | LANG=C.UTF-8 LC_ALL=C.UTF-8 tv --ansi --preview-command "$preview_cmd" --preview-size 50)
|
|
36
|
+
elif command -v fzf &> /dev/null; then
|
|
37
|
+
selected_line=$(printf "%s" "$input_data" | LANG=C.UTF-8 LC_ALL=C.UTF-8 fzf --ansi --preview "preset=\$(echo {} | awk '{print \$1}'); starship preset \$preset > $preview_config && LANG=C.UTF-8 LC_ALL=C.UTF-8 STARSHIP_CONFIG=$preview_config STARSHIP_SHELL=fish starship prompt" --preview-window bottom:30%)
|
|
38
|
+
else
|
|
39
|
+
echo "Error: 'tv' or 'fzf' not found."
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
if [ -n "$selected_line" ]; then
|
|
44
|
+
selected_preset=$(echo "$selected_line" | awk '{print $1}')
|
|
45
|
+
echo "Applying $selected_preset..."
|
|
46
|
+
starship preset "$selected_preset" -o ~/.config/starship.toml
|
|
47
|
+
echo "Done!"
|
|
48
|
+
fi
|
|
@@ -3,7 +3,7 @@ Choose a theme for Wezterm
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from machineconfig.utils.options import choose_from_options
|
|
6
|
-
from
|
|
6
|
+
from pathlib import Path
|
|
7
7
|
from typing import Any
|
|
8
8
|
import time
|
|
9
9
|
from rich.panel import Panel
|
|
@@ -52,14 +52,14 @@ def main2():
|
|
|
52
52
|
|
|
53
53
|
def set_theme(theme: str):
|
|
54
54
|
print(f"🔄 Setting WezTerm theme to: {theme}")
|
|
55
|
-
txt_lines =
|
|
55
|
+
txt_lines = Path.home().joinpath(".config/wezterm/wezterm.lua").expanduser().read_text(encoding="utf-8").splitlines()
|
|
56
56
|
res_lines = []
|
|
57
57
|
for line in txt_lines:
|
|
58
58
|
if "config.color_scheme = " in line:
|
|
59
59
|
res_lines.append(f"config.color_scheme = '{theme}'")
|
|
60
60
|
else:
|
|
61
61
|
res_lines.append(line)
|
|
62
|
-
|
|
62
|
+
Path.home().joinpath(".config/wezterm/wezterm.lua").expanduser().write_text("\n".join(res_lines), encoding="utf-8")
|
|
63
63
|
time.sleep(0.1)
|
|
64
64
|
print("💾 Configuration saved")
|
|
65
65
|
|
machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/file_wrangler.py
RENAMED
|
@@ -102,6 +102,7 @@ def wrap_import_in_try_except(import_line: str, pyfile: str, repo_root: Optional
|
|
|
102
102
|
print(fr"❌ Failed to import `{pyfile}` as a module: {ex} ")
|
|
103
103
|
print("⚠️ Attempting import with ad-hoc `$PATH` manipulation. DO NOT pickle any objects in this session as correct deserialization cannot be guaranteed.")
|
|
104
104
|
import sys
|
|
105
|
+
from pathlib import Path
|
|
105
106
|
sys.path.append(str(Path(pyfile).parent))
|
|
106
107
|
if repo_root is not None:
|
|
107
108
|
sys.path.append(repo_root)
|