machineconfig 1.95__py3-none-any.whl → 1.96__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/cluster/cloud_manager.py +445 -343
- machineconfig/cluster/data_transfer.py +63 -57
- machineconfig/cluster/distribute.py +284 -280
- machineconfig/cluster/file_manager.py +234 -237
- machineconfig/cluster/job_params.py +133 -133
- machineconfig/cluster/loader_runner.py +183 -149
- machineconfig/cluster/remote_machine.py +269 -252
- machineconfig/cluster/script_execution.py +215 -209
- machineconfig/cluster/script_notify_upon_completion.py +50 -43
- machineconfig/cluster/self_ssh.py +52 -54
- machineconfig/cluster/sessions_managers/__init__.py +0 -0
- machineconfig/cluster/sessions_managers/archive/__init__.py +0 -0
- machineconfig/{jobs/python → cluster/sessions_managers/archive}/create_zellij_template.py +5 -3
- machineconfig/cluster/sessions_managers/archive/session_managers.py +184 -0
- machineconfig/cluster/sessions_managers/demo_rich_zellij.py +0 -0
- machineconfig/cluster/sessions_managers/enhanced_command_runner.py +160 -0
- machineconfig/cluster/sessions_managers/wt_local.py +494 -0
- machineconfig/cluster/sessions_managers/wt_local_manager.py +577 -0
- machineconfig/cluster/sessions_managers/wt_remote.py +288 -0
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +483 -0
- machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +196 -0
- machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +418 -0
- machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +175 -0
- machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +300 -0
- machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +228 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +418 -0
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +533 -0
- machineconfig/cluster/sessions_managers/zellij_remote.py +229 -0
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +188 -0
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +64 -0
- machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +126 -0
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +334 -0
- machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +68 -0
- machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +119 -0
- machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +85 -0
- machineconfig/cluster/templates/cli_click.py +0 -1
- machineconfig/cluster/templates/cli_gooey.py +102 -104
- machineconfig/cluster/templates/run_cloud.py +51 -51
- machineconfig/cluster/templates/run_cluster.py +103 -59
- machineconfig/cluster/templates/run_remote.py +57 -58
- machineconfig/cluster/templates/utils.py +69 -36
- machineconfig/jobs/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python/check_installations.py +258 -190
- machineconfig/jobs/python/create_bootable_media.py +7 -3
- machineconfig/jobs/python/python_cargo_build_share.py +50 -50
- machineconfig/jobs/python/python_ve_symlink.py +6 -6
- machineconfig/jobs/python/vscode/__pycache__/select_interpreter.cpython-311.pyc +0 -0
- machineconfig/jobs/python/vscode/api.py +1 -1
- machineconfig/jobs/python/vscode/link_ve.py +2 -2
- machineconfig/jobs/python/vscode/select_interpreter.py +9 -5
- machineconfig/jobs/python/vscode/sync_code.py +8 -5
- machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +1 -1
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +3 -2
- machineconfig/jobs/python_custom_installers/dev/brave.py +7 -3
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +3 -4
- machineconfig/jobs/python_custom_installers/dev/code.py +3 -1
- machineconfig/jobs/python_custom_installers/dev/cursor.py +66 -5
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -1
- machineconfig/jobs/python_custom_installers/dev/espanso.py +13 -9
- machineconfig/jobs/python_custom_installers/dev/goes.py +2 -8
- machineconfig/jobs/python_custom_installers/dev/lvim.py +3 -2
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +1 -1
- machineconfig/jobs/python_custom_installers/dev/redis.py +7 -3
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +8 -4
- machineconfig/jobs/python_custom_installers/dev/winget.py +194 -0
- machineconfig/jobs/python_custom_installers/{dev/docker.py → docker.py} +8 -3
- machineconfig/jobs/python_custom_installers/gh.py +4 -3
- machineconfig/jobs/python_custom_installers/hx.py +9 -8
- machineconfig/jobs/python_custom_installers/scripts/linux/vscode.sh +97 -30
- machineconfig/jobs/python_custom_installers/{dev/warp-cli.py → warp-cli.py} +1 -1
- machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_generic_installers/config.json +133 -9
- machineconfig/jobs/python_generic_installers/dev/config.json +208 -37
- machineconfig/jobs/python_generic_installers/update.py +3 -0
- machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_linux_installers/config.json +42 -6
- machineconfig/jobs/python_linux_installers/dev/config.json +79 -11
- machineconfig/jobs/python_windows_installers/config.json +6 -0
- machineconfig/profile/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/profile/__pycache__/create.cpython-311.pyc +0 -0
- machineconfig/profile/__pycache__/shell.cpython-311.pyc +0 -0
- machineconfig/profile/create.py +5 -5
- machineconfig/profile/create_hardlinks.py +5 -5
- machineconfig/profile/shell.py +44 -17
- machineconfig/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/linux/fire_agents +27 -0
- machineconfig/scripts/linux/wifi_conn +24 -0
- machineconfig/scripts/python/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/cloud_copy.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/cloud_mount.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/cloud_sync.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/croshell.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_backup_retrieve.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_agents.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_jobs.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_jobs.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/get_zellij_cmd.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/repos.cpython-311.pyc +0 -0
- machineconfig/scripts/python/archive/im2text.py +1 -3
- machineconfig/scripts/python/choose_wezterm_theme.py +3 -3
- machineconfig/scripts/python/cloud_copy.py +10 -10
- machineconfig/scripts/python/cloud_manager.py +77 -99
- machineconfig/scripts/python/cloud_mount.py +13 -12
- machineconfig/scripts/python/cloud_repo_sync.py +14 -11
- machineconfig/scripts/python/croshell.py +24 -21
- machineconfig/scripts/python/devops.py +12 -17
- machineconfig/scripts/python/devops_add_identity.py +32 -10
- machineconfig/scripts/python/devops_add_ssh_key.py +10 -10
- machineconfig/scripts/python/devops_backup_retrieve.py +9 -8
- machineconfig/scripts/python/devops_devapps_install.py +6 -6
- machineconfig/scripts/python/devops_update_repos.py +4 -3
- machineconfig/scripts/python/dotfile.py +10 -7
- machineconfig/scripts/python/fire_agents.py +69 -0
- machineconfig/scripts/python/fire_jobs.py +56 -65
- machineconfig/scripts/python/ftpx.py +8 -8
- machineconfig/scripts/python/get_zellij_cmd.py +3 -3
- machineconfig/scripts/python/gh_models.py +6 -4
- machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/cloud_helpers.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers2.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-313.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/repo_sync_helpers.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/cloud_helpers.py +12 -12
- machineconfig/scripts/python/helpers/helpers2.py +9 -8
- machineconfig/scripts/python/helpers/helpers4.py +23 -35
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +17 -16
- machineconfig/scripts/python/mount_nfs.py +8 -11
- machineconfig/scripts/python/mount_nw_drive.py +4 -4
- machineconfig/scripts/python/mount_ssh.py +2 -2
- machineconfig/scripts/python/onetimeshare.py +56 -57
- machineconfig/scripts/python/pomodoro.py +55 -55
- machineconfig/scripts/python/repos.py +26 -18
- machineconfig/scripts/python/scheduler.py +70 -53
- machineconfig/scripts/python/snapshot.py +21 -24
- machineconfig/scripts/python/start_slidev.py +6 -5
- machineconfig/scripts/python/start_terminals.py +3 -1
- machineconfig/scripts/python/viewer.py +5 -4
- machineconfig/scripts/python/viewer_template.py +138 -140
- machineconfig/scripts/python/wifi_conn.py +412 -60
- machineconfig/scripts/python/wsl_windows_transfer.py +18 -3
- machineconfig/settings/linters/.pylintrc +6 -7
- machineconfig/settings/lvim/windows/config.lua +0 -0
- machineconfig/settings/shells/bash/init.sh +6 -0
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +7 -6
- machineconfig/settings/shells/pwsh/init.ps1 +6 -6
- machineconfig/settings/shells/wt/settings.json +51 -266
- machineconfig/setup_linux/web_shortcuts/interactive.sh +5 -2
- machineconfig/setup_windows/wt_and_pwsh/set_pwsh_theme.py +3 -6
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +11 -9
- machineconfig/utils/ai/url2md.py +2 -2
- machineconfig/utils/cloud/onedrive/setup_oauth.py +59 -0
- machineconfig/utils/cloud/onedrive/transaction.py +796 -0
- machineconfig/utils/code.py +22 -13
- machineconfig/utils/installer.py +78 -35
- machineconfig/utils/installer_utils/installer_abc.py +7 -6
- machineconfig/utils/installer_utils/installer_class.py +44 -25
- machineconfig/utils/io_save.py +107 -0
- machineconfig/utils/links.py +19 -15
- machineconfig/utils/options.py +4 -8
- machineconfig/utils/path.py +91 -78
- machineconfig/utils/path_reduced.py +608 -0
- machineconfig/utils/procs.py +110 -45
- machineconfig/utils/scheduling.py +312 -222
- machineconfig/utils/utils.py +7 -7
- machineconfig/utils/utils2.py +42 -0
- machineconfig/utils/utils5.py +84 -0
- machineconfig/utils/ve.py +49 -87
- {machineconfig-1.95.dist-info → machineconfig-1.96.dist-info}/METADATA +2 -2
- machineconfig-1.96.dist-info/RECORD +437 -0
- machineconfig/cluster/session_managers.py +0 -183
- machineconfig/cluster/templates/f.py +0 -4
- machineconfig/jobs/python/__pycache__/check_installations.cpython-311.pyc +0 -0
- machineconfig/jobs/python/__pycache__/checkout_version.cpython-311.pyc +0 -0
- machineconfig/jobs/python/__pycache__/python_ve_symlink.cpython-311.pyc +0 -0
- machineconfig/jobs/python/checkout_version.py +0 -123
- machineconfig/jobs/python/vscode/__pycache__/api.cpython-311.pyc +0 -0
- machineconfig/jobs/python/vscode/__pycache__/link_ve.cpython-311.pyc +0 -0
- machineconfig/jobs/python_custom_installers/__pycache__/hx.cpython-311.pyc +0 -0
- machineconfig/jobs/python_windows_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/python/.mypy_cache/.gitignore +0 -2
- machineconfig/scripts/python/.mypy_cache/3.11/@plugins_snapshot.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/__future__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/__future__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_ast.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_ast.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_bz2.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_bz2.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_codecs.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_codecs.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_compression.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_compression.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_decimal.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_decimal.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_io.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_io.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_locale.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_locale.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_stat.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_stat.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_struct.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_struct.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_thread.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_thread.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_warnings.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_warnings.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_weakref.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_weakref.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/argparse.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/argparse.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/ast.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/ast.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/binascii.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/binascii.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/builtins.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/builtins.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/bz2.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/bz2.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/calendar.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/calendar.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/codecs.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/codecs.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/configparser.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/configparser.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/contextlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/contextlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/datetime.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/datetime.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/decimal.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/decimal.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/dis.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/dis.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/charset.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/charset.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/errors.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/errors.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/header.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/header.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/message.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/message.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/policy.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/policy.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/enum.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/enum.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/functools.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/functools.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/gc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/gc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/genericpath.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/genericpath.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/getpass.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/getpass.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/compat.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/compat.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/config.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/config.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/db.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/db.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/diff.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/diff.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/exc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/exc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/remote.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/remote.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/types.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/types.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/util.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/util.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/glob.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/glob.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/gzip.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/gzip.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/inspect.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/inspect.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/io.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/io.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/itertools.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/itertools.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/locale.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/locale.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/mmap.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/mmap.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/numbers.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/numbers.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/opcode.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/opcode.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/os/path.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/os/path.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/pathlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/pathlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/platform.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/platform.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/posixpath.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/posixpath.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/re.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/re.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/resource.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/resource.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/shlex.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/shlex.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/shutil.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/shutil.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/signal.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/signal.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/stat.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/stat.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/string.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/string.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/struct.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/struct.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/subprocess.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/subprocess.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/tarfile.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/tarfile.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/tempfile.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/tempfile.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/textwrap.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/textwrap.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/threading.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/threading.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/time.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/time.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/types.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/types.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/typing.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/typing.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/uuid.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/uuid.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/warnings.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/warnings.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/weakref.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/weakref.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/zlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/zlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/CACHEDIR.TAG +0 -3
- machineconfig/scripts/python/__pycache__/cloud_repo_sync.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/gh_models.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/url2md.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/viewer.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/vscode_api.cpython-311.pyc +0 -0
- machineconfig/settings/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/settings/linters/.ruff_cache/.gitignore +0 -2
- machineconfig/settings/linters/.ruff_cache/CACHEDIR.TAG +0 -1
- machineconfig/settings/shells/ipy/profiles/default/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/playext.cpython-311.pyc +0 -0
- machineconfig/utils/ve_utils/ve1.py +0 -111
- machineconfig/utils/ve_utils/ve2.py +0 -155
- machineconfig-1.95.dist-info/RECORD +0 -712
- {machineconfig-1.95.dist-info → machineconfig-1.96.dist-info}/WHEEL +0 -0
- {machineconfig-1.95.dist-info → machineconfig-1.96.dist-info}/top_level.txt +0 -0
|
@@ -1,59 +1,57 @@
|
|
|
1
1
|
|
|
2
|
-
"""SelfSSh
|
|
3
|
-
"""
|
|
2
|
+
# """SelfSSh
|
|
3
|
+
# """
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
from
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import
|
|
10
|
-
import platform
|
|
11
|
-
import subprocess
|
|
6
|
+
# from typing import Optional, Any
|
|
7
|
+
# import getpass
|
|
8
|
+
# import platform
|
|
9
|
+
# import subprocess
|
|
12
10
|
|
|
13
11
|
|
|
14
|
-
class SelfSSH:
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
12
|
+
# class SelfSSH:
|
|
13
|
+
# """Instead of SSH'ing to the same machine, one can use this interface.
|
|
14
|
+
# """
|
|
15
|
+
# def __init__(self):
|
|
16
|
+
# self.hostname = "localhost"
|
|
17
|
+
# self._remote_machine: Optional[MACHINE] = None
|
|
18
|
+
# self.remote_env_cmd = ". activate_ve"
|
|
19
|
+
# self.sftp: Any
|
|
20
|
+
# def __getstate__(self) -> object: return {}
|
|
21
|
+
# def __setstate__(self, state: dict[str, Any]) -> None:
|
|
22
|
+
# """This behaviour makes SelfSSH dynamic, even if it was pickled from windows machine, when unpickled on Linux, it will behave as a Linux machine instance."""
|
|
23
|
+
# _ = state
|
|
24
|
+
# new_instance = SelfSSH()
|
|
25
|
+
# self.__dict__.update(new_instance.__dict__)
|
|
26
|
+
# return None
|
|
27
|
+
# def run(self, cmd: str, desc: str = "", verbose: bool = False):
|
|
28
|
+
# _ = desc, verbose
|
|
29
|
+
# return Terminal().run(cmd, shell="powershell")
|
|
30
|
+
# def run_py(self, cmd: str, verbose: bool = False, desc: str = ''):
|
|
31
|
+
# _ = verbose, cmd, desc
|
|
32
|
+
# exec(cmd) # type: ignore # pylint: disable=exec-used
|
|
33
|
+
# return None
|
|
34
|
+
# def get_ssh_conn_str(self): return "ssh localhost"
|
|
35
|
+
# def get_remote_machine(self) -> MACHINE:
|
|
36
|
+
# if self._remote_machine is None:
|
|
37
|
+
# self._remote_machine = "Windows" if (self.run("$env:OS").op.rstrip("\n") == "Windows_NT" or self.run("echo %OS%").op == "Windows_NT") else "Linux"
|
|
38
|
+
# return self._remote_machine
|
|
39
|
+
# def get_remote_repr(self, add_machine: bool = False):
|
|
40
|
+
# _ = add_machine
|
|
41
|
+
# host = f"{getpass.getuser()}@{platform.node()}"
|
|
42
|
+
# return f"SelfSSH({host}) REMOTE"
|
|
43
|
+
# def get_local_repr(self, add_machine: bool = False): return self.get_remote_repr(add_machine=add_machine).replace("REMOTE", "LOCAL")
|
|
44
|
+
# def open_console(self, cmd: str = '', new_window: bool = True, terminal: Optional[str] = None, shell: str = "pwsh"):
|
|
45
|
+
# _ = cmd, shell, new_window, terminal
|
|
46
|
+
# # return Terminal().run_async("", new_window=True, shell=shell)
|
|
47
|
+
# # Terminal().run_async(*(self.get_ssh_conn_str(cmd=cmd).split(" ")), new_window=new_window, terminal=terminal, shell=shell)
|
|
48
|
+
# if platform.system() == "Windows":
|
|
49
|
+
# subprocess.Popen(["wt", "--profile", "pwsh"], stdin=subprocess.PIPE, shell=True)
|
|
50
|
+
# elif platform.system() in ["Linux", "Darwin"]:
|
|
51
|
+
# subprocess.Popen(["zellij --session haha"], shell=True, stdin=None, stdout=None, stderr=None)
|
|
52
|
+
# def copy_to_here(self, source: PLike = '', target: Optional[str] = '', z: bool = True, r: bool = True, desc: str = '', overwrite: bool = False):
|
|
53
|
+
# _ = source, target, z, r, desc, overwrite
|
|
54
|
+
# return None
|
|
55
|
+
# def copy_from_here(self, source: PLike = '', target: Optional[str] = '', z: bool = True, r: bool = True, desc: str = '', overwrite: bool = False):
|
|
56
|
+
# _ = source, target, z, r, desc, overwrite
|
|
57
|
+
# return None
|
|
File without changes
|
|
File without changes
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import socket
|
|
6
6
|
from machineconfig.utils.utils import choose_ssh_host, write_shell_script_to_default_program_path
|
|
7
|
-
from
|
|
7
|
+
from machineconfig.utils.path_reduced import P as PathExtended
|
|
8
8
|
|
|
9
9
|
prefix = """
|
|
10
10
|
|
|
@@ -42,7 +42,9 @@ def build_template(tabs: list[str]):
|
|
|
42
42
|
for t in tabs:
|
|
43
43
|
res += tab.replace("TABNAME", t).replace("TABCOMMAND", "ssh").replace("TABARGS", t)
|
|
44
44
|
res += suffix.replace("THISMACHINE", socket.gethostname())
|
|
45
|
-
file =
|
|
45
|
+
file = PathExtended.tmp().joinpath("tmp_files/templates/zellij_template.kdl")
|
|
46
|
+
file.parent.mkdir(parents=True, exist_ok=True)
|
|
47
|
+
file.write_text(res)
|
|
46
48
|
res = f"zellij --layout {file}"
|
|
47
49
|
return res
|
|
48
50
|
|
|
@@ -51,7 +53,7 @@ def launch_from_ssh_config():
|
|
|
51
53
|
hosts = choose_ssh_host(multi=True)
|
|
52
54
|
assert isinstance(hosts, list)
|
|
53
55
|
res = build_template(hosts)
|
|
54
|
-
write_shell_script_to_default_program_path(res, execute=False, desc="zellij launch script")
|
|
56
|
+
write_shell_script_to_default_program_path(res, execute=False, desc="zellij launch script", preserve_cwd=False, display=False)
|
|
55
57
|
return None
|
|
56
58
|
|
|
57
59
|
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
|
|
2
|
+
# """
|
|
3
|
+
# Session Manager
|
|
4
|
+
# """
|
|
5
|
+
|
|
6
|
+
# from machineconfig.cluster.self_ssh import SelfSSH
|
|
7
|
+
|
|
8
|
+
# from machineconfig.utils.io_save import save_yaml
|
|
9
|
+
# import time
|
|
10
|
+
# import subprocess
|
|
11
|
+
# from typing import Union
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# class Zellij:
|
|
15
|
+
# @staticmethod
|
|
16
|
+
# def get_current_zellij_session() -> str:
|
|
17
|
+
# try:
|
|
18
|
+
# output_lines = Terminal().run("zellij ls --no-formatting").op.split("\n")
|
|
19
|
+
# current_lines = [line for line in output_lines if "(current)" in line]
|
|
20
|
+
# return current_lines[0].split(" [Created")[0]
|
|
21
|
+
# except IndexError as ie:
|
|
22
|
+
# print("""Fails if there is no zellij session running, fails if there is no (current) suffix against the session name.""")
|
|
23
|
+
# raise ie
|
|
24
|
+
# @staticmethod
|
|
25
|
+
# def get_new_session_command(sess_name: str) -> str: return f"zellij attach {sess_name} -c " # -c means create if not exists.
|
|
26
|
+
# @staticmethod
|
|
27
|
+
# def get_new_session_ssh_command(ssh: Union[SSH, SelfSSH], sess_name: str):
|
|
28
|
+
# if isinstance(ssh, SelfSSH): return Zellij.get_new_session_command(sess_name=sess_name)
|
|
29
|
+
# return f"{ssh.get_ssh_conn_str()} -t {Zellij.get_new_session_command(sess_name=sess_name)}"
|
|
30
|
+
# @staticmethod
|
|
31
|
+
# def open_console(ssh: Union[SSH, SelfSSH], sess_name: str):
|
|
32
|
+
# if isinstance(ssh, SelfSSH):
|
|
33
|
+
# # return Terminal().run_async(Zellij.get_new_session_command(sess_name=sess_name), shell="powershell")
|
|
34
|
+
# # currently, there is a limitation in zellij on creating a detached sessions, there is no way to fix this now.
|
|
35
|
+
# # this will get stuck in the new session and won't run parallel.
|
|
36
|
+
# return subprocess.Popen(["zellij", "--session", sess_name], shell=True, stdin=None, stdout=None, stderr=None)
|
|
37
|
+
# return Terminal().run_async(Zellij.get_new_session_ssh_command(ssh=ssh, sess_name=sess_name))
|
|
38
|
+
# @staticmethod
|
|
39
|
+
# def asssert_session_started(ssh: Union[SSH, SelfSSH], sess_name: str):
|
|
40
|
+
# while True:
|
|
41
|
+
# raw_resp = ssh.run("zellij ls --no-formatting", verbose=False).op.split("\n")
|
|
42
|
+
# current_sessions = [item.split(" [Created")[0] for item in raw_resp if "EXITED" not in item]
|
|
43
|
+
# if sess_name in current_sessions:
|
|
44
|
+
# print(f"--> Session {sess_name} has started at the remote.")
|
|
45
|
+
# time.sleep(6)
|
|
46
|
+
# break
|
|
47
|
+
# time.sleep(2)
|
|
48
|
+
# print(f"--> Waiting for zellij session {sess_name} to start before sending fire commands ...")
|
|
49
|
+
|
|
50
|
+
# @staticmethod
|
|
51
|
+
# def close_tab(sess_name: str, tab_name: str):
|
|
52
|
+
# cmd = f"""
|
|
53
|
+
# zellij --session {sess_name} action close-tab --tab-name '{tab_name}'
|
|
54
|
+
# zellij --session {sess_name} action new-tab --name '🖥️{tab_name}'
|
|
55
|
+
# zellij --session {sess_name} action new-tab --name '🔍{tab_name}'
|
|
56
|
+
# zellij --session {sess_name} action new-tab --name '🪪{tab_name}'
|
|
57
|
+
# zellij --session {sess_name} action new-tab --name '🧑💻{tab_name}'
|
|
58
|
+
# """
|
|
59
|
+
# print(f"Closing tab `{tab_name}` in zellij session `{sess_name}` with command \n{cmd}")
|
|
60
|
+
# return Terminal().run_script(cmd)
|
|
61
|
+
|
|
62
|
+
# @staticmethod
|
|
63
|
+
# def setup_layout(ssh: Union[SSH, SelfSSH], sess_name: str, cmd: str = "", run: bool = False, job_wd: str = "$HOME/tmp_results/remote_machines", tab_name: str = "", compact: bool = False):
|
|
64
|
+
# sleep = 0.9
|
|
65
|
+
# if run:
|
|
66
|
+
# if cmd.startswith(". "): cmd = cmd[2:]
|
|
67
|
+
# elif cmd.startswith("source "): cmd = cmd[7:]
|
|
68
|
+
# else: pass
|
|
69
|
+
# exe = f"""
|
|
70
|
+
# zellij --session {sess_name} action new-tab --name '{tab_name}'; sleep {sleep}
|
|
71
|
+
# zellij --session {sess_name} run -d down -- /bin/bash {cmd}; sleep {sleep}
|
|
72
|
+
# zellij --session {sess_name} action move-focus up; sleep {sleep}
|
|
73
|
+
# zellij --session {sess_name} action close-pane; sleep {sleep}
|
|
74
|
+
# """
|
|
75
|
+
# else: exe = f"""
|
|
76
|
+
# zellij --session {sess_name} action write-chars "{cmd}"
|
|
77
|
+
# """
|
|
78
|
+
# if not compact: cmd = f"""
|
|
79
|
+
# zellij --session {sess_name} action new-tab --name '{tab_name}'; sleep {sleep}
|
|
80
|
+
# zellij --session {sess_name} action rename-tab '🖥️{tab_name}'; sleep {sleep} # rename the focused first tab
|
|
81
|
+
# zellij --session {sess_name} action new-tab --name '🔍{tab_name}'; sleep {sleep}
|
|
82
|
+
# zellij --session {sess_name} action write-chars htop; sleep {sleep}
|
|
83
|
+
|
|
84
|
+
# zellij --session {sess_name} action new-tab --name '📁{tab_name}'; sleep {sleep}
|
|
85
|
+
# zellij --session {sess_name} run --direction down --cwd {job_wd} -- lf; sleep {sleep}
|
|
86
|
+
# zellij --session {sess_name} action move-focus up; sleep {sleep}
|
|
87
|
+
# zellij --session {sess_name} action close-pane; sleep {sleep}
|
|
88
|
+
|
|
89
|
+
# zellij --session {sess_name} action new-tab --name '🪪{tab_name}'; sleep {sleep}
|
|
90
|
+
# zellij --session {sess_name} run --direction down -- neofetch;cpufetch; sleep {sleep}
|
|
91
|
+
# zellij --session {sess_name} action move-focus up; sleep {sleep}
|
|
92
|
+
# zellij --session {sess_name} action close-pane; sleep {sleep}
|
|
93
|
+
|
|
94
|
+
# zellij --session {sess_name} action new-tab --name '🧑💻{tab_name}'; sleep {sleep}
|
|
95
|
+
# zellij --session {sess_name} action write-chars "cd {job_wd}"; sleep {sleep}
|
|
96
|
+
# zellij --session {sess_name} action go-to-tab 1; sleep {sleep}
|
|
97
|
+
# {exe}
|
|
98
|
+
|
|
99
|
+
# """
|
|
100
|
+
# else: cmd = exe
|
|
101
|
+
# if isinstance(ssh, SelfSSH):
|
|
102
|
+
# # print(1)
|
|
103
|
+
# print(f"Setting up zellij layout `{sess_name}` on `{ssh.get_remote_repr()}` to run `{P(job_wd).name}`")
|
|
104
|
+
# # return Terminal().run_script(cmd) # Zellij not happy with launching scripts of zellij commands.
|
|
105
|
+
# return Response.from_completed_process(subprocess.run(cmd, shell=True, check=True, capture_output=True, text=True))
|
|
106
|
+
# # print(2)
|
|
107
|
+
# return ssh.run(cmd, desc=f"Setting up zellij layout on `{ssh.get_remote_repr()}`", verbose=False)
|
|
108
|
+
# @staticmethod
|
|
109
|
+
# def kill_session(ssh: Union[SSH, SelfSSH], sess_name: str):
|
|
110
|
+
# cmd = f'zellij kill-session {sess_name}'
|
|
111
|
+
# return ssh.run(cmd, desc=f"Killing zellij session `{sess_name}` on `{ssh.get_remote_repr()}`", verbose=False)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
# class WindowsTerminal:
|
|
115
|
+
# @staticmethod
|
|
116
|
+
# def kill_session(sess_name: str):
|
|
117
|
+
# from machineconfig.utils.procs import ProcessManager
|
|
118
|
+
# pm = ProcessManager()
|
|
119
|
+
# pm.kill(commands=[sess_name])
|
|
120
|
+
# @staticmethod
|
|
121
|
+
# def open_reference(): PathExtended(r"https://learn.microsoft.com/en-us/windows/terminal/command-line-arguments?tabs=windows")()
|
|
122
|
+
# @staticmethod
|
|
123
|
+
# def get_new_session_command(sess_name: str): return f"wt -w {sess_name} -d ."
|
|
124
|
+
# @staticmethod
|
|
125
|
+
# def get_new_session_ssh_command(ssh: Union[SSH, SelfSSH], sess_name: str):
|
|
126
|
+
# if isinstance(ssh, SelfSSH): return WindowsTerminal.get_new_session_command(sess_name=sess_name)
|
|
127
|
+
# return f"{ssh.get_ssh_conn_str()} -t {WindowsTerminal.get_new_session_command(sess_name=sess_name)}"
|
|
128
|
+
# @staticmethod
|
|
129
|
+
# def open_console(ssh: Union[SSH, SelfSSH], sess_name: str):
|
|
130
|
+
# if isinstance(ssh, SelfSSH):
|
|
131
|
+
# # return Terminal().run_async(WindowsTerminal.get_new_session_command(sess_name=sess_name), shell="powershell")
|
|
132
|
+
# return subprocess.Popen(["wt", "--window", sess_name], shell=True, stdin=None, stdout=None, stderr=None)
|
|
133
|
+
# return Terminal().run_async(WindowsTerminal.get_new_session_ssh_command(ssh=ssh, sess_name=sess_name), shell="pwsh")
|
|
134
|
+
# @staticmethod
|
|
135
|
+
# def asssert_session_started(ssh: Union[SSH, SelfSSH], sess_name: str):
|
|
136
|
+
# _ = sess_name, ssh
|
|
137
|
+
# time.sleep(6)
|
|
138
|
+
# return True
|
|
139
|
+
# @staticmethod
|
|
140
|
+
# def setup_layout(ssh: Union[SSH, SelfSSH], sess_name: str, tab_name: str = "", cmd: str = "", run: bool = True, job_wd: str = "$HOME/tmp_results/remote_machines", compact: bool = True):
|
|
141
|
+
# if run:
|
|
142
|
+
# if cmd.startswith(". "): cmd = cmd[2:]
|
|
143
|
+
# elif cmd.startswith("source "): cmd = cmd[7:]
|
|
144
|
+
# else: pass
|
|
145
|
+
# exe: str = f"""
|
|
146
|
+
# wt --window {sess_name} new-tab --title '{tab_name}' pwsh -noExit -Command {cmd}
|
|
147
|
+
# """
|
|
148
|
+
# else: raise NotImplementedError("I don't know how to write-chars in Windows Terminal") # exe = f""" wt --window {sess_name} action write-chars "{cmd}" """
|
|
149
|
+
# sleep = 0.9
|
|
150
|
+
# if compact: cmd = f"""
|
|
151
|
+
# wt --window {sess_name} new-tab --title '💻{tab_name}' htop `; split-pane --horizontal --title '📁{tab_name}' --startingDirectory {job_wd} --profile pwsh lf `; split-pane --vertical --title '🪪{tab_name}' powershell -noExit "$HOME/scripts/neofetch.ps1" `; move-focus up `; split-pane --vertical --startingDirectory {job_wd} --title '🧑💻{tab_name}' --profile pwsh
|
|
152
|
+
# """ # when pane-splitting, the tab title goes to the last pane declared.
|
|
153
|
+
# else: cmd = f"""'
|
|
154
|
+
# wt --window {sess_name} new-tab --title '💻{tab_name}' htop; sleep {sleep}
|
|
155
|
+
# wt --window {sess_name} new-tab --title '📁{tab_name}' --startingDirectory {job_wd} lf; sleep {sleep}
|
|
156
|
+
# wt --window {sess_name} new-tab --title '🪪{tab_name}' powershell -noExit "$HOME/scripts/neofetch.ps1"; sleep {sleep}
|
|
157
|
+
# wt --window {sess_name} new-tab --title '🧑💻{tab_name}' --startingDirectory {job_wd} --profile pwsh; sleep {sleep}
|
|
158
|
+
# """
|
|
159
|
+
# cmd = cmd + f"\nsleep {sleep};" + exe
|
|
160
|
+
# # print(cmd)
|
|
161
|
+
# if isinstance(ssh, SelfSSH):
|
|
162
|
+
# print(f"Firing WindowsTerminal Session `{sess_name}` on `{ssh.get_remote_repr()}` to run `{P(job_wd).name}`")
|
|
163
|
+
# return Terminal().run_script(cmd, shell="pwsh")
|
|
164
|
+
# return ssh.run(cmd, desc=f"Setting up WindowsTerminal layout on `{ssh.get_remote_repr()}`", verbose=False)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
# class Mprocs:
|
|
168
|
+
# @staticmethod
|
|
169
|
+
# def get_template():
|
|
170
|
+
# import machineconfig
|
|
171
|
+
# return PathExtended(machineconfig.__file__).parent.joinpath(r"settings/mprocs/windows/mprocs.yaml").readit()
|
|
172
|
+
# # def get_new_session_name(self): return f"mprocs{self.id}"
|
|
173
|
+
# @staticmethod
|
|
174
|
+
# def get_ssh_command(): return ""
|
|
175
|
+
# def open_console(self, cmd: str, shell: str = "powershell"):
|
|
176
|
+
# _ = cmd, shell
|
|
177
|
+
# return "wt -w 0 -d ."
|
|
178
|
+
# def get_layout(self):
|
|
179
|
+
# temp = self.get_template()
|
|
180
|
+
# temp.procs['main']['shell']['windows'] = "croshell"
|
|
181
|
+
# _template_file = save_yaml(obj=temp, path=PathExtended.tmpfile(suffix=".yaml"))
|
|
182
|
+
# def asssert_session_started(self):
|
|
183
|
+
# time.sleep(3)
|
|
184
|
+
# return True
|
|
File without changes
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Enhanced command execution utilities with Rich formatting for better user experience.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import subprocess
|
|
7
|
+
import re
|
|
8
|
+
from typing import Optional, Dict, Any
|
|
9
|
+
from rich.console import Console
|
|
10
|
+
from rich.panel import Panel
|
|
11
|
+
from rich.progress import Progress, SpinnerColumn, TextColumn
|
|
12
|
+
from rich import box
|
|
13
|
+
|
|
14
|
+
console = Console()
|
|
15
|
+
|
|
16
|
+
def run_enhanced_command(
|
|
17
|
+
command: str,
|
|
18
|
+
description: Optional[str] = None,
|
|
19
|
+
show_progress: bool = True,
|
|
20
|
+
timeout: Optional[int] = None
|
|
21
|
+
) -> Dict[str, Any]:
|
|
22
|
+
"""
|
|
23
|
+
Run a command with enhanced Rich formatting and user feedback.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
command: The command to execute
|
|
27
|
+
description: Optional description for progress display
|
|
28
|
+
show_progress: Whether to show a progress spinner
|
|
29
|
+
timeout: Optional timeout in seconds
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
Dictionary with success status, output, and error information
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
if description is None:
|
|
36
|
+
description = f"Executing: {command[:50]}..."
|
|
37
|
+
|
|
38
|
+
try:
|
|
39
|
+
if show_progress:
|
|
40
|
+
with Progress(
|
|
41
|
+
SpinnerColumn(),
|
|
42
|
+
TextColumn("[progress.description]{task.description}"),
|
|
43
|
+
console=console,
|
|
44
|
+
transient=True
|
|
45
|
+
) as progress:
|
|
46
|
+
task = progress.add_task(f"[cyan]{description}[/cyan]", total=None)
|
|
47
|
+
|
|
48
|
+
result = subprocess.run(
|
|
49
|
+
command,
|
|
50
|
+
shell=True,
|
|
51
|
+
capture_output=True,
|
|
52
|
+
text=True,
|
|
53
|
+
timeout=timeout
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
progress.update(task, completed=True)
|
|
57
|
+
else:
|
|
58
|
+
result = subprocess.run(
|
|
59
|
+
command,
|
|
60
|
+
shell=True,
|
|
61
|
+
capture_output=True,
|
|
62
|
+
text=True,
|
|
63
|
+
timeout=timeout
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Enhanced output processing
|
|
67
|
+
stdout = result.stdout.strip() if result.stdout else ""
|
|
68
|
+
stderr = result.stderr.strip() if result.stderr else ""
|
|
69
|
+
|
|
70
|
+
# Process common Zellij messages with enhanced formatting
|
|
71
|
+
if "Session:" in stdout and "successfully deleted" in stdout:
|
|
72
|
+
session_match = re.search(r'Session: "([^"]+)" successfully deleted', stdout)
|
|
73
|
+
if session_match:
|
|
74
|
+
session_name = session_match.group(1)
|
|
75
|
+
console.print(f"[bold red]🗑️ Session[/bold red] [yellow]'{session_name}'[/yellow] [red]successfully deleted[/red]")
|
|
76
|
+
|
|
77
|
+
if "zellij layout is running" in stdout:
|
|
78
|
+
console.print(stdout.replace("zellij layout is running @",
|
|
79
|
+
"[bold green]🚀 Zellij layout is running[/bold green] [yellow]@[/yellow]"))
|
|
80
|
+
|
|
81
|
+
# Handle pseudo-terminal warnings with less alarming appearance
|
|
82
|
+
if "Pseudo-terminal will not be allocated" in stderr:
|
|
83
|
+
console.print("[dim yellow]ℹ️ Note: Running in non-interactive mode[/dim yellow]")
|
|
84
|
+
stderr = stderr.replace("Pseudo-terminal will not be allocated because stdin is not a terminal.\n", "")
|
|
85
|
+
|
|
86
|
+
if result.returncode == 0:
|
|
87
|
+
if stdout and not any(msg in stdout for msg in ["Session:", "zellij layout is running"]):
|
|
88
|
+
console.print(f"[green]{stdout}[/green]")
|
|
89
|
+
return {
|
|
90
|
+
"success": True,
|
|
91
|
+
"returncode": result.returncode,
|
|
92
|
+
"stdout": stdout,
|
|
93
|
+
"stderr": stderr
|
|
94
|
+
}
|
|
95
|
+
else:
|
|
96
|
+
if stderr:
|
|
97
|
+
console.print(f"[bold red]Error:[/bold red] [red]{stderr}[/red]")
|
|
98
|
+
return {
|
|
99
|
+
"success": False,
|
|
100
|
+
"returncode": result.returncode,
|
|
101
|
+
"stdout": stdout,
|
|
102
|
+
"stderr": stderr
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
except subprocess.TimeoutExpired:
|
|
106
|
+
console.print(f"[bold red]⏰ Command timed out after {timeout} seconds[/bold red]")
|
|
107
|
+
return {
|
|
108
|
+
"success": False,
|
|
109
|
+
"error": "Timeout",
|
|
110
|
+
"timeout": timeout
|
|
111
|
+
}
|
|
112
|
+
except Exception as e:
|
|
113
|
+
console.print(f"[bold red]💥 Unexpected error:[/bold red] [red]{str(e)}[/red]")
|
|
114
|
+
return {
|
|
115
|
+
"success": False,
|
|
116
|
+
"error": str(e)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
def enhanced_zellij_session_start(session_name: str, layout_path: str) -> Dict[str, Any]:
|
|
120
|
+
"""
|
|
121
|
+
Start a Zellij session with enhanced visual feedback.
|
|
122
|
+
"""
|
|
123
|
+
console.print()
|
|
124
|
+
console.print(Panel.fit(f"🚀 Starting Zellij Session: [bold cyan]{session_name}[/bold cyan]",
|
|
125
|
+
style="green", box=box.ROUNDED))
|
|
126
|
+
|
|
127
|
+
# Delete existing session first (suppress normal output)
|
|
128
|
+
delete_cmd = f"zellij delete-session --force {session_name}"
|
|
129
|
+
run_enhanced_command(
|
|
130
|
+
delete_cmd,
|
|
131
|
+
f"Cleaning up existing session '{session_name}'",
|
|
132
|
+
show_progress=False,
|
|
133
|
+
timeout=5 # Quick timeout for cleanup
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
# Start new session (use -b for background to avoid hanging)
|
|
137
|
+
start_cmd = f"zellij --layout {layout_path} a -b {session_name}"
|
|
138
|
+
start_result = run_enhanced_command(
|
|
139
|
+
start_cmd,
|
|
140
|
+
f"Starting session '{session_name}' with layout",
|
|
141
|
+
show_progress=False,
|
|
142
|
+
timeout=10 # Add timeout to prevent hanging
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
if start_result["success"]:
|
|
146
|
+
console.print(Panel(f"[bold green]✅ Session '{session_name}' is now running![/bold green]\n[dim]Layout: {layout_path}[/dim]",
|
|
147
|
+
style="green", title="🎉 Success"))
|
|
148
|
+
else:
|
|
149
|
+
console.print(Panel(f"[bold red]❌ Failed to start session '{session_name}'[/bold red]\n[red]{start_result.get('stderr', 'Unknown error')}[/red]",
|
|
150
|
+
style="red", title="💥 Error"))
|
|
151
|
+
|
|
152
|
+
return start_result
|
|
153
|
+
|
|
154
|
+
if __name__ == "__main__":
|
|
155
|
+
# Demo the enhanced command execution
|
|
156
|
+
console.print(Panel.fit("🎨 Enhanced Command Execution Demo", style="bold cyan"))
|
|
157
|
+
|
|
158
|
+
# Test with a simple command
|
|
159
|
+
result = run_enhanced_command("echo 'Hello, Rich world!'", "Testing enhanced output")
|
|
160
|
+
console.print(f"Result: {result}")
|