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
|
@@ -1,226 +1,157 @@
|
|
|
1
|
-
#!/usr/bin/env -S uv run --project
|
|
1
|
+
#!/usr/bin/env -S uv run --no-dev --project
|
|
2
2
|
|
|
3
3
|
"""
|
|
4
4
|
croshell
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
import argparse
|
|
8
|
-
from machineconfig.utils.path_extended import PathExtended as PathExtended
|
|
9
|
-
from machineconfig.utils.accessories import randstr
|
|
10
|
-
|
|
11
|
-
from machineconfig.utils.options import choose_from_options
|
|
12
|
-
from machineconfig.utils.ve import get_ve_activate_line
|
|
13
|
-
from typing import Optional
|
|
14
|
-
from rich.console import Console
|
|
15
|
-
from rich.panel import Panel
|
|
16
|
-
from rich.text import Text # Added import for rich.text
|
|
17
|
-
# from machineconfig.utils.utils2 import pprint
|
|
18
|
-
|
|
19
|
-
console = Console()
|
|
20
|
-
|
|
21
5
|
|
|
22
|
-
|
|
23
|
-
return f"""
|
|
24
|
-
try:
|
|
25
|
-
from crocodile.file_management import P as PathExtended
|
|
26
|
-
except ImportError:
|
|
27
|
-
from machineconfig.utils.path_reduced import PathExtended
|
|
28
|
-
pycode = PathExtended(r'{path}').read_text(encoding="utf-8")
|
|
29
|
-
pycode = pycode.split("except Exception: print(pycode)")[2]
|
|
6
|
+
"""
|
|
30
7
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
8
|
+
from typing import Annotated, Optional
|
|
9
|
+
import typer
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def croshell(
|
|
13
|
+
path: Annotated[Optional[str], typer.Argument(help="path of file to read.")] = None,
|
|
14
|
+
python: Annotated[bool, typer.Option("--python", "-p", help="flag to use python over IPython.")] = False,
|
|
15
|
+
profile: Annotated[Optional[str], typer.Option("--profile", "-P", help="ipython profile to use, defaults to default profile.")] = None,
|
|
16
|
+
jupyter: Annotated[bool, typer.Option("--jupyter", "-j", help="run in jupyter interactive console")] = False,
|
|
17
|
+
vscode: Annotated[bool, typer.Option("--vscode", "-c", help="open the script in vscode")] = False,
|
|
18
|
+
# streamlit_viewer: Annotated[bool, typer.Option("--streamlit", "-s", help="view in streamlit app")] = False,
|
|
19
|
+
uv_with: Annotated[Optional[str], typer.Option("--uv-with", "-w", help="specify uv with packages to use")] = None,
|
|
20
|
+
visidata: Annotated[bool, typer.Option("--visidata", "-v", help="open data file in visidata")] = False,
|
|
21
|
+
marimo: Annotated[bool, typer.Option("--marimo", "-m", help="open the notebook using marimo if available")] = False,
|
|
22
|
+
) -> None:
|
|
23
|
+
if uv_with is not None: user_uv_with_line = f"--with {uv_with} "
|
|
24
|
+
else: user_uv_with_line = ""
|
|
25
|
+
|
|
26
|
+
from machineconfig.scripts.python.helpers_croshell.crosh import get_read_python_file_pycode, get_read_data_pycode
|
|
27
|
+
from machineconfig.utils.meta import lambda_to_python_script
|
|
28
|
+
from pathlib import Path
|
|
29
|
+
from machineconfig.utils.accessories import randstr
|
|
30
|
+
import json
|
|
34
31
|
from rich.console import Console
|
|
35
|
-
from rich.
|
|
32
|
+
from rich.panel import Panel
|
|
36
33
|
console = Console()
|
|
37
|
-
if pycode.strip() != "":
|
|
38
|
-
console.print(Panel(Syntax(pycode, lexer="python"), title='{title}'), style="bold red")
|
|
39
|
-
except Exception: print(pycode)
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def get_read_data_pycode(path: str):
|
|
44
|
-
# We need to be careful here since we're generating Python code as a string
|
|
45
|
-
# that will use f-strings itself
|
|
46
|
-
return f"""
|
|
47
|
-
from rich.panel import Panel
|
|
48
|
-
from rich.text import Text
|
|
49
|
-
from rich.console import Console
|
|
50
|
-
console = Console()
|
|
51
|
-
p = PathExtended(r'{path}').absolute()
|
|
52
|
-
try:
|
|
53
|
-
dat = p.readit()
|
|
54
|
-
if isinstance(dat, dict):
|
|
55
|
-
panel_title = f"📄 File Data: {{p.name}}"
|
|
56
|
-
console.print(Panel(Text(str(dat), justify="left"), title=panel_title, expand=False))
|
|
57
|
-
pprint(dat, PathExtended.name)
|
|
58
|
-
else:
|
|
59
|
-
panel_title = f"📄 Successfully read the file: {{p.name}}"
|
|
60
|
-
console.print(Panel(Text(str(dat), justify="left"), title=panel_title, expand=False))
|
|
61
|
-
except Exception as e:
|
|
62
|
-
error_message = f'''❌ ERROR READING FILE\nFile: {{p.name}}\nError: {{e}}'''
|
|
63
|
-
console.print(Panel(Text(error_message, justify="left"), title="Error", expand=False, border_style="red"))
|
|
64
|
-
"""
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
def get_read_pyfile_pycode(path: PathExtended, as_module: bool, cmd: str = ""):
|
|
68
|
-
if as_module:
|
|
69
|
-
pycode = rf"""
|
|
70
|
-
import sys
|
|
71
|
-
sys.path.append(r'{path.parent}')
|
|
72
|
-
from {path.stem} import *
|
|
73
|
-
{cmd}
|
|
74
|
-
"""
|
|
75
|
-
else:
|
|
76
|
-
pycode = f"""
|
|
77
|
-
__file__ = PathExtended(r'{path}')
|
|
78
|
-
{path.read_text(encoding="utf-8")}
|
|
79
|
-
"""
|
|
80
|
-
return pycode
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
def build_parser():
|
|
84
|
-
parser = argparse.ArgumentParser(description="Generic Parser to launch crocodile shell.")
|
|
85
|
-
# A FLAG:
|
|
86
|
-
parser.add_argument("--module", "-m", help="flag to run the file as a module as opposed to main.", action="store_true", default=False) # default is running as main, unless indicated by --module flag.
|
|
87
|
-
parser.add_argument("--newWindow", "-w", help="flag for running in new window.", action="store_true", default=False)
|
|
88
|
-
parser.add_argument("--nonInteratctive", "-N", help="flag for a non-interactive session.", action="store_true", default=False)
|
|
89
|
-
parser.add_argument("--python", "-p", help="flag to use python over IPython.", action="store_true", default=False)
|
|
90
|
-
parser.add_argument("--fzf", "-F", help="search with fuzzy finder for python scripts and run them", action="store_true", default=False)
|
|
91
|
-
|
|
92
|
-
# OPTIONAL KEYWORD
|
|
93
|
-
parser.add_argument("--ve", "-v", help="virtual enviroment to use, defaults to activated ve, if existed, else ve.", default=None)
|
|
94
|
-
parser.add_argument("--profile", "-P", help="ipython profile to use, defaults to default profile.", default=None)
|
|
95
|
-
parser.add_argument("--read", "-r", dest="read", help="read a binary file.", default="")
|
|
96
|
-
parser.add_argument("--file", "-f", dest="file", help="python file path to interpret", default="")
|
|
97
|
-
parser.add_argument("--cmd", "-c", dest="cmd", help="python command to interpret", default="")
|
|
98
|
-
parser.add_argument("--terminal", "-t", dest="terminal", help="specify which terminal to be used. Default console host.", default="") # can choose `wt`
|
|
99
|
-
parser.add_argument("--shell", "-S", dest="shell", help="specify which shell to be used. Defaults to CMD.", default="")
|
|
100
|
-
parser.add_argument("--jupyter", "-j", dest="jupyter", help="run in jupyter interactive console", action="store_true", default=False)
|
|
101
|
-
parser.add_argument("--stViewer", "-s", dest="streamlit_viewer", help="view in streamlit app", action="store_true", default=False)
|
|
102
|
-
|
|
103
|
-
args = parser.parse_args()
|
|
104
|
-
# print(f"Crocodile.run: args of the firing command = {args.__dict__}")
|
|
105
34
|
|
|
106
35
|
# ==================================================================================
|
|
107
36
|
# flags processing
|
|
108
|
-
interactivity = "
|
|
109
|
-
interpreter = "python" if
|
|
110
|
-
ipython_profile: Optional[str] =
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
file = choose_from_options(msg="Choose a python file to run", options=options, fzf=True, multi=False)
|
|
125
|
-
assert isinstance(file, str)
|
|
126
|
-
program = PathExtended(file).read_text(encoding="utf-8")
|
|
127
|
-
text = f"📄 Selected file: {PathExtended(file).name}"
|
|
128
|
-
console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
|
|
129
|
-
|
|
130
|
-
elif args.file != "":
|
|
131
|
-
file = PathExtended(args.file.lstrip()).expanduser().absolute()
|
|
132
|
-
program = get_read_pyfile_pycode(file, as_module=args.module, cmd=args.cmd)
|
|
133
|
-
text1 = f"📄 Loading file: {file.name}"
|
|
134
|
-
text2 = f"🔄 Mode: {'Module' if args.module else 'Script'}"
|
|
135
|
-
console.print(Panel(f"{text1}\n{text2}", title="[bold blue]Info[/bold blue]"))
|
|
136
|
-
|
|
137
|
-
elif args.read != "":
|
|
138
|
-
if args.streamlit_viewer:
|
|
139
|
-
# text = "📊 STARTING STREAMLIT VIEWER"
|
|
140
|
-
# console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
|
|
141
|
-
# from machineconfig.scripts.python.viewer import run
|
|
142
|
-
# py_file_path = run(data_path=args.read, data=None, get_figure=None)
|
|
143
|
-
# final_program = f"""
|
|
144
|
-
# #!/bin/bash
|
|
145
|
-
# streamlit run {py_file_path}
|
|
146
|
-
# """
|
|
147
|
-
# PROGRAM_PATH.write_text(data=final_program, encoding="utf-8")
|
|
148
|
-
return None
|
|
149
|
-
file = PathExtended(str(args.read).lstrip()).expanduser().absolute()
|
|
150
|
-
program = get_read_data_pycode(str(file))
|
|
151
|
-
text = f"📄 Reading data from: {file.name}"
|
|
152
|
-
console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
|
|
153
|
-
|
|
37
|
+
interactivity = "-i"
|
|
38
|
+
interpreter = "python" if python else "ipython"
|
|
39
|
+
ipython_profile: Optional[str] = profile
|
|
40
|
+
file_obj = Path.cwd() # initialization value, could be modified according to args.
|
|
41
|
+
if path is not None:
|
|
42
|
+
from machineconfig.utils.path_helper import get_choice_file
|
|
43
|
+
choice_file = get_choice_file(path=path, suffixes={".*"})
|
|
44
|
+
if choice_file.suffix == ".py":
|
|
45
|
+
program = choice_file.read_text(encoding="utf-8")
|
|
46
|
+
text = f"📄 Selected file: {choice_file.name}"
|
|
47
|
+
console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
|
|
48
|
+
else:
|
|
49
|
+
program = lambda_to_python_script(lambda: get_read_data_pycode(path=str(choice_file)),
|
|
50
|
+
in_global=True, import_module=False)
|
|
51
|
+
text = f"📄 Reading data from: {file_obj.name}"
|
|
52
|
+
console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
|
|
154
53
|
else: # if nothing is specified, then run in interactive mode.
|
|
155
|
-
text = "⌨️ Entering interactive mode"
|
|
156
|
-
console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
|
|
157
|
-
# from machineconfig.scripts.python.croshell import InteractiveShell
|
|
158
|
-
# InteractiveShell().run()
|
|
159
|
-
# return None
|
|
160
54
|
program = ""
|
|
161
|
-
|
|
162
55
|
preprogram = """
|
|
163
|
-
|
|
164
56
|
#%%
|
|
165
|
-
try:
|
|
166
|
-
from crocodile.croshell import *
|
|
167
|
-
print_header()
|
|
168
|
-
print_logo(logo="crocodile")
|
|
169
|
-
except ImportError:
|
|
170
|
-
print("Crocodile not found, skipping import.")
|
|
171
|
-
from pathlib import Path
|
|
172
|
-
print(f"🐊 Crocodile Shell | Running @ {Path.cwd()}")
|
|
173
57
|
"""
|
|
174
|
-
|
|
175
|
-
|
|
58
|
+
def preprogram_func():
|
|
59
|
+
from machineconfig.utils.files.headers import print_header, print_logo
|
|
60
|
+
print_header()
|
|
61
|
+
print_logo("Machineconfig")
|
|
62
|
+
from pathlib import Path
|
|
63
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
64
|
+
_ = Path, PathExtended # avoid unused import warnings
|
|
65
|
+
import inspect, textwrap
|
|
66
|
+
from types import FunctionType
|
|
67
|
+
def get_body_simple_function_no_args(f: FunctionType):
|
|
68
|
+
return textwrap.dedent("\n".join(inspect.getsource(f).splitlines()[1:]))
|
|
69
|
+
preprogram += get_body_simple_function_no_args(preprogram_func)
|
|
70
|
+
|
|
71
|
+
from pathlib import Path
|
|
72
|
+
pyfile = Path.home().joinpath(f"tmp_results/tmp_scripts/python/croshell/{randstr()}/script.py")
|
|
176
73
|
pyfile.parent.mkdir(parents=True, exist_ok=True)
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
title = "Executed code"
|
|
184
|
-
total_program = preprogram + add_print_header_pycode(str(pyfile), title=title) + program
|
|
185
|
-
|
|
186
|
-
pyfile.write_text(total_program, encoding="utf-8")
|
|
187
|
-
|
|
74
|
+
title = "Reading Data"
|
|
75
|
+
def_code = lambda_to_python_script(lambda: get_read_python_file_pycode(path=str(pyfile), title=title),
|
|
76
|
+
in_global=False, import_module=False)
|
|
77
|
+
# print(def_code)
|
|
78
|
+
python_program = preprogram + "\n\n" + def_code + program
|
|
79
|
+
pyfile.write_text(python_program, encoding="utf-8")
|
|
188
80
|
# ve_root_from_file, ipython_profile = get_ve_path_and_ipython_profile(PathExtended(file))
|
|
189
81
|
ipython_profile = ipython_profile if ipython_profile is not None else "default"
|
|
190
82
|
# ve_activateion_line = get_ve_activate_line(ve_name=args.ve or ve_profile_suggested, a_path=str(PathExtended.cwd()))
|
|
191
|
-
activate_ve_line = get_ve_activate_line(ve_root="$HOME/code/machineconfig/.venv")
|
|
192
|
-
final_program = f"""
|
|
193
|
-
#!/bin/bash
|
|
194
|
-
|
|
195
|
-
{activate_ve_line}
|
|
196
83
|
|
|
84
|
+
# prepare notebook target path (avoid relying on locals())
|
|
85
|
+
nb_target = pyfile.with_suffix(".ipynb")
|
|
86
|
+
if jupyter:
|
|
87
|
+
try:
|
|
88
|
+
nb_path = pyfile.with_suffix(".ipynb")
|
|
89
|
+
nb_content = {
|
|
90
|
+
"cells": [
|
|
91
|
+
{
|
|
92
|
+
"cell_type": "code",
|
|
93
|
+
"metadata": {"language": "python"},
|
|
94
|
+
"source": [python_program],
|
|
95
|
+
"outputs": [],
|
|
96
|
+
"execution_count": None,
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"metadata": {},
|
|
100
|
+
"nbformat": 4,
|
|
101
|
+
"nbformat_minor": 5,
|
|
102
|
+
}
|
|
103
|
+
nb_path.write_text(json.dumps(nb_content), encoding="utf-8")
|
|
104
|
+
nb_target = nb_path
|
|
105
|
+
except Exception:
|
|
106
|
+
# if writing fails, fall back to the default nb_target already set
|
|
107
|
+
pass
|
|
108
|
+
if visidata:
|
|
109
|
+
if file_obj.suffix == ".json":
|
|
110
|
+
fire_line = f"uv run --python 3.14 {user_uv_with_line} --with visidata vd {str(file_obj)}"
|
|
111
|
+
else:
|
|
112
|
+
fire_line = f"uv run --python 3.14 {user_uv_with_line}--with visidata,pyarrow vd {str(file_obj)}"
|
|
113
|
+
elif marimo:
|
|
114
|
+
if Path.home().joinpath("code/machineconfig").exists(): requirements = f"""{user_uv_with_line} --with marimo --project "{str(Path.home().joinpath("code/machineconfig"))}" """
|
|
115
|
+
else: requirements = f"""--python 3.14 {user_uv_with_line} user_uv_with_line--with "marimo,cowsay,machineconfig[plot]>=7.69" """
|
|
116
|
+
fire_line = f"""
|
|
117
|
+
cd {str(pyfile.parent)}
|
|
118
|
+
uv run --python 3.14 --with "marimo" marimo convert {pyfile.name} -o marimo_nb.py
|
|
119
|
+
uv run {requirements} marimo edit --host 0.0.0.0 marimo_nb.py
|
|
120
|
+
"""
|
|
121
|
+
elif jupyter:
|
|
122
|
+
if Path.home().joinpath("code/machineconfig").exists(): requirements = f"""{user_uv_with_line} --with jupyterlab --project "{str(Path.home().joinpath("code/machineconfig"))}" """
|
|
123
|
+
else: requirements = f"""{user_uv_with_line} --with "cowsay,machineconfig[plot]>=7.69" """
|
|
124
|
+
fire_line = f"uv run {requirements} jupyter-lab {str(nb_target)}"
|
|
125
|
+
elif vscode:
|
|
126
|
+
user_uv_add = f"uv add {uv_with}" if uv_with is not None else ""
|
|
127
|
+
fire_line = f"""
|
|
128
|
+
cd {str(pyfile.parent)}
|
|
129
|
+
uv init --python 3.14
|
|
130
|
+
uv venv
|
|
131
|
+
uv add "cowsay,machineconfig[plot]>=7.69"
|
|
132
|
+
uv add {user_uv_add}
|
|
133
|
+
# code serve-web
|
|
134
|
+
code --new-window {str(pyfile)}
|
|
197
135
|
"""
|
|
198
|
-
if args.jupyter:
|
|
199
|
-
fire_line = f"code --new-window {str(pyfile)}"
|
|
200
136
|
else:
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
final_program += fire_line
|
|
207
|
-
|
|
208
|
-
title = "🚀 LAUNCHING SCRIPT"
|
|
209
|
-
text1 = f"📄 Script: {pyfile}"
|
|
210
|
-
text2 = f"🔥 Command: {fire_line}"
|
|
211
|
-
launch_message = f"{title} \n{text1}\n{text2}"
|
|
212
|
-
console.print(Panel(Text(launch_message, justify="left"), expand=False, border_style="blue"))
|
|
137
|
+
if interpreter == "ipython": profile = f" --profile {ipython_profile} --no-banner"
|
|
138
|
+
else: profile = ""
|
|
139
|
+
if Path.home().joinpath("code/machineconfig").exists(): ve_line = f"""{user_uv_with_line} --project "{str(Path.home().joinpath("code/machineconfig"))}" """
|
|
140
|
+
else: ve_line = f"""--python 3.14 {user_uv_with_line} --with "cowsay,machineconfig[plot]>=7.69" """
|
|
141
|
+
fire_line = f"uv run {ve_line} {interpreter} {interactivity} {profile} {str(pyfile)}"
|
|
213
142
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
import subprocess
|
|
143
|
+
from machineconfig.utils.code import exit_then_run_shell_script
|
|
144
|
+
exit_then_run_shell_script(fire_line, strict=False)
|
|
217
145
|
|
|
218
|
-
subprocess.run(final_program, shell=True, check=True)
|
|
219
146
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
# else: return subprocess.run([res], shell=True, capture_output=False, text=True, check=True)
|
|
147
|
+
def main() -> None:
|
|
148
|
+
typer.run(croshell)
|
|
223
149
|
|
|
224
150
|
|
|
225
151
|
if __name__ == "__main__":
|
|
226
|
-
|
|
152
|
+
# def func(flag: Annotated[bool, typer.Option("--flag/-nf", help="dummy flag for debugging", flag_value=False, is_flag=True)]=True):
|
|
153
|
+
# console.print(f"flag: {flag}")
|
|
154
|
+
# app = typer.Typer()
|
|
155
|
+
# app.command()(func)
|
|
156
|
+
# app()
|
|
157
|
+
main()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
"""
|
|
3
|
+
Minimalist programs that only print scripts without frills so it can be sourced by by shell.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
import typer
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def define_scripts():
|
|
11
|
+
import platform
|
|
12
|
+
if platform.system() != "Linux":
|
|
13
|
+
raise RuntimeError("This command is only supported on Linux systems.")
|
|
14
|
+
from machineconfig.setup_linux import INTERACTIVE as script_path
|
|
15
|
+
script = script_path.read_text(encoding="utf-8")
|
|
16
|
+
print(script)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def get_app():
|
|
20
|
+
app = typer.Typer(add_completion=False, no_args_is_help=True)
|
|
21
|
+
app.command(name="scripts", help="define all scripts", no_args_is_help=False)(define_scripts)
|
|
22
|
+
return app
|
|
23
|
+
|
|
24
|
+
def main():
|
|
25
|
+
# return app
|
|
26
|
+
app = get_app()
|
|
27
|
+
app()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# if __name__ == "__main__":
|
|
31
|
+
# main()
|
|
@@ -1,133 +1,47 @@
|
|
|
1
1
|
"""devops with emojis"""
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
choice_key = choose_from_options(msg="", options=options, header="🛠️ DEVOPS", default=options[0], multi=False)
|
|
49
|
-
except KeyboardInterrupt:
|
|
50
|
-
console.print(Panel("❌ Operation cancelled by user", title_align="left", border_style="red", width=BOX_WIDTH))
|
|
51
|
-
return
|
|
52
|
-
else:
|
|
53
|
-
choice_key = Options[which].value
|
|
54
|
-
|
|
55
|
-
console.print(Panel(f"🔧 SELECTED OPERATION\n{choice_key}", title_align="left", border_style="green", width=BOX_WIDTH))
|
|
56
|
-
|
|
57
|
-
if choice_key == Options.update.value:
|
|
58
|
-
console.print(Panel("🔄 Updating essential repositories...", width=BOX_WIDTH, border_style="blue"))
|
|
59
|
-
import machineconfig.scripts.python.devops_update_repos as helper
|
|
60
|
-
|
|
61
|
-
helper.main()
|
|
62
|
-
elif choice_key == Options.cli_install.value:
|
|
63
|
-
console.print(Panel("⚙️ Installing development applications...", width=BOX_WIDTH, border_style="blue"))
|
|
64
|
-
import machineconfig.scripts.python.devops_devapps_install as helper
|
|
65
|
-
|
|
66
|
-
helper.main(which=None)
|
|
67
|
-
|
|
68
|
-
elif choice_key == Options.sym_new.value:
|
|
69
|
-
console.print(Panel("🔄 Creating new symlinks...", width=BOX_WIDTH, border_style="blue"))
|
|
70
|
-
import machineconfig.jobs.python.python_ve_symlink as helper
|
|
71
|
-
|
|
72
|
-
helper.main()
|
|
73
|
-
|
|
74
|
-
elif choice_key == Options.sym_path_shell.value:
|
|
75
|
-
console.print(Panel("🔗 Setting up symlinks, PATH, and shell profile...", width=BOX_WIDTH, border_style="blue"))
|
|
76
|
-
import machineconfig.profile.create as helper
|
|
77
|
-
|
|
78
|
-
helper.main()
|
|
79
|
-
"echo '✅ done with symlinks'"
|
|
80
|
-
|
|
81
|
-
elif choice_key == Options.ssh_add_pubkey.value:
|
|
82
|
-
console.print(Panel("🔑 Adding public SSH key to this machine...", width=BOX_WIDTH, border_style="blue"))
|
|
83
|
-
import machineconfig.scripts.python.devops_add_ssh_key as helper
|
|
84
|
-
|
|
85
|
-
helper.main()
|
|
86
|
-
|
|
87
|
-
elif choice_key == Options.ssh_use_pair.value:
|
|
88
|
-
console.print(Panel("❌ ERROR: Not Implemented\nSSH key pair connection feature is not yet implemented", title_align="left", border_style="red", width=BOX_WIDTH))
|
|
89
|
-
raise NotImplementedError
|
|
90
|
-
|
|
91
|
-
elif choice_key == Options.ssh_add_id.value: # so that you can SSH directly withuot pointing to identity key.
|
|
92
|
-
console.print(Panel("🗝️ Adding SSH identity (private key) to this machine...", width=BOX_WIDTH, border_style="blue"))
|
|
93
|
-
import machineconfig.scripts.python.devops_add_identity as helper
|
|
94
|
-
|
|
95
|
-
helper.main()
|
|
96
|
-
|
|
97
|
-
elif choice_key == Options.ssh_setup.value:
|
|
98
|
-
console.print(Panel("📡 Setting up SSH...", width=BOX_WIDTH, border_style="blue"))
|
|
99
|
-
_program_windows = """Invoke-WebRequest https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/openssh_all.ps1 | Invoke-Expression # https://github.com/thisismygitrepo.keys"""
|
|
100
|
-
_program_linux = """curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/openssh_all.sh | sudo bash # https://github.com/thisismygitrepo.keys"""
|
|
101
|
-
_program_linux if system() == "Linux" else _program_windows
|
|
102
|
-
import subprocess
|
|
103
|
-
|
|
104
|
-
subprocess.run(_program_linux if system() == "Linux" else _program_windows, shell=True, check=True)
|
|
105
|
-
|
|
106
|
-
elif choice_key == Options.ssh_setup_wsl.value:
|
|
107
|
-
console.print(Panel("🐧 Setting up SSH for WSL...", width=BOX_WIDTH, border_style="blue"))
|
|
108
|
-
"""curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/openssh_wsl.sh | sudo bash"""
|
|
109
|
-
|
|
110
|
-
elif choice_key == Options.backup.value:
|
|
111
|
-
console.print(Panel("💾 Creating backup...", width=BOX_WIDTH, border_style="blue"))
|
|
112
|
-
from machineconfig.scripts.python.devops_backup_retrieve import main_backup_retrieve
|
|
113
|
-
|
|
114
|
-
main_backup_retrieve(direction="BACKUP")
|
|
115
|
-
|
|
116
|
-
elif choice_key == Options.retreive.value:
|
|
117
|
-
console.print(Panel("📥 Retrieving backup...", width=BOX_WIDTH, border_style="blue"))
|
|
118
|
-
from machineconfig.scripts.python.devops_backup_retrieve import main_backup_retrieve
|
|
119
|
-
|
|
120
|
-
main_backup_retrieve(direction="RETRIEVE")
|
|
121
|
-
|
|
122
|
-
elif choice_key == Options.scheduler.value:
|
|
123
|
-
console.print(Panel("⏰ Setting up scheduler...", width=BOX_WIDTH, border_style="blue"))
|
|
124
|
-
# from machineconfig.scripts.python.scheduler import main as helper
|
|
125
|
-
# helper()
|
|
126
|
-
|
|
127
|
-
else:
|
|
128
|
-
console.print(Panel("❌ ERROR: Invalid choice", title_align="left", border_style="red", width=BOX_WIDTH))
|
|
129
|
-
raise ValueError(f"Unimplemented choice: {choice_key}")
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if __name__ == "__main__":
|
|
133
|
-
args_parser()
|
|
3
|
+
import typer
|
|
4
|
+
from typing import Optional, Annotated
|
|
5
|
+
|
|
6
|
+
import machineconfig.scripts.python.helpers_devops.cli_repos as cli_repos
|
|
7
|
+
import machineconfig.scripts.python.helpers_devops.cli_config as cli_config
|
|
8
|
+
import machineconfig.scripts.python.helpers_devops.cli_self as cli_self
|
|
9
|
+
import machineconfig.scripts.python.helpers_devops.cli_data as cli_data
|
|
10
|
+
import machineconfig.scripts.python.helpers_devops.cli_nw as cli_network
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def install(which: Annotated[Optional[str], typer.Argument(..., help="Comma-separated list of program names to install, or group name if --group flag is set.")] = None,
|
|
14
|
+
group: Annotated[bool, typer.Option(..., "--group", "-g", help="Treat 'which' as a group name. A group is bundle of apps.")] = False,
|
|
15
|
+
interactive: Annotated[bool, typer.Option(..., "--interactive", "-i", help="Interactive selection of programs to install.")] = False,
|
|
16
|
+
) -> None:
|
|
17
|
+
"""📦 Install packages"""
|
|
18
|
+
import machineconfig.utils.installer_utils.installer_cli as installer_entry_point
|
|
19
|
+
installer_entry_point.main_installer_cli(which=which, group=group, interactive=interactive)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def get_app():
|
|
23
|
+
app = typer.Typer(help="🛠️ DevOps operations", no_args_is_help=True, add_help_option=False,
|
|
24
|
+
add_completion=False)
|
|
25
|
+
app.command("install", no_args_is_help=True, help="🛠️ [i] Install essential packages")(install)
|
|
26
|
+
app.command("i", no_args_is_help=True, help="Install essential packages", hidden=True)(install)
|
|
27
|
+
app_repos = cli_repos.get_app()
|
|
28
|
+
app.add_typer(app_repos, name="repos")
|
|
29
|
+
app.add_typer(app_repos, name="r", hidden=True)
|
|
30
|
+
app_config = cli_config.get_app()
|
|
31
|
+
app.add_typer(app_config, name="config")
|
|
32
|
+
app.add_typer(app_config, name="c", hidden=True)
|
|
33
|
+
app_data = cli_data.get_app()
|
|
34
|
+
app.add_typer(app_data, name="data")
|
|
35
|
+
app.add_typer(app_data, name="d", hidden=True)
|
|
36
|
+
app_self = cli_self.get_app()
|
|
37
|
+
app.add_typer(app_self, name="self")
|
|
38
|
+
app.add_typer(app_self, name="s", hidden=True)
|
|
39
|
+
app_nw = cli_network.get_app()
|
|
40
|
+
app.add_typer(app_nw, name="network")
|
|
41
|
+
app.add_typer(app_nw, name="n", hidden=True)
|
|
42
|
+
return app
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def main():
|
|
46
|
+
app = get_app()
|
|
47
|
+
app()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a = 2
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Cross-platform PATH explorer backend."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import platform
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import Literal
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
PlatformType = Literal["Windows", "Linux", "Darwin"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def get_platform() -> PlatformType:
|
|
13
|
+
"""Get the current platform."""
|
|
14
|
+
return platform.system() # type: ignore[return-value]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def get_path_entries() -> list[str]:
|
|
18
|
+
"""Get all PATH entries for the current platform."""
|
|
19
|
+
path_str = os.environ.get("PATH", "")
|
|
20
|
+
separator = ";" if get_platform() == "Windows" else ":"
|
|
21
|
+
return [entry for entry in path_str.split(separator) if entry.strip()]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def get_directory_contents(directory: str, max_items: int = 50) -> list[str]:
|
|
25
|
+
"""Get contents of a directory, limited to max_items."""
|
|
26
|
+
try:
|
|
27
|
+
path = Path(directory)
|
|
28
|
+
if not path.exists():
|
|
29
|
+
return ["⚠️ Directory does not exist"]
|
|
30
|
+
if not path.is_dir():
|
|
31
|
+
return ["⚠️ Not a directory"]
|
|
32
|
+
|
|
33
|
+
items = []
|
|
34
|
+
for item in sorted(path.iterdir(), key=lambda p: (not p.is_dir(), p.name.lower())):
|
|
35
|
+
if len(items) >= max_items:
|
|
36
|
+
items.append(f"... and {sum(1 for _ in path.iterdir()) - max_items} more items")
|
|
37
|
+
break
|
|
38
|
+
prefix = "📁 " if item.is_dir() else "📄 "
|
|
39
|
+
items.append(f"{prefix}{item.name}")
|
|
40
|
+
|
|
41
|
+
if not items:
|
|
42
|
+
return ["📭 Empty directory"]
|
|
43
|
+
return items
|
|
44
|
+
except PermissionError:
|
|
45
|
+
return ["⚠️ Permission denied"]
|
|
46
|
+
except Exception as e:
|
|
47
|
+
return [f"⚠️ Error: {e!s}"]
|