machineconfig 3.99__py3-none-any.whl → 7.66__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/__init__.py +0 -28
- machineconfig/cluster/remote/distribute.py +0 -1
- machineconfig/cluster/remote/file_manager.py +0 -2
- machineconfig/cluster/remote/script_execution.py +1 -2
- machineconfig/cluster/sessions_managers/{enhanced_command_runner.py → helpers/enhanced_command_runner.py} +4 -6
- machineconfig/cluster/sessions_managers/helpers/load_balancer_helper.py +145 -0
- machineconfig/cluster/sessions_managers/utils/load_balancer.py +53 -0
- machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
- machineconfig/cluster/sessions_managers/wt_local.py +128 -330
- machineconfig/cluster/sessions_managers/wt_local_manager.py +53 -187
- machineconfig/cluster/sessions_managers/wt_remote.py +51 -43
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +49 -197
- machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +6 -19
- machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
- machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
- machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +4 -2
- machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
- machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +81 -375
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +22 -172
- machineconfig/cluster/sessions_managers/zellij_remote.py +40 -41
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +13 -10
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +4 -8
- machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +5 -20
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -9
- machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -1
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper.py +298 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_restart.py +77 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_with_panes.py +228 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_manager_helper.py +165 -0
- machineconfig/jobs/{python → installer}/check_installations.py +2 -16
- machineconfig/jobs/installer/custom/boxes.py +61 -0
- machineconfig/jobs/installer/custom/gh.py +69 -53
- machineconfig/jobs/installer/custom/hx.py +77 -20
- machineconfig/jobs/installer/custom_dev/alacritty.py +45 -30
- machineconfig/jobs/installer/custom_dev/brave.py +43 -35
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py +31 -20
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +33 -21
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
- machineconfig/jobs/installer/custom_dev/espanso.py +64 -41
- machineconfig/jobs/installer/custom_dev/goes.py +41 -36
- machineconfig/jobs/installer/custom_dev/lvim.py +49 -33
- machineconfig/jobs/installer/custom_dev/nerdfont.py +71 -47
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +32 -26
- machineconfig/jobs/installer/custom_dev/redis.py +51 -33
- machineconfig/jobs/installer/custom_dev/sysabc.py +119 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +55 -39
- machineconfig/jobs/installer/custom_dev/winget.py +1 -0
- machineconfig/jobs/installer/installer_data.json +3406 -0
- machineconfig/jobs/installer/linux_scripts/brave.sh +4 -14
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +5 -17
- machineconfig/jobs/installer/linux_scripts/docker.sh +5 -17
- machineconfig/jobs/installer/linux_scripts/docker_start.sh +6 -14
- machineconfig/jobs/installer/linux_scripts/edge.sh +3 -11
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
- machineconfig/jobs/installer/linux_scripts/nerdfont.sh +5 -17
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
- machineconfig/jobs/installer/linux_scripts/ngrok.sh +6 -0
- machineconfig/jobs/installer/linux_scripts/q.sh +9 -0
- machineconfig/jobs/installer/linux_scripts/redis.sh +6 -17
- machineconfig/jobs/installer/linux_scripts/vscode.sh +5 -17
- machineconfig/jobs/installer/linux_scripts/wezterm.sh +4 -12
- machineconfig/jobs/installer/package_groups.py +255 -0
- machineconfig/logger.py +0 -1
- machineconfig/profile/backup.toml +49 -0
- machineconfig/profile/bash_shell_profiles.md +11 -0
- machineconfig/profile/create_helper.py +74 -0
- machineconfig/profile/create_links.py +288 -0
- machineconfig/profile/create_links_export.py +100 -0
- machineconfig/profile/create_shell_profile.py +136 -0
- machineconfig/profile/mapper.toml +258 -0
- machineconfig/scripts/Restore-ThunderbirdProfile.ps1 +92 -0
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/{share_cloud.sh → other/share_cloud.sh} +14 -25
- machineconfig/scripts/linux/wrap_mcfg +47 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +198 -0
- machineconfig/scripts/python/ai/command_runner/command_runner.sh +9 -0
- machineconfig/scripts/python/ai/command_runner/prompt.txt +9 -0
- machineconfig/scripts/python/ai/generate_files.py +307 -42
- machineconfig/scripts/python/ai/initai.py +3 -28
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +17 -18
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +17 -18
- machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +1 -1
- machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
- machineconfig/scripts/python/ai/solutions/generic.py +27 -4
- machineconfig/scripts/python/ai/vscode_tasks.py +37 -0
- machineconfig/scripts/python/cloud.py +29 -0
- machineconfig/scripts/python/croshell.py +117 -181
- machineconfig/scripts/python/define.py +31 -0
- machineconfig/scripts/python/devops.py +44 -124
- machineconfig/scripts/python/devops_navigator.py +10 -0
- machineconfig/scripts/python/env_manager/__init__.py +1 -0
- machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
- machineconfig/scripts/python/explore.py +49 -0
- machineconfig/scripts/python/fire_jobs.py +106 -244
- machineconfig/scripts/python/ftpx.py +125 -68
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +14 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +37 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +42 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +110 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +34 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_load_balancer.py +22 -0
- machineconfig/scripts/python/helpers_agents/templates/prompt.txt +6 -0
- machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
- machineconfig/scripts/python/helpers_agents/templates/template.sh +24 -0
- machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +30 -23
- machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +11 -19
- machineconfig/scripts/python/{cloud_sync.py → helpers_cloud/cloud_sync.py} +12 -18
- machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +17 -7
- machineconfig/scripts/python/helpers_devops/cli_config.py +95 -0
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
- machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
- machineconfig/scripts/python/helpers_devops/cli_nw.py +134 -0
- machineconfig/scripts/python/helpers_devops/cli_repos.py +182 -0
- machineconfig/scripts/python/helpers_devops/cli_self.py +134 -0
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +141 -0
- machineconfig/scripts/python/helpers_devops/cli_terminal.py +156 -0
- machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
- machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
- machineconfig/scripts/python/helpers_devops/devops_status.py +511 -0
- machineconfig/scripts/python/helpers_devops/devops_update_repos.py +269 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
- machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +2 -2
- machineconfig/scripts/python/helpers_fire_command/__init__.py +0 -0
- machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -87
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +145 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +110 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
- machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfag +1 -1
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +1 -1
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfrga +1 -1
- machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/helpers_navigator/command_builder.py +111 -0
- machineconfig/scripts/python/helpers_navigator/command_detail.py +44 -0
- machineconfig/scripts/python/helpers_navigator/command_tree.py +588 -0
- machineconfig/scripts/python/helpers_navigator/data_models.py +28 -0
- machineconfig/scripts/python/helpers_navigator/main_app.py +272 -0
- machineconfig/scripts/python/helpers_navigator/search_bar.py +15 -0
- machineconfig/scripts/python/helpers_repos/action.py +209 -0
- machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
- machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +6 -7
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
- machineconfig/scripts/python/helpers_repos/count_lines.py +348 -0
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +17 -0
- machineconfig/scripts/python/helpers_repos/entrypoint.py +77 -0
- machineconfig/scripts/python/helpers_repos/grource.py +340 -0
- machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +7 -4
- machineconfig/scripts/python/helpers_repos/sync.py +66 -0
- machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
- machineconfig/scripts/python/helpers_sessions/__init__.py +0 -0
- machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +58 -0
- machineconfig/scripts/python/helpers_utils/download.py +152 -0
- machineconfig/scripts/python/helpers_utils/path.py +108 -0
- machineconfig/scripts/python/interactive.py +79 -160
- machineconfig/scripts/python/machineconfig.py +63 -0
- machineconfig/scripts/python/msearch.py +21 -0
- machineconfig/scripts/python/nw/__init__.py +0 -0
- machineconfig/scripts/python/{devops_add_identity.py → nw/devops_add_identity.py} +1 -3
- machineconfig/scripts/python/{devops_add_ssh_key.py → nw/devops_add_ssh_key.py} +74 -44
- machineconfig/scripts/{linux → python/nw}/mount_nfs +1 -1
- machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +19 -16
- machineconfig/scripts/{linux → python/nw}/mount_nw_drive +1 -2
- machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +7 -8
- machineconfig/scripts/python/{onetimeshare.py → nw/onetimeshare.py} +0 -1
- machineconfig/scripts/python/nw/ssh_debug_linux.py +391 -0
- machineconfig/scripts/python/nw/ssh_debug_windows.py +338 -0
- machineconfig/scripts/python/{wifi_conn.py → nw/wifi_conn.py} +1 -53
- machineconfig/scripts/python/{wsl_windows_transfer.py → nw/wsl_windows_transfer.py} +6 -5
- machineconfig/scripts/python/sessions.py +167 -0
- machineconfig/scripts/python/terminal.py +127 -0
- machineconfig/scripts/python/utils.py +66 -0
- machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
- machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
- machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
- machineconfig/scripts/windows/wrap_mcfg.ps1 +60 -0
- machineconfig/settings/broot/br.sh +0 -4
- machineconfig/settings/broot/conf.toml +1 -1
- machineconfig/settings/helix/config.toml +16 -0
- machineconfig/settings/helix/languages.toml +13 -4
- machineconfig/settings/helix/yazi-picker.sh +12 -0
- machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
- machineconfig/settings/lf/linux/exe/previewer.sh +9 -3
- machineconfig/settings/lf/linux/lfrc +10 -12
- machineconfig/settings/lf/windows/fzf_edit.ps1 +2 -2
- machineconfig/settings/lf/windows/lfrc +18 -38
- machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
- machineconfig/settings/linters/.ruff.toml +1 -1
- machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
- machineconfig/settings/marimo/marimo.toml +80 -0
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/pistol/pistol.conf +1 -1
- machineconfig/settings/shells/bash/init.sh +55 -31
- machineconfig/settings/shells/nushell/config.nu +1 -34
- machineconfig/settings/shells/nushell/init.nu +127 -0
- machineconfig/settings/shells/pwsh/init.ps1 +60 -43
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
- machineconfig/settings/shells/wt/settings.json +32 -17
- machineconfig/settings/shells/zsh/init.sh +89 -0
- machineconfig/settings/svim/linux/init.toml +0 -4
- machineconfig/settings/svim/windows/init.toml +0 -3
- machineconfig/settings/yazi/init.lua +57 -0
- machineconfig/settings/yazi/keymap_linux.toml +79 -0
- machineconfig/settings/yazi/keymap_windows.toml +78 -0
- machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
- machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
- machineconfig/settings/yazi/yazi.toml +13 -0
- machineconfig/setup_linux/__init__.py +10 -0
- machineconfig/setup_linux/apps_desktop.sh +89 -0
- machineconfig/setup_linux/apps_gui.sh +64 -0
- machineconfig/setup_linux/{nix → others}/cli_installation.sh +9 -29
- machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
- machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
- machineconfig/setup_linux/uv.sh +15 -0
- machineconfig/setup_linux/web_shortcuts/interactive.sh +26 -6
- machineconfig/setup_mac/__init__.py +16 -0
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
- machineconfig/setup_mac/uv.sh +36 -0
- machineconfig/setup_windows/__init__.py +8 -0
- machineconfig/setup_windows/others/power_options.ps1 +7 -0
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
- machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
- machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
- machineconfig/setup_windows/uv.ps1 +10 -0
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +27 -9
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +16 -0
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
- machineconfig/utils/accessories.py +7 -5
- machineconfig/utils/cloud/onedrive/README.md +139 -0
- machineconfig/utils/code.py +140 -93
- machineconfig/utils/files/art/fat_croco.txt +10 -0
- machineconfig/utils/files/art/halfwit_croco.txt +9 -0
- machineconfig/utils/files/art/happy_croco.txt +22 -0
- machineconfig/utils/files/art/water_croco.txt +11 -0
- machineconfig/utils/files/ascii_art.py +118 -0
- machineconfig/utils/files/dbms.py +257 -0
- machineconfig/utils/files/headers.py +68 -0
- machineconfig/utils/files/ouch/__init__.py +0 -0
- machineconfig/utils/files/ouch/decompress.py +45 -0
- machineconfig/utils/files/read.py +95 -0
- machineconfig/utils/installer_utils/github_release_bulk.py +2 -12
- machineconfig/utils/installer_utils/installer_class.py +68 -126
- machineconfig/utils/installer_utils/installer_cli.py +181 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +38 -85
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +69 -69
- machineconfig/utils/io.py +77 -23
- machineconfig/utils/links.py +309 -100
- machineconfig/utils/meta.py +255 -0
- machineconfig/utils/notifications.py +1 -1
- machineconfig/utils/options.py +10 -25
- machineconfig/utils/path_extended.py +94 -104
- machineconfig/utils/path_helper.py +75 -22
- machineconfig/utils/procs.py +50 -74
- machineconfig/utils/scheduler.py +94 -97
- machineconfig/utils/scheduling.py +0 -3
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +5 -17
- machineconfig/utils/schemas/installer/installer_types.py +0 -1
- machineconfig/utils/schemas/layouts/layout_types.py +2 -1
- machineconfig/utils/source_of_truth.py +3 -6
- machineconfig/utils/ssh.py +742 -254
- machineconfig/utils/ssh_utils/utils.py +0 -0
- machineconfig/utils/terminal.py +3 -140
- machineconfig/utils/tst.py +20 -0
- machineconfig/utils/upgrade_packages.py +109 -28
- machineconfig/utils/ve.py +13 -5
- machineconfig-7.66.dist-info/METADATA +124 -0
- machineconfig-7.66.dist-info/RECORD +451 -0
- machineconfig-7.66.dist-info/entry_points.txt +15 -0
- machineconfig/cluster/templates/utils.py +0 -51
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -49
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -85
- machineconfig/jobs/installer/packages_custom_dev.json +0 -226
- machineconfig/jobs/installer/packages_custom_essential.json +0 -39
- machineconfig/jobs/installer/packages_github_dev.json +0 -1110
- machineconfig/jobs/installer/packages_github_essential.json +0 -804
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -37
- machineconfig/jobs/python/create_bootable_media.py +0 -16
- machineconfig/jobs/python/python_cargo_build_share.py +0 -59
- machineconfig/jobs/python/python_ve_symlink.py +0 -29
- machineconfig/jobs/python/tasks.py +0 -3
- machineconfig/jobs/python/vscode/api.py +0 -49
- machineconfig/jobs/python/vscode/sync_code.py +0 -58
- machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
- machineconfig/jobs/windows/start_terminal.ps1 +0 -6
- machineconfig/jobs/windows/startup_file.cmd +0 -2
- machineconfig/profile/create.py +0 -170
- machineconfig/profile/shell.py +0 -176
- machineconfig/scripts/cloud/init.sh +0 -119
- machineconfig/scripts/linux/choose_wezterm_theme +0 -3
- machineconfig/scripts/linux/cloud_copy +0 -2
- machineconfig/scripts/linux/cloud_mount +0 -2
- machineconfig/scripts/linux/cloud_repo_sync +0 -2
- machineconfig/scripts/linux/cloud_sync +0 -2
- machineconfig/scripts/linux/croshell +0 -3
- machineconfig/scripts/linux/devops +0 -2
- machineconfig/scripts/linux/fire +0 -2
- machineconfig/scripts/linux/fire_agents +0 -2
- machineconfig/scripts/linux/ftpx +0 -2
- machineconfig/scripts/linux/fzf2g +0 -21
- machineconfig/scripts/linux/fzffg +0 -25
- machineconfig/scripts/linux/gh_models +0 -2
- machineconfig/scripts/linux/initai +0 -2
- machineconfig/scripts/linux/kill_process +0 -2
- machineconfig/scripts/linux/programs +0 -21
- machineconfig/scripts/linux/repos +0 -2
- machineconfig/scripts/linux/scheduler +0 -2
- machineconfig/scripts/linux/share_smb +0 -1
- machineconfig/scripts/linux/start_slidev +0 -2
- machineconfig/scripts/linux/start_terminals +0 -3
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/wifi_conn +0 -2
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
- machineconfig/scripts/python/cloud_repo_sync.py +0 -186
- machineconfig/scripts/python/devops_devapps_install.py +0 -159
- machineconfig/scripts/python/devops_update_repos.py +0 -180
- machineconfig/scripts/python/dotfile.py +0 -52
- machineconfig/scripts/python/fire_agents.py +0 -175
- machineconfig/scripts/python/fire_agents_help_launch.py +0 -143
- machineconfig/scripts/python/fire_agents_load_balancer.py +0 -50
- machineconfig/scripts/python/fire_jobs_args_helper.py +0 -75
- machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -74
- machineconfig/scripts/python/get_zellij_cmd.py +0 -15
- machineconfig/scripts/python/gh_models.py +0 -104
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -114
- machineconfig/scripts/python/repos.py +0 -80
- machineconfig/scripts/python/repos_helper_action.py +0 -335
- machineconfig/scripts/python/share_terminal.py +0 -104
- machineconfig/scripts/python/snapshot.py +0 -25
- machineconfig/scripts/python/start_terminals.py +0 -121
- machineconfig/scripts/python/t4.py +0 -17
- machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
- machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
- machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
- machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
- machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
- machineconfig/scripts/windows/croshell.ps1 +0 -1
- machineconfig/scripts/windows/devops.ps1 +0 -1
- machineconfig/scripts/windows/dotfile.ps1 +0 -1
- machineconfig/scripts/windows/fire.ps1 +0 -1
- machineconfig/scripts/windows/ftpx.ps1 +0 -1
- machineconfig/scripts/windows/gpt.ps1 +0 -1
- machineconfig/scripts/windows/grep.ps1 +0 -2
- machineconfig/scripts/windows/initai.ps1 +0 -1
- machineconfig/scripts/windows/kill_process.ps1 +0 -1
- machineconfig/scripts/windows/nano.ps1 +0 -3
- machineconfig/scripts/windows/pomodoro.ps1 +0 -1
- machineconfig/scripts/windows/reload_path.ps1 +0 -3
- machineconfig/scripts/windows/repos.ps1 +0 -1
- machineconfig/scripts/windows/scheduler.ps1 +0 -1
- machineconfig/scripts/windows/snapshot.ps1 +0 -1
- machineconfig/scripts/windows/start_slidev.ps1 +0 -1
- machineconfig/scripts/windows/start_terminals.ps1 +0 -1
- machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
- machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
- machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
- machineconfig/setup_linux/web_shortcuts/ascii_art.sh +0 -93
- machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
- machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
- machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
- machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
- machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
- machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
- machineconfig/utils/ai/generate_file_checklist.py +0 -68
- machineconfig-3.99.dist-info/METADATA +0 -167
- machineconfig-3.99.dist-info/RECORD +0 -409
- machineconfig-3.99.dist-info/entry_points.txt +0 -18
- machineconfig/cluster/{templates → remote}/run_cloud.py +0 -0
- machineconfig/cluster/{templates → remote}/run_cluster.py +0 -0
- machineconfig/cluster/{templates → remote}/run_remote.py +0 -0
- machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
- machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
- machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
- machineconfig/{jobs/python → scripts/python/helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers → helpers_agents/agentic_frameworks}/__init__.py +0 -0
- machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
- machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_cloud/__init__.py} +0 -0
- machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_croshell/__init__.py} +0 -0
- /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
- /machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -0
- /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
- /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
- /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_devops/__init__.py} +0 -0
- /machineconfig/scripts/{windows/share_nfs.ps1 → python/helpers_devops/themes/__init__.py} +0 -0
- /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -0
- /machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/skrg +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfb.ps1 +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfg.ps1 +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfrga.bat +0 -0
- /machineconfig/scripts/{linux → python/nw}/mount_drive +0 -0
- /machineconfig/scripts/python/{mount_nw_drive.py → nw/mount_nw_drive.py} +0 -0
- /machineconfig/scripts/{linux → python/nw}/mount_smb +0 -0
- /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
- /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
- /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
- /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
- /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
- {machineconfig-3.99.dist-info → machineconfig-7.66.dist-info}/WHEEL +0 -0
- {machineconfig-3.99.dist-info → machineconfig-7.66.dist-info}/top_level.txt +0 -0
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
# Terminal-based CLI agents and tools for productivity and coding.
|
|
5
|
-
npm install -g @github/copilot
|
|
6
|
-
npm install -g @google/gemini-cli
|
|
7
|
-
npm install -g @charmland/crush
|
|
8
|
-
npm install -g opencode-ai@latest # or curl -fsSL https://opencode.ai/install | bash
|
|
9
|
-
uv tool install --force --python python3.12 --with pip aider-chat@latest
|
|
10
|
-
curl -fsSL https://app.factory.ai/cli | sh
|
|
11
|
-
# WARP TERMINAL CLI
|
|
12
|
-
# droid
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
# cursor-cli
|
|
16
|
-
curl https://cursor.com/install -fsS | bash
|
|
17
|
-
cd $HOME/Downloads
|
|
18
|
-
curl --proto '=https' --tlsv1.2 -sSf "https://desktop-release.q.us-east-1.amazonaws.com/latest/q-x86_64-linux.zip" -o "q.zip"
|
|
19
|
-
unzip q.zip
|
|
20
|
-
./q/install.sh # goes to ~/.local/bin.
|
|
21
|
-
rm q.zip
|
|
22
|
-
rm -rfd q
|
|
23
|
-
|
|
24
|
-
# Vscode extensions for AI-assisted coding.
|
|
25
|
-
# Github copilot
|
|
26
|
-
# Roo
|
|
27
|
-
# Cline
|
|
28
|
-
# Kilocode
|
|
29
|
-
# Continue
|
|
30
|
-
# CodeGPT
|
|
31
|
-
# qodo (and cli)
|
|
32
|
-
|
|
33
|
-
# Editors based on AI
|
|
34
|
-
# Kiro
|
|
35
|
-
# Cursor
|
|
36
|
-
# Warp
|
|
37
|
-
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# try ventory or netboot.xyz
|
|
2
|
-
|
|
3
|
-
# # one can either install rufus: https://rufus.ie/en/
|
|
4
|
-
# # however, to create bootable media with multiple OSs to choose from:
|
|
5
|
-
|
|
6
|
-
# PathExtended(r'https://github.com/ventoy/Ventoy/archive/refs/tags/v1.0.78.zip').download().unzip().search[0]()
|
|
7
|
-
# download_folder = PathExtended.home().joinpath("Downloads/os")
|
|
8
|
-
# download_folder.mkdir(parents=True, exist_ok=True)
|
|
9
|
-
# PathExtended(r'https://mirrors.layeronline.com/linuxmint/stable/21/linuxmint-21-cinnamon-64bit.iso').download(folder=download_folder)
|
|
10
|
-
# download_folder2 = PathExtended.home().joinpath("Downloads/os")
|
|
11
|
-
# download_folder2.mkdir(parents=True, exist_ok=True)
|
|
12
|
-
# PathExtended(r'https://download.manjaro.org/kde/21.3.7/manjaro-kde-21.3.7-minimal-220816-linux515.iso').download(folder=download_folder2)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
# if __name__ == '__main__':
|
|
16
|
-
# pass
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
cargo install
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
# from machineconfig.utils.terminal import Terminal
|
|
6
|
-
# from machineconfig.utils.path_reduced import P as PathExtended
|
|
7
|
-
# import platform
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# def build_rust_executable(url: str=r"https://github.com/atanunq/viu"):
|
|
11
|
-
# tool_name = url.split('/')[-1]
|
|
12
|
-
|
|
13
|
-
# # move command is not required since tool will go to .cargo/bin which is in PATH by default.
|
|
14
|
-
# # move_command = f"mv {exe} {tb.get_env().WindowsApps.as_posix()}/" if platform.platform() == "Windows" else f"sudo mv {exe} /usr/local/bin/"
|
|
15
|
-
# # {move_command}
|
|
16
|
-
|
|
17
|
-
# script = f"""
|
|
18
|
-
# cd ~
|
|
19
|
-
# git clone --depth 1 {url}
|
|
20
|
-
# cd {tool_name}
|
|
21
|
-
# cargo install --path .
|
|
22
|
-
# """
|
|
23
|
-
# print(f"""
|
|
24
|
-
# {'=' * 150}
|
|
25
|
-
# 🦀 CARGO BUILD | Building Rust project: {tool_name}
|
|
26
|
-
# 📦 Source: {url}
|
|
27
|
-
# {'=' * 150}
|
|
28
|
-
# """)
|
|
29
|
-
# if platform.system() == "Windows":
|
|
30
|
-
# Terminal(stdout=None).run(f". {PathExtended.tmpfile(suffix='.ps1').write_text(script, encoding="utf-8")}", shell="pwsh").print()
|
|
31
|
-
# else:
|
|
32
|
-
# Terminal(stdout=None).run(script, shell="pwsh")
|
|
33
|
-
|
|
34
|
-
# exe = PathExtended.home().joinpath(f".cargo/bin/{tool_name}" + (".exe" if platform.system() == "Windows" else ""))
|
|
35
|
-
|
|
36
|
-
# try:
|
|
37
|
-
# PathExtended.home().joinpath(tool_name).delete(sure=True)
|
|
38
|
-
# except PermissionError:
|
|
39
|
-
# print(f"""
|
|
40
|
-
# {'⚠️' * 20}
|
|
41
|
-
# ⚠️ WARNING | Permission error when cleaning up
|
|
42
|
-
# 📂 Path: {PathExtended.home().joinpath(tool_name)}
|
|
43
|
-
# {'⚠️' * 20}
|
|
44
|
-
# """)
|
|
45
|
-
|
|
46
|
-
# if platform.system() == "Windows":
|
|
47
|
-
# exe = exe.move(folder=PathExtended.get_env().WindowsPaths().WindowsApps)
|
|
48
|
-
# elif platform.system() in ["Linux", "Darwin"]:
|
|
49
|
-
# Terminal().run(f"sudo mv {exe} /usr/local/bin")
|
|
50
|
-
# exe = PathExtended(r"/usr/local/bin").joinpath(exe.name)
|
|
51
|
-
# else:
|
|
52
|
-
# raise NotImplementedError(f"🚫 Platform {platform.system()} not supported.")
|
|
53
|
-
# share_link = exe.to_cloud("gdpo", share=True)
|
|
54
|
-
# return share_link
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
# after cargo install diskonaut
|
|
58
|
-
# then mv ~/.cargo/bin/diskonaut.exe ~/AppData/Local/Microsoft/WindowsApps/
|
|
59
|
-
# then bu_gdrive_sx.ps1 .\diskonaut.exe -sRz # zipping is vital to avoid security layers and keep file metadata.
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""Symlinks"""
|
|
2
|
-
|
|
3
|
-
from machineconfig.utils.path_extended import PathExtended as PathExtended
|
|
4
|
-
# from machineconfig.utils.utils import choose_from_options
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def main():
|
|
8
|
-
print(f"""
|
|
9
|
-
{"=" * 150}
|
|
10
|
-
🔗 SYMLINK CREATOR | Create symlinks for virtual environments
|
|
11
|
-
{"=" * 150}
|
|
12
|
-
""")
|
|
13
|
-
target = PathExtended(input("🎯 Symlink to which target? ")).expanduser().absolute()
|
|
14
|
-
source = input(f"📍 Symlink from which source? [default to: CWD/{target.name}] ") or PathExtended.cwd().joinpath(target.name)
|
|
15
|
-
if isinstance(source, str):
|
|
16
|
-
source = PathExtended(source).expanduser().absolute()
|
|
17
|
-
source.symlink_to(target, overwrite=True)
|
|
18
|
-
print(f"""
|
|
19
|
-
{"=" * 150}
|
|
20
|
-
✅ SUCCESS | Symlink created successfully
|
|
21
|
-
📍 Source: {source}
|
|
22
|
-
🎯 Target: {target}
|
|
23
|
-
{"=" * 150}
|
|
24
|
-
""")
|
|
25
|
-
print("🔗 Finished creating symlink.")
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if __name__ == "__main__":
|
|
29
|
-
pass
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
from machineconfig.utils.accessories import randstr
|
|
3
|
-
from typing import Annotated
|
|
4
|
-
import typer
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def open_file_in_new_instance(file_path: str):
|
|
8
|
-
import git
|
|
9
|
-
|
|
10
|
-
repo = git.Repo(search_parent_directories=True)
|
|
11
|
-
repo_path = repo.working_tree_dir
|
|
12
|
-
# Ensure repo_path is not None before passing to Path
|
|
13
|
-
repo_name = Path(repo_path if repo_path is not None else ".").name
|
|
14
|
-
repo_copy_name = f"{repo_name}_{randstr(5)}"
|
|
15
|
-
copy_path = Path.home().joinpath(".config", "machingconfig", "vscode_api", repo_name, repo_copy_name)
|
|
16
|
-
copy_path.parent.mkdir(parents=True, exist_ok=True)
|
|
17
|
-
code = f"""
|
|
18
|
-
ln -s {repo_path} {copy_path}
|
|
19
|
-
cd {copy_path}
|
|
20
|
-
code --profile bitProfile --new-window {file_path}
|
|
21
|
-
"""
|
|
22
|
-
from rich.console import Console
|
|
23
|
-
from rich.syntax import Syntax
|
|
24
|
-
from rich.panel import Panel
|
|
25
|
-
|
|
26
|
-
console = Console()
|
|
27
|
-
console.print(f"\n{'=' * 150}")
|
|
28
|
-
console.print(Panel(Syntax(code, lexer="bash"), title="🔍 VS CODE API | Opening file in new instance", subtitle=f"📂 {file_path}"), style="bold blue")
|
|
29
|
-
console.print(f"{'=' * 150}\n")
|
|
30
|
-
|
|
31
|
-
code_path = Path.home().joinpath(".config", "machingconfig", "vscode_api", "code_temp")
|
|
32
|
-
code_path.parent.mkdir(parents=True, exist_ok=True)
|
|
33
|
-
code_path.write_text(code, encoding="utf-8")
|
|
34
|
-
code_path.chmod(0o755)
|
|
35
|
-
import subprocess
|
|
36
|
-
|
|
37
|
-
subprocess.run([str(code_path)], shell=True, check=True)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def main(file_path: Annotated[str, typer.Argument(help="Path to the file to open")]) -> None:
|
|
41
|
-
open_file_in_new_instance(file_path)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def arg_parser() -> None:
|
|
45
|
-
typer.run(main)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if __name__ == "__main__":
|
|
49
|
-
arg_parser()
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
from configparser import SectionProxy
|
|
3
|
-
from machineconfig.utils.io import read_ini
|
|
4
|
-
|
|
5
|
-
config = read_ini(Path.home().joinpath(".ssh", "config"))
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def sync_remote(machine_name: str):
|
|
9
|
-
print(f"""
|
|
10
|
-
{"=" * 150}
|
|
11
|
-
🔄 SYNC REMOTE | Initiating remote code synchronization
|
|
12
|
-
🖥️ Target machine: {machine_name}
|
|
13
|
-
{"=" * 150}
|
|
14
|
-
""")
|
|
15
|
-
|
|
16
|
-
# Handle config as a ConfigParser object
|
|
17
|
-
machine_config: SectionProxy | None = None
|
|
18
|
-
if machine_name in config:
|
|
19
|
-
machine_config = config[machine_name]
|
|
20
|
-
|
|
21
|
-
if machine_config is None:
|
|
22
|
-
error_msg = f"Machine {machine_name} not found in SSH config."
|
|
23
|
-
print(f"""
|
|
24
|
-
{"⚠️" * 20}
|
|
25
|
-
❌ ERROR | {error_msg}
|
|
26
|
-
{"⚠️" * 20}
|
|
27
|
-
""")
|
|
28
|
-
raise ValueError(error_msg)
|
|
29
|
-
|
|
30
|
-
code = f"""
|
|
31
|
-
ssh -o "HostName={machine_config["HostName"]}" -o "User={machine_config["User"]}" -o "ProxyCommand=cloudflared access ssh --hostname %h" -o "Port={machine_config["Port"]}" -o "RequestTTY=yes" -o "RemoteCommand=devops --which update; bash" {machine_name}
|
|
32
|
-
"""
|
|
33
|
-
from rich.console import Console
|
|
34
|
-
from rich.syntax import Syntax
|
|
35
|
-
from rich.panel import Panel
|
|
36
|
-
|
|
37
|
-
console = Console()
|
|
38
|
-
console.print(f"\n{'=' * 150}")
|
|
39
|
-
console.print(Panel(Syntax(code, lexer="bash"), title=f"🔄 SYNC COMMAND | Connecting to {machine_name}", subtitle=f"🌐 Host: {machine_config['HostName']}"), style="bold blue")
|
|
40
|
-
console.print(f"{'=' * 150}\n")
|
|
41
|
-
|
|
42
|
-
code_path = Path.home().joinpath(".config", "machingconfig", "vscode_api", "code_temp")
|
|
43
|
-
code_path.parent.mkdir(parents=True, exist_ok=True)
|
|
44
|
-
code_path.write_text(code, encoding="utf-8")
|
|
45
|
-
code_path.chmod(0o755)
|
|
46
|
-
|
|
47
|
-
print(f"🚀 Executing sync command for {machine_name}...")
|
|
48
|
-
|
|
49
|
-
import subprocess
|
|
50
|
-
|
|
51
|
-
subprocess.run([str(code_path)], shell=True, check=True)
|
|
52
|
-
|
|
53
|
-
print(f"""
|
|
54
|
-
{"=" * 150}
|
|
55
|
-
✅ SUCCESS | Remote sync completed successfully
|
|
56
|
-
🖥️ Machine: {machine_name}
|
|
57
|
-
{"=" * 150}
|
|
58
|
-
""")
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# install https://visualstudio.microsoft.com/visual-cpp-build-tools/
|
|
3
|
-
# include
|
|
4
|
-
# winget install Microsoft.VisualStudio.2022.BuildTools
|
|
5
|
-
# winget install Microsoft.VC++2015-2022Redist-x86
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
. "$env:USERPROFILE\code\machineconfig\.venv\Scripts\Activate.ps1"
|
|
9
|
-
Set-Location C:
|
|
10
|
-
python -m pip install --global-option=build_ext --global-option="-IC:\Program Files\Graphviz\include" --global-option="-LC:\Program Files\Graphviz\lib" pygraphviz
|
|
11
|
-
# not including the options as above (from https://pygraphviz.github.io/documentation/stable/install.html)
|
|
12
|
-
# would result in an error like this: pygraphviz/graphviz_wrap.c(2711): fatal error C1083: Cannot open include file: 'graphviz/cgraph.h': No such file or directory
|
|
13
|
-
|
|
14
|
-
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
wt --profile croshell -d . --title "MyTerminal" --tabColor "red"`; split-pane --vertical --size 0.55 pwsh machineconfig-workingdirectory ~/code/machineconfig -Command "pwd" `; split-pane -V PowerShell -NoExit -Command "cd code/machineconfig" `; split-pane -H wsl.exe cmatrix`; split-pane -V wsl.exe sl
|
|
3
|
-
# wt -p "Command Prompt" `; split-pane -p "Windows PowerShell" `; split-pane -H wsl.exe
|
|
4
|
-
|
|
5
|
-
# See more settings here: https://docs.microsoft.com/en-us/windows/terminal/
|
|
6
|
-
|
machineconfig/profile/create.py
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
This script Takes away all config files from the computer, place them in one directory
|
|
3
|
-
`dotfiles`, and create symlinks to those files from thier original locations.
|
|
4
|
-
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from rich.console import Console
|
|
8
|
-
|
|
9
|
-
from machineconfig.utils.path_extended import PathExtended as PathExtended
|
|
10
|
-
from machineconfig.utils.links import symlink_func, symlink_copy
|
|
11
|
-
from machineconfig.utils.options import choose_from_options
|
|
12
|
-
from machineconfig.utils.source_of_truth import LIBRARY_ROOT, REPO_ROOT
|
|
13
|
-
from machineconfig.profile.shell import create_default_shell_profile
|
|
14
|
-
|
|
15
|
-
import platform
|
|
16
|
-
import os
|
|
17
|
-
import ctypes
|
|
18
|
-
import subprocess
|
|
19
|
-
import tomllib
|
|
20
|
-
from typing import Optional, Any, TypedDict
|
|
21
|
-
|
|
22
|
-
system = platform.system() # Linux or Windows
|
|
23
|
-
ERROR_LIST: list[Any] = [] # append to this after every exception captured.
|
|
24
|
-
SYSTEM = system.lower()
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def get_other_systems(current_system: str) -> list[str]:
|
|
28
|
-
all_systems = ["linux", "windows", "darwin"]
|
|
29
|
-
return [s for s in all_systems if s != current_system.lower()]
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
OTHER_SYSTEMS = get_other_systems(SYSTEM)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class SymlinkMapper(TypedDict):
|
|
36
|
-
this: str
|
|
37
|
-
to_this: str
|
|
38
|
-
contents: Optional[bool]
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
def apply_mapper(choice: Optional[str] = None):
|
|
42
|
-
symlink_mapper: dict[str, dict[str, SymlinkMapper]] = tomllib.loads(LIBRARY_ROOT.joinpath("profile/mapper.toml").read_text(encoding="utf-8"))
|
|
43
|
-
prioritize_to_this = True
|
|
44
|
-
exclude: list[str] = [] # "wsl_linux", "wsl_windows"
|
|
45
|
-
|
|
46
|
-
program_keys_raw: list[str] = list(symlink_mapper.keys())
|
|
47
|
-
program_keys: list[str] = []
|
|
48
|
-
for program_key in program_keys_raw:
|
|
49
|
-
if program_key in exclude or any([another_system in program_key for another_system in OTHER_SYSTEMS]):
|
|
50
|
-
continue
|
|
51
|
-
else:
|
|
52
|
-
program_keys.append(program_key)
|
|
53
|
-
|
|
54
|
-
program_keys.sort()
|
|
55
|
-
if choice is None:
|
|
56
|
-
choice_selected = choose_from_options(msg="Which symlink to create?", options=program_keys + ["all", "none(EXIT)"], default="none(EXIT)", fzf=True, multi=True)
|
|
57
|
-
assert isinstance(choice_selected, list)
|
|
58
|
-
if len(choice_selected) == 1 and choice_selected[0] == "none(EXIT)":
|
|
59
|
-
return # terminate function.
|
|
60
|
-
elif len(choice_selected) == 1 and choice_selected[0] == "all":
|
|
61
|
-
choice_selected = "all" # i.e. program_keys = program_keys
|
|
62
|
-
# overwrite = choose_from_options(msg="Overwrite existing source file?", options=["yes", "no"], default="yes") == "yes"
|
|
63
|
-
from rich.prompt import Confirm
|
|
64
|
-
|
|
65
|
-
prioritize_to_this = Confirm.ask("Overwrite existing source file?", default=True)
|
|
66
|
-
else:
|
|
67
|
-
choice_selected = choice
|
|
68
|
-
|
|
69
|
-
if isinstance(choice_selected, str):
|
|
70
|
-
if str(choice_selected) == "all" and system == "Windows":
|
|
71
|
-
if os.name == "nt":
|
|
72
|
-
try:
|
|
73
|
-
is_admin = ctypes.windll.shell32.IsUserAnAdmin()
|
|
74
|
-
except Exception:
|
|
75
|
-
is_admin = False
|
|
76
|
-
else:
|
|
77
|
-
is_admin = False
|
|
78
|
-
if not is_admin:
|
|
79
|
-
print(f"""
|
|
80
|
-
{"*" * 80}
|
|
81
|
-
⚠️ WARNING: Administrator privileges required
|
|
82
|
-
{"*" * 80}
|
|
83
|
-
""")
|
|
84
|
-
raise RuntimeError("Run terminal as admin and try again, otherwise, there will be too many popups for admin requests and no chance to terminate the program.")
|
|
85
|
-
elif choice_selected == "all":
|
|
86
|
-
print(f"""
|
|
87
|
-
🔍 Processing all program keys:
|
|
88
|
-
{program_keys}
|
|
89
|
-
""")
|
|
90
|
-
pass # i.e. program_keys = program_keys
|
|
91
|
-
else:
|
|
92
|
-
program_keys = [choice_selected]
|
|
93
|
-
else:
|
|
94
|
-
program_keys = choice_selected
|
|
95
|
-
|
|
96
|
-
for program_key in program_keys:
|
|
97
|
-
print(f"\n🔄 Processing {program_key} symlinks...")
|
|
98
|
-
for file_key, file_map in symlink_mapper[program_key].items():
|
|
99
|
-
this = PathExtended(file_map["this"])
|
|
100
|
-
to_this = PathExtended(file_map["to_this"].replace("REPO_ROOT", REPO_ROOT.as_posix()).replace("LIBRARY_ROOT", LIBRARY_ROOT.as_posix()))
|
|
101
|
-
if "contents" in file_map:
|
|
102
|
-
try:
|
|
103
|
-
for a_target in to_this.expanduser().search("*"):
|
|
104
|
-
symlink_func(this=this.joinpath(a_target.name), to_this=a_target, prioritize_to_this=prioritize_to_this)
|
|
105
|
-
except Exception as ex:
|
|
106
|
-
print(f"❌ Config error: {program_key} | {file_key} | missing keys 'this ==> to_this'. {ex}")
|
|
107
|
-
if "copy" in file_map:
|
|
108
|
-
try:
|
|
109
|
-
symlink_copy(this=this, to_this=to_this, prioritize_to_this=prioritize_to_this)
|
|
110
|
-
except Exception as ex:
|
|
111
|
-
print(f"❌ Config error: {program_key} | {file_key} | {ex}")
|
|
112
|
-
else:
|
|
113
|
-
try:
|
|
114
|
-
symlink_func(this=this, to_this=to_this, prioritize_to_this=prioritize_to_this)
|
|
115
|
-
except Exception as ex:
|
|
116
|
-
print(f"❌ Config error: {program_key} | {file_key} | missing keys 'this ==> to_this'. {ex}")
|
|
117
|
-
|
|
118
|
-
if program_key == "ssh" and system == "Linux": # permissions of ~/dotfiles/.ssh should be adjusted
|
|
119
|
-
try:
|
|
120
|
-
print("\n🔒 Setting secure permissions for SSH files...")
|
|
121
|
-
subprocess.run("chmod 700 ~/.ssh/", check=True)
|
|
122
|
-
subprocess.run("chmod 700 ~/dotfiles/creds/.ssh/", check=True) # may require sudo
|
|
123
|
-
subprocess.run("chmod 600 ~/dotfiles/creds/.ssh/*", check=True)
|
|
124
|
-
print("✅ SSH permissions set successfully")
|
|
125
|
-
except Exception as e:
|
|
126
|
-
ERROR_LIST.append(e)
|
|
127
|
-
print(f"❌ Error setting SSH permissions: {e}")
|
|
128
|
-
|
|
129
|
-
if system == "Linux":
|
|
130
|
-
print("\n📜 Setting executable permissions for scripts...")
|
|
131
|
-
subprocess.run(f"chmod +x {LIBRARY_ROOT.joinpath(f'scripts/{system.lower()}')} -R", shell=True, capture_output=True, text=True)
|
|
132
|
-
print("✅ Script permissions updated")
|
|
133
|
-
|
|
134
|
-
if len(ERROR_LIST) > 0:
|
|
135
|
-
print(f"""
|
|
136
|
-
{"*" * 80}
|
|
137
|
-
❗ ERRORS ENCOUNTERED DURING PROCESSING
|
|
138
|
-
{"*" * 80}
|
|
139
|
-
{ERROR_LIST}
|
|
140
|
-
{"*" * 80}
|
|
141
|
-
""")
|
|
142
|
-
else:
|
|
143
|
-
print(f"""
|
|
144
|
-
{"*" * 80}
|
|
145
|
-
✅ All symlinks created successfully!
|
|
146
|
-
{"*" * 80}
|
|
147
|
-
""")
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
def main_symlinks():
|
|
151
|
-
console = Console()
|
|
152
|
-
print("\n")
|
|
153
|
-
console.rule("[bold blue]🔗 CREATING SYMLINKS 🔗")
|
|
154
|
-
apply_mapper(choice="all")
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
def main_profile():
|
|
158
|
-
console = Console()
|
|
159
|
-
print("\n")
|
|
160
|
-
console.rule("[bold green]🐚 CREATING SHELL PROFILE 🐚")
|
|
161
|
-
create_default_shell_profile()
|
|
162
|
-
print(f"""
|
|
163
|
-
{"=" * 80}
|
|
164
|
-
✨ Configuration setup complete! ✨
|
|
165
|
-
{"=" * 80}
|
|
166
|
-
""")
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if __name__ == "__main__":
|
|
170
|
-
pass
|
machineconfig/profile/shell.py
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
"""shell"""
|
|
2
|
-
|
|
3
|
-
from machineconfig.utils.path_extended import PathExtended as PathExtended
|
|
4
|
-
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
5
|
-
|
|
6
|
-
import platform
|
|
7
|
-
import os
|
|
8
|
-
import subprocess
|
|
9
|
-
from rich.console import Console
|
|
10
|
-
from rich.panel import Panel
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
system = platform.system()
|
|
14
|
-
sep = ";" if system == "Windows" else ":" # PATH separator, this is special for PATH object, not to be confused with PathExtended.sep (normal paths), usually / or \
|
|
15
|
-
PATH = os.environ["PATH"].split(sep) # this is a list of paths in PATH variable, not a crocodile.file_management.P object.
|
|
16
|
-
console = Console()
|
|
17
|
-
BOX_WIDTH = 100 # Define BOX_WIDTH or get it from a config
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def get_shell_profile_path() -> PathExtended:
|
|
21
|
-
if system == "Windows":
|
|
22
|
-
result = subprocess.run(["pwsh", "-Command", "$PROFILE"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=False)
|
|
23
|
-
if result.returncode == 0 and result.stdout.strip():
|
|
24
|
-
profile_path = PathExtended(result.stdout.strip())
|
|
25
|
-
else:
|
|
26
|
-
print(f"Command failed with return code {result.returncode}")
|
|
27
|
-
print(f"stdout: {result.stdout}")
|
|
28
|
-
print(f"stderr: {result.stderr}")
|
|
29
|
-
raise ValueError(f"""Could not get profile path for Windows. Got stdout: {result.stdout}, stderr: {result.stderr}""")
|
|
30
|
-
elif system == "Linux":
|
|
31
|
-
profile_path = PathExtended("~/.bashrc").expanduser()
|
|
32
|
-
else:
|
|
33
|
-
raise ValueError(f"""Not implemented for this system {system}""")
|
|
34
|
-
console.print(Panel(f"""🐚 SHELL PROFILE | Working with path: `{profile_path}`""", title="[bold blue]Shell Profile[/bold blue]", border_style="blue"))
|
|
35
|
-
return profile_path
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def create_default_shell_profile() -> None:
|
|
39
|
-
shell_profile_path = get_shell_profile_path()
|
|
40
|
-
shell_profile = shell_profile_path.read_text(encoding="utf-8")
|
|
41
|
-
if system == "Windows":
|
|
42
|
-
source = f""". {str(PathExtended(LIBRARY_ROOT).joinpath("settings/shells/pwsh/init.ps1").collapseuser()).replace("~", "$HOME")}"""
|
|
43
|
-
else:
|
|
44
|
-
source = f"""source {str(PathExtended(LIBRARY_ROOT).joinpath("settings/shells/bash/init.sh").collapseuser()).replace("~", "$HOME")}"""
|
|
45
|
-
if source in shell_profile:
|
|
46
|
-
console.print(Panel("🔄 PROFILE | Skipping init script sourcing - already present in profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
|
|
47
|
-
else:
|
|
48
|
-
console.print(Panel("📝 PROFILE | Adding init script sourcing to profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
|
|
49
|
-
shell_profile += "\n" + source + "\n"
|
|
50
|
-
if system == "Linux":
|
|
51
|
-
result = subprocess.run(["cat", "/proc/version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=False)
|
|
52
|
-
if result.returncode == 0 and result.stdout:
|
|
53
|
-
version_info = result.stdout.lower()
|
|
54
|
-
if "microsoft" in version_info or "wsl" in version_info:
|
|
55
|
-
shell_profile += "\ncd ~"
|
|
56
|
-
console.print("📌 WSL detected - adding 'cd ~' to profile to avoid Windows filesystem")
|
|
57
|
-
shell_profile_path.parent.mkdir(parents=True, exist_ok=True)
|
|
58
|
-
shell_profile_path.write_text(shell_profile, encoding="utf-8")
|
|
59
|
-
console.print(Panel("✅ Profile updated successfully", title="[bold blue]Profile[/bold blue]", border_style="blue"))
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
# def append_temporarily(dirs: list[str], kind: Literal["append", "prefix", "replace"]) -> str:
|
|
63
|
-
# dirs_ = []
|
|
64
|
-
# for path in dirs:
|
|
65
|
-
# path_rel = PathExtended(path).collapseuser(strict=False)
|
|
66
|
-
# if path_rel.as_posix() in PATH or str(path_rel) in PATH or str(path_rel.expanduser()) in PATH or path_rel.expanduser().as_posix() in PATH:
|
|
67
|
-
# print(f"Path passed `{path}` is already in PATH, skipping the appending.")
|
|
68
|
-
# else:
|
|
69
|
-
# dirs_.append(path_rel.as_posix() if system == "Linux" else str(path_rel))
|
|
70
|
-
# dirs = dirs_
|
|
71
|
-
# if len(dirs) == 0:
|
|
72
|
-
# return ""
|
|
73
|
-
|
|
74
|
-
# if system == "Windows":
|
|
75
|
-
# """Source: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.2"""
|
|
76
|
-
# if kind == "append":
|
|
77
|
-
# command = rf'$env:Path += ";{sep.join(dirs)}"' # Append to the Path variable in the current window:
|
|
78
|
-
# elif kind == "prefix":
|
|
79
|
-
# command = rf'$env:Path = "{sep.join(dirs)};" + $env:Path' # Prefix the Path variable in the current window:
|
|
80
|
-
# elif kind == "replace":
|
|
81
|
-
# command = rf'$env:Path = "{sep.join(dirs)}"' # Replace the Path variable in the current window (use with caution!):
|
|
82
|
-
# else:
|
|
83
|
-
# raise KeyError
|
|
84
|
-
# return command # if run is False else tm.run(command, shell="powershell")
|
|
85
|
-
# elif system in ["Linux", "Darwin"]:
|
|
86
|
-
# result = f'export PATH="{sep.join(dirs)}:$PATH"'
|
|
87
|
-
# else:
|
|
88
|
-
# raise ValueError
|
|
89
|
-
# return result
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
# def main_add_sources_to_shell_profile(profile_path: Optional[str], choice: Optional[str]) -> None:
|
|
93
|
-
# sources: list[str] = read_toml(LIBRARY_ROOT.joinpath("profile/sources.toml"))[system.lower()]["files"]
|
|
94
|
-
# console.print(Panel("🔄 Adding sources to shell profile", title="[bold blue]Sources[/bold blue]", border_style="blue"))
|
|
95
|
-
|
|
96
|
-
# if choice is None:
|
|
97
|
-
# choice_obj = choose_from_options(msg="Which patch to add?", options=sources + ["all", "none(EXIT)"], default="none(EXIT)", multi=True)
|
|
98
|
-
# if isinstance(choice_obj, str):
|
|
99
|
-
# if choice_obj == "all":
|
|
100
|
-
# choice = choice_obj
|
|
101
|
-
# elif choice_obj == "none(EXIT)":
|
|
102
|
-
# return
|
|
103
|
-
# else:
|
|
104
|
-
# sources = [choice_obj]
|
|
105
|
-
# else: # isinstance(choice_obj, list):
|
|
106
|
-
# sources = choice_obj
|
|
107
|
-
# elif choice == "none(EXIT)":
|
|
108
|
-
# return
|
|
109
|
-
|
|
110
|
-
# if isinstance(profile_path, str):
|
|
111
|
-
# profile_path_obj = PathExtended(profile_path)
|
|
112
|
-
# else:
|
|
113
|
-
# profile_path_obj = get_shell_profile_path()
|
|
114
|
-
# profile = profile_path_obj.read_text(encoding="utf-8")
|
|
115
|
-
|
|
116
|
-
# for a_file in sources:
|
|
117
|
-
# tmp = a_file.replace("REPO_ROOT", REPO_ROOT.as_posix()).replace("LIBRARY_ROOT", LIBRARY_ROOT.as_posix())
|
|
118
|
-
# file = PathExtended(tmp).collapseuser() # this makes the shell profile interuseable across machines.
|
|
119
|
-
# file = file.as_posix() if system == "Linux" else str(file)
|
|
120
|
-
# if file not in profile:
|
|
121
|
-
# if system == "Windows":
|
|
122
|
-
# profile += f"\n. {file}"
|
|
123
|
-
# console.print(f"➕ Added PowerShell source: {file}")
|
|
124
|
-
# elif system == "Linux":
|
|
125
|
-
# profile += f"\nsource {file}"
|
|
126
|
-
# console.print(f"➕ Added Bash source: {file}")
|
|
127
|
-
# else:
|
|
128
|
-
# raise ValueError(f"Not implemented for this system {system}")
|
|
129
|
-
# else:
|
|
130
|
-
# console.print(f"⏭️ Source already present: {file}")
|
|
131
|
-
|
|
132
|
-
# profile_path_obj.write_text(profile, encoding="utf-8")
|
|
133
|
-
# console.print(Panel("✅ Shell profile updated with sources", title="[bold blue]Sources[/bold blue]", border_style="blue"))
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
# def main_add_patches_to_shell_profile(profile_path: Optional[str], choice: Optional[str]) -> None:
|
|
137
|
-
# patches: list[str] = [item.as_posix() for item in PathExtended(LIBRARY_ROOT).joinpath(f"profile/patches/{system.lower()}").search()]
|
|
138
|
-
|
|
139
|
-
# console.print(Panel("🩹 Adding patches to shell profile", title="[bold blue]Patches[/bold blue]", border_style="blue"))
|
|
140
|
-
|
|
141
|
-
# if choice is None:
|
|
142
|
-
# choice_chosen = choose_from_options(msg="Which patch to add?", options=list(patches) + ["all", "none(EXIT)"], default="none(EXIT)", multi=False)
|
|
143
|
-
# assert isinstance(choice_chosen, str), f"Choice must be a string or a list of strings, not {type(choice)}"
|
|
144
|
-
# choice = choice_chosen
|
|
145
|
-
# if choice == "none(EXIT)":
|
|
146
|
-
# return None
|
|
147
|
-
# elif str(choice) == "all":
|
|
148
|
-
# console.print("📌 Adding all patches to profile")
|
|
149
|
-
# else:
|
|
150
|
-
# patches = [choice]
|
|
151
|
-
# console.print(f"📌 Adding selected patch: {choice}")
|
|
152
|
-
|
|
153
|
-
# profile_path_obj = PathExtended(profile_path) if isinstance(profile_path, str) else get_shell_profile_path()
|
|
154
|
-
# profile = profile_path_obj.read_text(encoding="utf-8")
|
|
155
|
-
|
|
156
|
-
# for patch_path in patches:
|
|
157
|
-
# patch_path_obj = PathExtended(patch_path)
|
|
158
|
-
# patch = patch_path_obj.read_text(encoding="utf-8")
|
|
159
|
-
# if patch in profile:
|
|
160
|
-
# console.print(f"⏭️ Patch already present: {patch_path_obj.name}")
|
|
161
|
-
# else:
|
|
162
|
-
# profile += "\n" + patch
|
|
163
|
-
# console.print(f"➕ Added patch: {patch_path_obj.name}")
|
|
164
|
-
|
|
165
|
-
# if system == "Linux":
|
|
166
|
-
# res = Terminal().run("cat /proc/version").op
|
|
167
|
-
# if "microsoft" in res.lower() or "wsl" in res.lower():
|
|
168
|
-
# profile += "\ncd ~" # this is to make sure that the current dir is not in the windows file system, which is terribly slow and its a bad idea to be there anyway.
|
|
169
|
-
# console.print("📌 WSL detected - adding 'cd ~' to profile to avoid Windows filesystem")
|
|
170
|
-
|
|
171
|
-
# profile_path_obj.write_text(profile, encoding="utf-8")
|
|
172
|
-
# console.print(Panel("✅ Shell profile updated with patches", title="[bold blue]Patches[/bold blue]", border_style="blue"))
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
if __name__ == "__main__":
|
|
176
|
-
pass
|