machineconfig 8.14__py3-none-any.whl → 8.45__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/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 +225 -140
- machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
- machineconfig/jobs/installer/package_groups.py +10 -9
- machineconfig/jobs/installer/python_scripts/boxes.py +1 -2
- machineconfig/jobs/installer/python_scripts/code.py +10 -8
- machineconfig/jobs/installer/python_scripts/hx.py +30 -13
- machineconfig/jobs/installer/python_scripts/nerfont_windows_helper.py +6 -5
- machineconfig/jobs/installer/python_scripts/sysabc.py +25 -19
- machineconfig/jobs/installer/python_scripts/yazi.py +33 -17
- machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
- machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +1 -1
- machineconfig/jobs/scripts_dynamic/a.py +413 -10
- machineconfig/profile/create_links.py +77 -20
- machineconfig/profile/create_links_export.py +40 -51
- machineconfig/profile/mapper_data.toml +30 -0
- machineconfig/profile/mapper_dotfiles.toml +253 -0
- machineconfig/scripts/python/agents.py +70 -172
- 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 +7 -5
- 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 -156
- machineconfig/scripts/python/devops.py +57 -40
- machineconfig/scripts/python/devops_navigator.py +17 -3
- machineconfig/scripts/python/fire_jobs.py +8 -207
- machineconfig/scripts/python/ftpx.py +5 -225
- 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 +5 -5
- 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 +3 -3
- 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 +267 -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 +76 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_nw.py +52 -72
- machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +265 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/cli_self.py +39 -23
- 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} +68 -52
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/run_script.py +75 -58
- 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/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/helpers_network/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/address.py +15 -17
- machineconfig/scripts/python/{helpers_network → helpers/helpers_network}/address_switch.py +1 -1
- 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 +116 -33
- 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 +177 -0
- machineconfig/scripts/python/{helpers_sessions → helpers/helpers_sessions}/sessions_multiprocess.py +1 -1
- 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_utils → helpers/helpers_utils}/python.py +46 -26
- machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
- machineconfig/scripts/python/mcfg_entry.py +133 -48
- machineconfig/scripts/python/msearch.py +15 -61
- machineconfig/scripts/python/sessions.py +59 -194
- machineconfig/scripts/python/terminal.py +18 -96
- machineconfig/scripts/python/utils.py +101 -20
- machineconfig/settings/atuin/config.toml +294 -0
- machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
- machineconfig/settings/linters/.ruff.toml +1 -0
- machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
- machineconfig/settings/shells/bash/init.sh +6 -3
- 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 +20 -7
- machineconfig/settings/shells/zsh/init.sh +34 -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/yazi/yazi_linux.toml +18 -8
- machineconfig/settings/zellij/layouts/st.kdl +2 -2
- machineconfig/settings/zellij/layouts/st2.kdl +1 -1
- 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 +0 -1
- 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 +41 -13
- 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 +1 -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/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 +6 -6
- 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 +69 -18
- machineconfig/utils/ssh_utils/abc.py +1 -1
- 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-8.14.dist-info → machineconfig-8.45.dist-info}/METADATA +29 -22
- {machineconfig-8.14.dist-info → machineconfig-8.45.dist-info}/RECORD +247 -208
- machineconfig/jobs/installer/check_installations.py +0 -248
- machineconfig/profile/backup.toml +0 -49
- machineconfig/profile/mapper.toml +0 -263
- 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 -208
- 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/ssh_add_identity.py +0 -116
- machineconfig/scripts/python/helpers_network/ssh_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_repos/entrypoint.py +0 -77
- machineconfig/setup_mac/ssh/openssh_setup.sh +0 -114
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
- machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
- machineconfig/utils/options_tv.py +0 -119
- machineconfig/utils/tst.py +0 -20
- /machineconfig/{scripts/python/helpers_agents → jobs/installer/checks}/__init__.py +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}/privacy/configs/aichat/config.yaml +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/configs/aider/.aider.conf.yml +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/configs/copilot/config.yml +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/configs/crush/crush.json +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/configs/gemini/settings.json +0 -0
- /machineconfig/scripts/python/{helpers_agents → helpers/helpers_agents}/privacy/privacy.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_agents → helpers/helpers_agents}/templates/template.sh +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/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_fire_command/__init__.py} +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/cloud_manager.py +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/f.py +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/file_wrangler.py +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_args_helper.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_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/scripts/python/{helpers_utils → helpers/helpers_utils}/pdf.py +0 -0
- {machineconfig-8.14.dist-info → machineconfig-8.45.dist-info}/WHEEL +0 -0
- {machineconfig-8.14.dist-info → machineconfig-8.45.dist-info}/entry_points.txt +0 -0
- {machineconfig-8.14.dist-info → machineconfig-8.45.dist-info}/top_level.txt +0 -0
|
@@ -2,16 +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
5
|
|
|
16
6
|
|
|
17
7
|
"""
|
|
@@ -62,40 +52,6 @@ def display_header() -> None:
|
|
|
62
52
|
console.print()
|
|
63
53
|
console.print(Align.center(Text(bug_report, style="dim white")))
|
|
64
54
|
console.print()
|
|
65
|
-
def display_completion_message() -> None:
|
|
66
|
-
completion_text = Text("INSTALLATION COMPLETE", style="bold green")
|
|
67
|
-
subtitle_text = Text("System setup finished successfully", style="italic green")
|
|
68
|
-
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)))
|
|
69
|
-
def display_dotfiles_instructions() -> None:
|
|
70
|
-
header_text = Text("DOTFILES MIGRATION", style="bold yellow")
|
|
71
|
-
subtitle_text = Text("Configuration transfer options", style="italic yellow")
|
|
72
|
-
instructions = """
|
|
73
|
-
On remote, run:
|
|
74
|
-
rm ~/dotfiles.zip || true
|
|
75
|
-
ouch c ~/dotfiles dotfiles.zip
|
|
76
|
-
uvx wormhole-magic send ~/dotfiles.zip
|
|
77
|
-
On new machine, run:
|
|
78
|
-
cd $HOME; uvx wormhole-magic receive dotfiles.zip --accept-file
|
|
79
|
-
ouch d ~/dotfiles.zip
|
|
80
|
-
|
|
81
|
-
🖱️ [bold blue]Method 1: USING MOUSE WITHOUT KB OR BROWSER SHARE[/bold blue]
|
|
82
|
-
On original machine, run:
|
|
83
|
-
[dim]cd ~/dotfiles/creds/msc
|
|
84
|
-
easy-sharing . --password rew --username al[/dim]
|
|
85
|
-
Then open brave on new machine to get MouseWithoutBorders password
|
|
86
|
-
|
|
87
|
-
🔐 [bold blue]Method 2: USING SSH[/bold blue]
|
|
88
|
-
FROM REMOTE, RUN:
|
|
89
|
-
[dim]fptx ~/dotfiles $USER@$(hostname):^ -z
|
|
90
|
-
# OR, using IP address if router has not yet found the hostname:
|
|
91
|
-
fptx ~/dotfiles $USER@$(hostname -I | awk '{print $1}'):^ -z[/dim]
|
|
92
|
-
|
|
93
|
-
☁️ [bold blue]Method 3: USING INTERNET SECURE SHARE[/bold blue]
|
|
94
|
-
[dim]cd ~
|
|
95
|
-
cloud copy SHARE_URL . --config ss[/dim]
|
|
96
|
-
(requires symlinks to be created first)
|
|
97
|
-
"""
|
|
98
|
-
console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
|
|
99
55
|
|
|
100
56
|
|
|
101
57
|
def get_installation_choices() -> list[str]:
|
|
@@ -129,7 +85,7 @@ def execute_installations(selected_options: list[str]) -> None:
|
|
|
129
85
|
|
|
130
86
|
if "install_machineconfig" in selected_options:
|
|
131
87
|
console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
|
|
132
|
-
from machineconfig.scripts.python.helpers_devops.cli_self import install
|
|
88
|
+
from machineconfig.scripts.python.helpers.helpers_devops.cli_self import install
|
|
133
89
|
install(copy_assets=True, dev=False)
|
|
134
90
|
|
|
135
91
|
if "install_ssh_server" in selected_options:
|
|
@@ -150,8 +106,8 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
|
|
|
150
106
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
151
107
|
create_default_shell_profile()
|
|
152
108
|
console.print("✅ Shell profile configured successfully", style="bold green")
|
|
153
|
-
from machineconfig.profile.create_links_export import
|
|
154
|
-
|
|
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")
|
|
155
111
|
if platform.system() == "Windows":
|
|
156
112
|
from machineconfig.jobs.installer.python_scripts.nerfont_windows_helper import install_nerd_fonts
|
|
157
113
|
install_nerd_fonts()
|
|
@@ -160,20 +116,66 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
|
|
|
160
116
|
except Exception as e:
|
|
161
117
|
console.print(f"❌ Error configuring shell profile: {e}", style="bold red")
|
|
162
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
|
+
options: list[str] = [
|
|
134
|
+
"I have sorted out dotfiles migration already and want to proceed.",
|
|
135
|
+
"Exit now and sort out dotfiles migration first.",
|
|
136
|
+
"I already exposed dotfiles over LAN, let's fetch them now.",
|
|
137
|
+
"I wanted to bring them using SSH SCP now.",
|
|
138
|
+
]
|
|
139
|
+
answer = questionary.select("⚠️ DOTFILES NOT FOUND. How do you want to proceed?", choices=options).ask()
|
|
140
|
+
if answer == options[0]:
|
|
141
|
+
console.print("✅ Proceeding as per user confirmation.", style="bold green")
|
|
142
|
+
elif answer == options[1]:
|
|
143
|
+
console.print("❌ Exiting for dotfiles migration.", style="bold red")
|
|
144
|
+
sys.exit(0)
|
|
145
|
+
elif answer == options[2]:
|
|
146
|
+
from machineconfig.scripts.python.helpers.helpers_devops.cli_config_dotfile import import_dotfiles
|
|
147
|
+
import_dotfiles(use_ssh=False)
|
|
148
|
+
elif answer == options[3]:
|
|
149
|
+
from machineconfig.scripts.python.helpers.helpers_devops.cli_config_dotfile import import_dotfiles
|
|
150
|
+
import_dotfiles(use_ssh=True)
|
|
151
|
+
if not Path.home().joinpath("dotfiles").exists():
|
|
152
|
+
console.print("❌ Dotfiles directory still not found after attempted import. Exiting...", style="bold red")
|
|
153
|
+
sys.exit(1)
|
|
154
|
+
# devops config sync --sensitivity public --method symlink --on-conflict overwrite-default-path
|
|
155
|
+
# devops config sync --sensitivity private --method symlink --on-conflict overwrite-default-path
|
|
156
|
+
from machineconfig.profile.create_links_export import main_from_parser
|
|
157
|
+
main_from_parser(sensitivity="private", method="symlink", on_conflict="overwrite-default-path", which="all")
|
|
158
|
+
|
|
163
159
|
if "retrieve_repositories" in selected_options:
|
|
164
160
|
console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
|
|
165
|
-
from machineconfig.scripts.python.helpers_devops import cli_repos
|
|
166
|
-
cli_repos.clone(directory=str(Path.home() / "code")
|
|
161
|
+
from machineconfig.scripts.python.helpers.helpers_devops import cli_repos
|
|
162
|
+
cli_repos.clone(directory=str(Path.home() / "code"))
|
|
167
163
|
|
|
168
164
|
if "retrieve_data" in selected_options:
|
|
169
165
|
console.print(Panel("💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]", border_style="bright_cyan"))
|
|
170
166
|
console.print("🔧 Retrieving backup data", style="bold cyan")
|
|
171
167
|
try:
|
|
172
|
-
from machineconfig.scripts.python.helpers_devops.
|
|
173
|
-
main_backup_retrieve(direction="RETRIEVE", cloud=None, which=None)
|
|
168
|
+
from machineconfig.scripts.python.helpers.helpers_devops.cli_backup_retrieve import main_backup_retrieve
|
|
169
|
+
main_backup_retrieve(direction="RETRIEVE", cloud=None, which=None, repo="all")
|
|
174
170
|
console.print("✅ Backup data retrieved successfully", style="bold green")
|
|
175
171
|
except Exception as e:
|
|
176
172
|
console.print(f"❌ Error retrieving backup data: {e}", style="bold red")
|
|
173
|
+
# echo # 📧 Thunderbird Setup Note:
|
|
174
|
+
# Run after installing Thunderbird and starting it once:
|
|
175
|
+
# cd ~/AppData/Roaming/ThunderBird/Profiles
|
|
176
|
+
# $res = ls
|
|
177
|
+
# $name = $res[0].Name
|
|
178
|
+
# mv $backup_folder $name
|
|
177
179
|
|
|
178
180
|
|
|
179
181
|
def main() -> None:
|
|
@@ -188,7 +190,21 @@ def main() -> None:
|
|
|
188
190
|
console.print("❌ Installation cancelled.", style="bold red")
|
|
189
191
|
sys.exit(0)
|
|
190
192
|
execute_installations(selected_options=selected_options)
|
|
191
|
-
|
|
193
|
+
completion_text = Text("INSTALLATION COMPLETE", style="bold green")
|
|
194
|
+
subtitle_text = Text("System setup finished successfully", style="italic green")
|
|
195
|
+
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)))
|
|
196
|
+
|
|
197
|
+
from machineconfig.utils.code import exit_then_run_shell_script
|
|
198
|
+
if platform.system() == "Windows":
|
|
199
|
+
reload_init_script = "pwsh $PROFILE"
|
|
200
|
+
elif platform.system() == "Darwin":
|
|
201
|
+
reload_init_script = "source $HOME/.zshrc"
|
|
202
|
+
elif platform.system() == "Linux":
|
|
203
|
+
reload_init_script = "source $HOME/.bashrc"
|
|
204
|
+
else:
|
|
205
|
+
reload_init_script = ""
|
|
206
|
+
exit_then_run_shell_script(reload_init_script)
|
|
207
|
+
|
|
192
208
|
|
|
193
209
|
|
|
194
210
|
if __name__ == "__main__":
|
|
@@ -22,22 +22,50 @@ import typer
|
|
|
22
22
|
from typing import Annotated, Optional, Literal
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
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
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
28
|
interactive: Annotated[bool, typer.Option(..., "--interactive", "-i", help="Interactive selection of scripts to run")] = False,
|
|
29
29
|
command: Annotated[Optional[bool], typer.Option(..., "--command", "-c", help="Run as command")] = False,
|
|
30
|
-
|
|
30
|
+
list_scripts: Annotated[bool, typer.Option(..., "--list", "-l", help="List available scripts in all locations")] = False,
|
|
31
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
|
+
|
|
32
42
|
if not interactive and not name:
|
|
33
43
|
typer.echo("❌ ERROR: You must provide a script name or use --interactive option to select a script.")
|
|
34
44
|
raise typer.Exit(code=1)
|
|
45
|
+
target_file: Optional[Path] = None
|
|
35
46
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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():
|
|
41
69
|
if name.endswith(".py"):
|
|
42
70
|
import machineconfig
|
|
43
71
|
import subprocess
|
|
@@ -45,7 +73,11 @@ def run_py_script(name: Annotated[str, typer.Argument(help="Name of script to ru
|
|
|
45
73
|
subprocess.run([sys.executable, name], cwd=machineconfig.__path__[0])
|
|
46
74
|
return
|
|
47
75
|
else:
|
|
48
|
-
|
|
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)
|
|
49
81
|
|
|
50
82
|
from machineconfig.utils.source_of_truth import CONFIG_ROOT, LIBRARY_ROOT, DEFAULTS_PATH
|
|
51
83
|
private_root = Path.home().joinpath("dotfiles/scripts") # local directory
|
|
@@ -94,62 +126,45 @@ def run_py_script(name: Annotated[str, typer.Argument(help="Name of script to ru
|
|
|
94
126
|
suffixes = [".py"]
|
|
95
127
|
|
|
96
128
|
# Finding target file
|
|
97
|
-
target_file: Optional[Path] = None
|
|
98
129
|
potential_matches: list[Path] = []
|
|
99
|
-
|
|
100
|
-
for
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if target_file is None and where in ["dynamic", "d"] and not interactive:
|
|
107
|
-
# src/machineconfig/jobs/scripts/python_scripts/a.py
|
|
108
|
-
if "." in name:
|
|
109
|
-
resolved_names: list[str] = [name]
|
|
110
|
-
else:
|
|
111
|
-
resolved_names = [f"{name}{a_suffix}" for a_suffix in [".py", ".sh", "", ".ps1", ".bat", ".cmd"]]
|
|
112
|
-
for a_resolved_name in resolved_names:
|
|
113
|
-
try:
|
|
114
|
-
url = f"""https://raw.githubusercontent.com/thisismygitrepo/machineconfig/refs/heads/main/src/machineconfig/jobs/scripts_dynamic/{a_resolved_name}"""
|
|
115
|
-
print(f"Fetching temporary script from {url} ...")
|
|
116
|
-
import requests
|
|
117
|
-
response = requests.get(url)
|
|
118
|
-
if response.status_code != 200:
|
|
119
|
-
print(f"❌ ERROR: Could not fetch script '{name}.py' from repository. Status Code: {response.status_code}")
|
|
120
|
-
raise RuntimeError(f"Could not fetch script '{name}.py' from repository.")
|
|
121
|
-
script_content = response.text
|
|
122
|
-
target_file = Path.home().joinpath("tmp_results", "tmp_scripts", "python", f"{name}.py")
|
|
123
|
-
target_file.parent.mkdir(parents=True, exist_ok=True)
|
|
124
|
-
target_file.write_text(script_content, encoding="utf-8")
|
|
125
|
-
except Exception as _e:
|
|
126
|
-
pass
|
|
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()]
|
|
127
137
|
|
|
128
138
|
if target_file is None:
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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))
|
|
143
157
|
if target_file.suffix == ".py":
|
|
144
158
|
from machineconfig.utils.code import get_uv_command_executing_python_file, exit_then_run_shell_script
|
|
145
159
|
shell_script = get_uv_command_executing_python_file(python_file=str(target_file), uv_project_dir=None, uv_with=None, prepend_print=False)
|
|
146
160
|
exit_then_run_shell_script(script=shell_script)
|
|
147
161
|
else:
|
|
148
|
-
from machineconfig.utils.code import
|
|
149
|
-
|
|
162
|
+
from machineconfig.utils.code import exit_then_run_shell_file
|
|
163
|
+
exit_then_run_shell_file(script_path=str(target_file), strict=True)
|
|
150
164
|
|
|
151
165
|
|
|
152
|
-
def copy_script_to_local(
|
|
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")],
|
|
153
168
|
alias: Annotated[Optional[str], typer.Option("--alias", "-a", help="Whether to create call it a different name locally")] = None
|
|
154
169
|
) -> None:
|
|
155
170
|
"""
|
|
@@ -159,14 +174,16 @@ def copy_script_to_local(name: Annotated[str, typer.Argument(help="Name of the t
|
|
|
159
174
|
import requests
|
|
160
175
|
response = requests.get(url)
|
|
161
176
|
if response.status_code != 200:
|
|
162
|
-
|
|
163
|
-
|
|
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)
|
|
164
181
|
script_content = response.text
|
|
165
182
|
from machineconfig.utils.source_of_truth import CONFIG_ROOT
|
|
166
183
|
local_path = CONFIG_ROOT.joinpath(f"scripts_python/{alias or name}.py")
|
|
167
184
|
with open(local_path, "w") as f:
|
|
168
185
|
f.write(script_content)
|
|
169
|
-
|
|
186
|
+
typer.echo(typer.style(f"✅ Script '{name}.py' has been copied to '{local_path}'.", fg=typer.colors.GREEN))
|
|
170
187
|
|
|
171
188
|
|
|
172
189
|
def get_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
|
|