machineconfig 3.7__py3-none-any.whl → 7.69__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 +7 -21
- machineconfig/jobs/installer/custom/boxes.py +61 -0
- machineconfig/jobs/installer/custom/gh.py +128 -0
- machineconfig/jobs/{python_custom_installers → installer/custom}/hx.py +84 -18
- machineconfig/jobs/installer/custom_dev/alacritty.py +86 -0
- machineconfig/jobs/installer/custom_dev/brave.py +82 -0
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py +59 -0
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +63 -0
- machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/cursor.py +7 -7
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
- machineconfig/jobs/installer/custom_dev/espanso.py +117 -0
- machineconfig/jobs/installer/custom_dev/goes.py +68 -0
- machineconfig/jobs/installer/custom_dev/lvim.py +89 -0
- machineconfig/jobs/installer/custom_dev/nerdfont.py +111 -0
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +149 -0
- machineconfig/jobs/installer/custom_dev/redis.py +88 -0
- machineconfig/jobs/installer/custom_dev/sysabc.py +145 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +92 -0
- machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/winget.py +2 -3
- machineconfig/jobs/installer/installer_data.json +3440 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/brave.sh +4 -14
- machineconfig/jobs/{python_custom_installers/scripts/linux/warp-cli.sh → installer/linux_scripts/cloudflare_warp_cli.sh} +5 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/docker.sh +6 -18
- machineconfig/jobs/installer/linux_scripts/docker_start.sh +37 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/edge.sh +3 -11
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
- machineconfig/jobs/{python_custom_installers/scripts/linux → 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/{python_custom_installers/scripts/linux → installer/linux_scripts}/redis.sh +6 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/vscode.sh +5 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → 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/__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/{mcinit.py → initai.py} +3 -38
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +114 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +88 -22
- machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -1
- machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
- machineconfig/scripts/python/ai/solutions/gemini/settings.json +1 -1
- 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 +129 -198
- machineconfig/scripts/python/define.py +31 -0
- machineconfig/scripts/python/devops.py +45 -131
- machineconfig/scripts/python/devops_navigator.py +6 -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/fire_jobs.py +166 -235
- machineconfig/scripts/python/ftpx.py +164 -100
- machineconfig/scripts/python/helpers/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/symantic_search.py +25 -0
- 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} +52 -39
- machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +13 -18
- machineconfig/scripts/python/helpers_cloud/cloud_sync.py +81 -0
- machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -1
- machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +32 -20
- 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/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -2
- machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -89
- 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_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 +620 -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/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 +187 -0
- machineconfig/scripts/python/mcfg_entry.py +63 -0
- machineconfig/scripts/python/msearch.py +40 -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 -51
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +67 -0
- machineconfig/scripts/python/sessions.py +167 -0
- machineconfig/scripts/python/terminal.py +127 -0
- machineconfig/scripts/python/utils.py +66 -0
- machineconfig/scripts/windows/mounts/Restore-ThunderbirdProfile.ps1 +92 -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/lfcd.ps1 +1 -1
- 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 +61 -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 +14 -1
- 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 +28 -203
- 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 +17 -0
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -189
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
- machineconfig/utils/accessories.py +52 -12
- 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/decompress.py +45 -0
- machineconfig/utils/files/read.py +95 -0
- machineconfig/utils/installer_utils/github_release_bulk.py +188 -0
- machineconfig/utils/installer_utils/install_from_url.py +180 -0
- machineconfig/utils/installer_utils/installer_class.py +239 -316
- machineconfig/utils/installer_utils/installer_cli.py +186 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +90 -5
- machineconfig/utils/installer_utils/installer_runner.py +191 -0
- machineconfig/utils/io.py +77 -24
- machineconfig/utils/links.py +309 -100
- machineconfig/utils/meta.py +255 -0
- machineconfig/utils/notifications.py +1 -1
- machineconfig/utils/options.py +19 -47
- machineconfig/utils/path_extended.py +111 -121
- 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 +28 -6
- machineconfig/utils/schemas/layouts/layout_types.py +34 -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.69.dist-info/METADATA +124 -0
- machineconfig-7.69.dist-info/RECORD +454 -0
- machineconfig-7.69.dist-info/entry_points.txt +15 -0
- machineconfig/cluster/templates/cli_click.py +0 -102
- machineconfig/cluster/templates/cli_gooey.py +0 -115
- machineconfig/cluster/templates/utils.py +0 -51
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -32
- 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 -48
- machineconfig/jobs/python/vscode/link_ve.py +0 -63
- machineconfig/jobs/python/vscode/select_interpreter.py +0 -87
- machineconfig/jobs/python/vscode/sync_code.py +0 -58
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +0 -63
- machineconfig/jobs/python_custom_installers/dev/aider.py +0 -37
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +0 -65
- machineconfig/jobs/python_custom_installers/dev/brave.py +0 -71
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +0 -50
- machineconfig/jobs/python_custom_installers/dev/code.py +0 -51
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -78
- machineconfig/jobs/python_custom_installers/dev/espanso.py +0 -90
- machineconfig/jobs/python_custom_installers/dev/goes.py +0 -55
- machineconfig/jobs/python_custom_installers/dev/lvim.py +0 -77
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +0 -68
- machineconfig/jobs/python_custom_installers/dev/redis.py +0 -65
- machineconfig/jobs/python_custom_installers/dev/reverse_proxy.md +0 -31
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +0 -70
- machineconfig/jobs/python_custom_installers/docker.py +0 -74
- machineconfig/jobs/python_custom_installers/gh.py +0 -97
- machineconfig/jobs/python_custom_installers/scripts/linux/docker_start.sh +0 -45
- machineconfig/jobs/python_custom_installers/scripts/linux/pgsql.sh +0 -49
- machineconfig/jobs/python_custom_installers/scripts/linux/timescaledb.sh +0 -85
- machineconfig/jobs/python_custom_installers/warp-cli.py +0 -71
- machineconfig/jobs/python_generic_installers/config.json +0 -603
- machineconfig/jobs/python_generic_installers/config.json.bak +0 -414
- machineconfig/jobs/python_generic_installers/dev/config.archive.json +0 -18
- machineconfig/jobs/python_generic_installers/dev/config.json +0 -825
- machineconfig/jobs/python_generic_installers/dev/config.json.bak +0 -565
- machineconfig/jobs/python_linux_installers/archive/config.json +0 -18
- machineconfig/jobs/python_linux_installers/archive/config.json.bak +0 -10
- machineconfig/jobs/python_linux_installers/config.json +0 -145
- machineconfig/jobs/python_linux_installers/config.json.bak +0 -110
- machineconfig/jobs/python_linux_installers/dev/config.json +0 -276
- machineconfig/jobs/python_linux_installers/dev/config.json.bak +0 -206
- machineconfig/jobs/python_windows_installers/archive/file.json +0 -11
- machineconfig/jobs/python_windows_installers/config.json +0 -82
- machineconfig/jobs/python_windows_installers/config.json.bak +0 -56
- machineconfig/jobs/python_windows_installers/dev/config.json +0 -4
- machineconfig/jobs/python_windows_installers/dev/config.json.bak +0 -3
- 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 -169
- 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/kill_process +0 -2
- machineconfig/scripts/linux/mcinit +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/archive/im2text.py +0 -34
- machineconfig/scripts/python/archive/tmate_conn.py +0 -41
- machineconfig/scripts/python/archive/tmate_start.py +0 -44
- machineconfig/scripts/python/cloud_repo_sync.py +0 -192
- machineconfig/scripts/python/cloud_sync.py +0 -85
- machineconfig/scripts/python/devops_devapps_install.py +0 -202
- machineconfig/scripts/python/devops_update_repos.py +0 -180
- machineconfig/scripts/python/dotfile.py +0 -52
- machineconfig/scripts/python/fire_agents.py +0 -176
- 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 -84
- machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -66
- 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 -160
- machineconfig/scripts/python/snapshot.py +0 -25
- machineconfig/scripts/python/start_terminals.py +0 -121
- machineconfig/scripts/python/wsl_windows_transfer.py +0 -72
- 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/kill_process.ps1 +0 -1
- machineconfig/scripts/windows/mcinit.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/setup_windows/wt_and_pwsh/install_nerd_fonts.py +0 -100
- machineconfig/utils/ai/generate_file_checklist.py +0 -68
- machineconfig/utils/installer.py +0 -255
- machineconfig-3.7.dist-info/METADATA +0 -165
- machineconfig-3.7.dist-info/RECORD +0 -432
- machineconfig-3.7.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/jobs/{python → installer}/__init__.py +0 -0
- machineconfig/jobs/{python_custom_installers → installer/custom_dev}/__init__.py +0 -0
- machineconfig/{setup_windows/wt_and_pwsh → jobs/installer/powershell_scripts}/install_fonts.ps1 +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_generic_installers → scripts/python/helpers_agents}/__init__.py +0 -0
- machineconfig/{jobs/python_linux_installers → scripts/python/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/python_linux_installers/dev → 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/python_windows_installers → scripts/python/helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.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/{jobs/python_windows_installers/archive → scripts/python/helpers_devops}/__init__.py +0 -0
- /machineconfig/{jobs/python_windows_installers/dev → scripts/python/helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/scripts/python/{helpers → helpers_fire_command}/__init__.py +0 -0
- /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_fire_command/fire_jobs_streamlit_helper.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/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_sessions/__init__.py} +0 -0
- /machineconfig/scripts/{windows/share_nfs.ps1 → python/nw/__init__.py} +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/{settings/yazi/keymap.toml → utils/files/ouch/__init__.py} +0 -0
- {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/WHEEL +0 -0
- {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Optional, Any
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class FireJobArgs:
|
|
7
|
+
"""Type-safe dataclass for fire_jobs command line arguments."""
|
|
8
|
+
|
|
9
|
+
path: str = "."
|
|
10
|
+
function: Optional[str] = None
|
|
11
|
+
ve: str = ""
|
|
12
|
+
cmd: bool = False
|
|
13
|
+
interactive: bool = False
|
|
14
|
+
debug: bool = False
|
|
15
|
+
choose_function: bool = False
|
|
16
|
+
loop: bool = False
|
|
17
|
+
jupyter: bool = False
|
|
18
|
+
marimo: bool = False
|
|
19
|
+
submit_to_cloud: bool = False
|
|
20
|
+
remote: bool = False
|
|
21
|
+
module: bool = False
|
|
22
|
+
streamlit: bool = False
|
|
23
|
+
environment: str = ""
|
|
24
|
+
holdDirectory: bool = False
|
|
25
|
+
PathExport: bool = False
|
|
26
|
+
git_pull: bool = False
|
|
27
|
+
optimized: bool = False
|
|
28
|
+
zellij_tab: Optional[str] = None
|
|
29
|
+
watch: bool = False
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def extract_kwargs(args: FireJobArgs) -> dict[str, object]:
|
|
33
|
+
"""Extract kwargs from command line arguments in Fire format.
|
|
34
|
+
|
|
35
|
+
Parses Fire-like arguments (e.g., --a=2, --name=value) from sys.argv
|
|
36
|
+
and returns them as a dictionary.
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
Dictionary mapping argument names to their values
|
|
40
|
+
"""
|
|
41
|
+
import sys
|
|
42
|
+
|
|
43
|
+
kwargs: dict[str, object] = {}
|
|
44
|
+
|
|
45
|
+
# Look for Fire-style arguments in sys.argv
|
|
46
|
+
for arg in sys.argv:
|
|
47
|
+
# Skip the -- separator
|
|
48
|
+
if arg == '--':
|
|
49
|
+
continue
|
|
50
|
+
|
|
51
|
+
# Match patterns like --key=value or --key value (but we'll focus on --key=value)
|
|
52
|
+
if arg.startswith('--') and '=' in arg:
|
|
53
|
+
key, value = arg[2:].split('=', 1) # Remove -- prefix and split on first =
|
|
54
|
+
|
|
55
|
+
# Try to convert value to appropriate type
|
|
56
|
+
kwargs[key] = _convert_value_type(value)
|
|
57
|
+
elif arg.startswith('--') and '=' not in arg:
|
|
58
|
+
# Handle boolean flags like --debug
|
|
59
|
+
key = arg[2:] # Remove -- prefix
|
|
60
|
+
|
|
61
|
+
# Skip empty key (this would happen if someone just used '--')
|
|
62
|
+
if not key:
|
|
63
|
+
continue
|
|
64
|
+
|
|
65
|
+
# Check if next argument exists and doesn't start with --
|
|
66
|
+
arg_index = sys.argv.index(arg)
|
|
67
|
+
if arg_index + 1 < len(sys.argv) and not sys.argv[arg_index + 1].startswith('--'):
|
|
68
|
+
# Next argument is the value
|
|
69
|
+
value = sys.argv[arg_index + 1]
|
|
70
|
+
kwargs[key] = _convert_value_type(value)
|
|
71
|
+
else:
|
|
72
|
+
# It's a boolean flag
|
|
73
|
+
kwargs[key] = True
|
|
74
|
+
|
|
75
|
+
return kwargs
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _convert_value_type(value: str) -> object:
|
|
79
|
+
"""Convert string value to appropriate Python type."""
|
|
80
|
+
# Try to convert to int
|
|
81
|
+
try:
|
|
82
|
+
if '.' not in value and 'e' not in value.lower():
|
|
83
|
+
return int(value)
|
|
84
|
+
except ValueError:
|
|
85
|
+
pass
|
|
86
|
+
|
|
87
|
+
# Try to convert to float
|
|
88
|
+
try:
|
|
89
|
+
return float(value)
|
|
90
|
+
except ValueError:
|
|
91
|
+
pass
|
|
92
|
+
|
|
93
|
+
# Try to convert boolean strings
|
|
94
|
+
if value.lower() in ('true', '1', 'yes', 'on'):
|
|
95
|
+
return True
|
|
96
|
+
elif value.lower() in ('false', '0', 'no', 'off'):
|
|
97
|
+
return False
|
|
98
|
+
|
|
99
|
+
# Try to convert None
|
|
100
|
+
if value.lower() == 'none':
|
|
101
|
+
return None
|
|
102
|
+
|
|
103
|
+
# Try to parse as list (comma-separated values)
|
|
104
|
+
if ',' in value:
|
|
105
|
+
items = [_convert_value_type(item.strip()) for item in value.split(',')]
|
|
106
|
+
return items
|
|
107
|
+
|
|
108
|
+
# Return as string if no conversion possible
|
|
109
|
+
return value
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def parse_fire_args_from_argv() -> str:
|
|
113
|
+
"""Parse arguments after -- separator for Fire compatibility.
|
|
114
|
+
|
|
115
|
+
Returns:
|
|
116
|
+
String of Fire-compatible arguments to append to command
|
|
117
|
+
"""
|
|
118
|
+
import sys
|
|
119
|
+
|
|
120
|
+
if '--' in sys.argv:
|
|
121
|
+
separator_index = sys.argv.index('--')
|
|
122
|
+
fire_args = sys.argv[separator_index + 1:]
|
|
123
|
+
# Join all Fire arguments - they should already be in Fire format
|
|
124
|
+
return ' '.join(fire_args) if fire_args else ''
|
|
125
|
+
|
|
126
|
+
return ''
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def parse_fire_args_from_context(ctx: Any) -> str:
|
|
130
|
+
"""Parse Fire arguments from typer context.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
ctx: Typer context containing raw arguments
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
String of Fire-compatible arguments to append to command
|
|
137
|
+
"""
|
|
138
|
+
# Get remaining args that weren't consumed by typer
|
|
139
|
+
if hasattr(ctx, 'args') and ctx.args:
|
|
140
|
+
args = ctx.args
|
|
141
|
+
# Filter out the -- separator if present
|
|
142
|
+
if args and args[0] == '--':
|
|
143
|
+
args = args[1:]
|
|
144
|
+
return ' '.join(args)
|
|
145
|
+
return ''
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import platform
|
|
4
|
+
from typing import Optional
|
|
5
|
+
import tomllib
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from machineconfig.utils.accessories import randstr
|
|
8
|
+
from machineconfig.utils.options import choose_from_options
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def choose_function_or_lines(choice_file: Path, kwargs_dict: dict[str, object]) -> tuple[Optional[str], Path, dict[str, object]]:
|
|
12
|
+
"""
|
|
13
|
+
Choose a function to run from a Python file or lines from a shell script.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
tuple: (choice_function, choice_file, kwargs_dict)
|
|
17
|
+
- choice_function: The selected function name or None
|
|
18
|
+
- choice_file: The file path (potentially modified for shell scripts)
|
|
19
|
+
- kwargs_dict: Updated kwargs dictionary with user-provided arguments
|
|
20
|
+
"""
|
|
21
|
+
choice_function: Optional[str] = None
|
|
22
|
+
|
|
23
|
+
if choice_file.suffix == ".py":
|
|
24
|
+
from machineconfig.scripts.python.helpers_fire_command.file_wrangler import parse_pyfile
|
|
25
|
+
options, func_args = parse_pyfile(file_path=str(choice_file))
|
|
26
|
+
choice_function_tmp = choose_from_options(msg="Choose a function to run", options=options, fzf=True, multi=False)
|
|
27
|
+
assert isinstance(choice_function_tmp, str), f"choice_function must be a string. Got {type(choice_function_tmp)}"
|
|
28
|
+
choice_index = options.index(choice_function_tmp)
|
|
29
|
+
choice_function = choice_function_tmp.split(" -- ")[0]
|
|
30
|
+
choice_function_args = func_args[choice_index]
|
|
31
|
+
|
|
32
|
+
if choice_function == "RUN AS MAIN":
|
|
33
|
+
choice_function = None
|
|
34
|
+
if len(choice_function_args) > 0 and len(kwargs_dict) == 0:
|
|
35
|
+
for item in choice_function_args:
|
|
36
|
+
kwargs_dict[item.name] = input(f"Please enter a value for argument `{item.name}` (type = {item.type}) (default = {item.default}) : ") or item.default
|
|
37
|
+
elif choice_file.suffix == ".sh":
|
|
38
|
+
options = []
|
|
39
|
+
for line in choice_file.read_text(encoding="utf-8").splitlines():
|
|
40
|
+
if line.startswith("#"):
|
|
41
|
+
continue
|
|
42
|
+
if line == "":
|
|
43
|
+
continue
|
|
44
|
+
if line.startswith("echo"):
|
|
45
|
+
continue
|
|
46
|
+
options.append(line)
|
|
47
|
+
chosen_lines = choose_from_options(msg="Choose a line to run", options=options, fzf=True, multi=True)
|
|
48
|
+
choice_file = Path.home().joinpath(f"tmp_results/tmp_scripts/shell/{randstr(10)}.sh")
|
|
49
|
+
choice_file.parent.mkdir(parents=True, exist_ok=True)
|
|
50
|
+
choice_file.write_text("\n".join(chosen_lines), encoding="utf-8")
|
|
51
|
+
choice_function = None
|
|
52
|
+
|
|
53
|
+
return choice_function, choice_file, kwargs_dict
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def get_command_streamlit(choice_file: Path, environment: str, repo_root: Optional[Path]) -> str:
|
|
57
|
+
import socket
|
|
58
|
+
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
59
|
+
try:
|
|
60
|
+
s.connect(("8.8.8.8", 1))
|
|
61
|
+
local_ip_v4 = s.getsockname()[0]
|
|
62
|
+
except Exception:
|
|
63
|
+
local_ip_v4 = socket.gethostbyname(socket.gethostname())
|
|
64
|
+
finally:
|
|
65
|
+
s.close()
|
|
66
|
+
computer_name = platform.node()
|
|
67
|
+
port = 8501
|
|
68
|
+
toml_path: Optional[Path] = None
|
|
69
|
+
toml_path_maybe = choice_file.parent.joinpath(".streamlit/config.toml")
|
|
70
|
+
if toml_path_maybe.exists():
|
|
71
|
+
toml_path = toml_path_maybe
|
|
72
|
+
elif choice_file.parent.name == "pages":
|
|
73
|
+
toml_path_maybe = choice_file.parent.parent.joinpath(".streamlit/config.toml")
|
|
74
|
+
if toml_path_maybe.exists():
|
|
75
|
+
toml_path = toml_path_maybe
|
|
76
|
+
if toml_path is not None:
|
|
77
|
+
print(f"📄 Reading config.toml @ {toml_path}")
|
|
78
|
+
config = tomllib.loads(toml_path.read_text(encoding="utf-8"))
|
|
79
|
+
if "server" in config:
|
|
80
|
+
if "port" in config["server"]:
|
|
81
|
+
port = config["server"]["port"]
|
|
82
|
+
secrets_path = toml_path.with_name("secrets.toml")
|
|
83
|
+
if repo_root is not None:
|
|
84
|
+
secrets_template_path = Path.home().joinpath(f"dotfiles/creds/streamlit/{Path(repo_root).name}/{choice_file.name}/secrets.toml")
|
|
85
|
+
if environment != "" and not secrets_path.exists() and secrets_template_path.exists():
|
|
86
|
+
secrets_template = tomllib.loads(secrets_template_path.read_text(encoding="utf-8"))
|
|
87
|
+
if environment == "ip":
|
|
88
|
+
host_url = f"http://{local_ip_v4}:{port}/oauth2callback"
|
|
89
|
+
elif environment == "localhost":
|
|
90
|
+
host_url = f"http://localhost:{port}/oauth2callback"
|
|
91
|
+
elif environment == "hostname":
|
|
92
|
+
host_url = f"http://{computer_name}:{port}/oauth2callback"
|
|
93
|
+
else:
|
|
94
|
+
host_url = f"http://{environment}:{port}/oauth2callback"
|
|
95
|
+
try:
|
|
96
|
+
secrets_template["auth"]["redirect_uri"] = host_url
|
|
97
|
+
secrets_template["auth"]["cookie_secret"] = randstr(35)
|
|
98
|
+
secrets_template["auth"]["auth0"]["redirect_uri"] = host_url
|
|
99
|
+
# save_toml(obj=secrets_template, path=secrets_path)
|
|
100
|
+
except Exception as ex:
|
|
101
|
+
print(ex)
|
|
102
|
+
raise ex
|
|
103
|
+
message = f"🚀 Streamlit app is running @:\n1- http://{local_ip_v4}:{port}\n2- http://{computer_name}:{port}\n3- http://localhost:{port}"
|
|
104
|
+
from rich.panel import Panel
|
|
105
|
+
from rich import print as rprint
|
|
106
|
+
|
|
107
|
+
rprint(Panel(message))
|
|
108
|
+
exe = f"streamlit run --server.address 0.0.0.0 --server.headless true --server.port {port}"
|
|
109
|
+
# exe = f"cd '{choice_file.parent}'; " + exe
|
|
110
|
+
return exe
|
|
@@ -13,5 +13,5 @@ IFS=: read -ra selected < <(
|
|
|
13
13
|
--preview 'batcat --color=always {1} --highlight-line {2}' \
|
|
14
14
|
--preview-window 'up,60%,border-bottom,+{2}+3/3,~3'
|
|
15
15
|
)
|
|
16
|
-
[ -n "${selected[0]}" ] &&
|
|
16
|
+
[ -n "${selected[0]}" ] && hx "${selected[0]}" "+${selected[1]}"
|
|
17
17
|
|
|
@@ -19,5 +19,5 @@ IFS=: read -ra selected < <(
|
|
|
19
19
|
--preview 'bat --color=always {1} --highlight-line {2}' \
|
|
20
20
|
--preview-window 'up,60%,border-bottom,+{2}+3/3,~3'
|
|
21
21
|
)
|
|
22
|
-
[ -n "${selected[0]}" ] &&
|
|
22
|
+
[ -n "${selected[0]}" ] && hx "${selected[0]}:${selected[1]}:${selected[2]}"
|
|
23
23
|
"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Helper modules for the devops navigator TUI application.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from machineconfig.scripts.python.helpers_navigator.data_models import CommandInfo, ArgumentInfo
|
|
6
|
+
from machineconfig.scripts.python.helpers_navigator.command_builder import CommandBuilderScreen
|
|
7
|
+
from machineconfig.scripts.python.helpers_navigator.command_tree import CommandTree
|
|
8
|
+
from machineconfig.scripts.python.helpers_navigator.command_detail import CommandDetail
|
|
9
|
+
from machineconfig.scripts.python.helpers_navigator.search_bar import SearchBar
|
|
10
|
+
from machineconfig.scripts.python.helpers_navigator.main_app import CommandNavigatorApp
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"CommandInfo",
|
|
14
|
+
"ArgumentInfo",
|
|
15
|
+
"CommandBuilderScreen",
|
|
16
|
+
"CommandTree",
|
|
17
|
+
"CommandDetail",
|
|
18
|
+
"SearchBar",
|
|
19
|
+
"CommandNavigatorApp",
|
|
20
|
+
]
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Command builder screen for building commands with arguments.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from textual.app import ComposeResult
|
|
7
|
+
from textual.containers import Horizontal, VerticalScroll
|
|
8
|
+
from textual.widgets import Static, Input, Label, Button
|
|
9
|
+
from textual.screen import ModalScreen
|
|
10
|
+
from machineconfig.scripts.python.helpers_navigator.data_models import CommandInfo, ArgumentInfo
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CommandBuilderScreen(ModalScreen[str]):
|
|
14
|
+
"""Modal screen for building command with arguments."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, command_info: CommandInfo) -> None:
|
|
17
|
+
super().__init__()
|
|
18
|
+
self.command_info = command_info
|
|
19
|
+
self.arguments = self._parse_arguments()
|
|
20
|
+
self.input_widgets: dict[str, Input] = {}
|
|
21
|
+
|
|
22
|
+
def _parse_arguments(self) -> list[ArgumentInfo]:
|
|
23
|
+
"""Parse arguments from help_text."""
|
|
24
|
+
args: list[ArgumentInfo] = []
|
|
25
|
+
seen_names: set[str] = set()
|
|
26
|
+
|
|
27
|
+
if not self.command_info.help_text:
|
|
28
|
+
return args
|
|
29
|
+
|
|
30
|
+
help_text = self.command_info.help_text
|
|
31
|
+
|
|
32
|
+
optional_pattern = re.compile(r'--(\w+(?:-\w+)*)\s+<([^>]+)>')
|
|
33
|
+
for match in optional_pattern.finditer(help_text):
|
|
34
|
+
arg_name = match.group(1)
|
|
35
|
+
placeholder = match.group(2)
|
|
36
|
+
if arg_name not in seen_names:
|
|
37
|
+
args.append(ArgumentInfo(name=arg_name, is_required=False, is_flag=False, placeholder=placeholder))
|
|
38
|
+
seen_names.add(arg_name)
|
|
39
|
+
|
|
40
|
+
flag_pattern = re.compile(r'--(\w+(?:-\w+)*)(?:\s|$)')
|
|
41
|
+
for match in flag_pattern.finditer(help_text):
|
|
42
|
+
arg_name = match.group(1)
|
|
43
|
+
if arg_name not in seen_names:
|
|
44
|
+
args.append(ArgumentInfo(name=arg_name, is_required=False, is_flag=True))
|
|
45
|
+
seen_names.add(arg_name)
|
|
46
|
+
|
|
47
|
+
positional_pattern = re.compile(r'<(\w+)>(?!\s*>)')
|
|
48
|
+
for match in positional_pattern.finditer(help_text):
|
|
49
|
+
arg_name = match.group(1)
|
|
50
|
+
if arg_name not in seen_names and not re.search(rf'--\w+\s+<{arg_name}>', help_text):
|
|
51
|
+
args.append(ArgumentInfo(name=arg_name, is_required=True, is_flag=False, placeholder=arg_name))
|
|
52
|
+
seen_names.add(arg_name)
|
|
53
|
+
|
|
54
|
+
return args
|
|
55
|
+
|
|
56
|
+
def compose(self) -> ComposeResult:
|
|
57
|
+
"""Compose the modal screen."""
|
|
58
|
+
with VerticalScroll():
|
|
59
|
+
yield Static(f"[bold cyan]Build Command: {self.command_info.command}[/bold cyan]\n", classes="title")
|
|
60
|
+
|
|
61
|
+
if not self.arguments:
|
|
62
|
+
yield Static("[yellow]No arguments needed for this command[/yellow]\n")
|
|
63
|
+
else:
|
|
64
|
+
for arg in self.arguments:
|
|
65
|
+
if arg.is_flag:
|
|
66
|
+
label_text = f"--{arg.name} (flag, leave empty to skip)"
|
|
67
|
+
yield Label(label_text)
|
|
68
|
+
input_widget = Input(placeholder="yes/no or leave empty", id=f"arg_{arg.name}")
|
|
69
|
+
else:
|
|
70
|
+
required_marker = "[red]*[/red]" if arg.is_required else "[dim](optional)[/dim]"
|
|
71
|
+
label_text = f"--{arg.name} {required_marker}"
|
|
72
|
+
yield Label(label_text)
|
|
73
|
+
input_widget = Input(placeholder=arg.placeholder or arg.name, id=f"arg_{arg.name}")
|
|
74
|
+
|
|
75
|
+
self.input_widgets[arg.name] = input_widget
|
|
76
|
+
yield input_widget
|
|
77
|
+
|
|
78
|
+
with Horizontal(classes="buttons"):
|
|
79
|
+
yield Button("Execute", variant="primary", id="execute")
|
|
80
|
+
yield Button("Copy", variant="success", id="copy")
|
|
81
|
+
yield Button("Cancel", variant="error", id="cancel")
|
|
82
|
+
|
|
83
|
+
def on_button_pressed(self, event: Button.Pressed) -> None:
|
|
84
|
+
"""Handle button presses."""
|
|
85
|
+
if event.button.id == "cancel":
|
|
86
|
+
self.dismiss("")
|
|
87
|
+
return
|
|
88
|
+
|
|
89
|
+
built_command = self._build_command()
|
|
90
|
+
|
|
91
|
+
if event.button.id == "execute":
|
|
92
|
+
self.dismiss(f"EXECUTE:{built_command}")
|
|
93
|
+
elif event.button.id == "copy":
|
|
94
|
+
self.dismiss(f"COPY:{built_command}")
|
|
95
|
+
|
|
96
|
+
def _build_command(self) -> str:
|
|
97
|
+
"""Build the complete command with arguments."""
|
|
98
|
+
parts = [self.command_info.command]
|
|
99
|
+
|
|
100
|
+
for arg in self.arguments:
|
|
101
|
+
input_widget = self.input_widgets.get(arg.name)
|
|
102
|
+
if input_widget:
|
|
103
|
+
value = input_widget.value.strip()
|
|
104
|
+
if value:
|
|
105
|
+
if arg.is_flag:
|
|
106
|
+
if value.lower() in ('yes', 'y', 'true', '1'):
|
|
107
|
+
parts.append(f"--{arg.name}")
|
|
108
|
+
else:
|
|
109
|
+
parts.append(f"--{arg.name} {value}")
|
|
110
|
+
|
|
111
|
+
return " ".join(parts)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Command detail widget for displaying command information.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from textual.widgets import Static
|
|
7
|
+
from rich.panel import Panel
|
|
8
|
+
from rich.text import Text
|
|
9
|
+
from machineconfig.scripts.python.helpers_navigator.data_models import CommandInfo
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CommandDetail(Static):
|
|
13
|
+
"""Widget for displaying command details."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, *, id: str) -> None: # type: ignore
|
|
16
|
+
super().__init__(id=id)
|
|
17
|
+
self.command_info: Optional[CommandInfo] = None
|
|
18
|
+
|
|
19
|
+
def update_command(self, command_info: Optional[CommandInfo]) -> None:
|
|
20
|
+
"""Update displayed command information."""
|
|
21
|
+
self.command_info = command_info
|
|
22
|
+
if command_info is None:
|
|
23
|
+
self.update("Select a command to view details")
|
|
24
|
+
return
|
|
25
|
+
|
|
26
|
+
content = Text()
|
|
27
|
+
content.append(f"{'🗂️ Group' if command_info.is_group else '⚡ Command'}: ", style="bold cyan")
|
|
28
|
+
content.append(f"{command_info.name}\n\n", style="bold yellow")
|
|
29
|
+
|
|
30
|
+
content.append("Description: ", style="bold green")
|
|
31
|
+
content.append(f"{command_info.description}\n\n", style="white")
|
|
32
|
+
|
|
33
|
+
content.append("Command: ", style="bold blue")
|
|
34
|
+
content.append(f"{command_info.command}\n\n", style="bold white")
|
|
35
|
+
|
|
36
|
+
if command_info.help_text:
|
|
37
|
+
content.append("Usage: ", style="bold magenta")
|
|
38
|
+
content.append(f"{command_info.help_text}\n\n", style="white")
|
|
39
|
+
|
|
40
|
+
if command_info.module_path:
|
|
41
|
+
content.append("Module: ", style="bold red")
|
|
42
|
+
content.append(f"{command_info.module_path}\n", style="white")
|
|
43
|
+
|
|
44
|
+
self.update(Panel(content, title=f"[bold]{command_info.name}[/bold]", border_style="blue"))
|