machineconfig 3.97__tar.gz → 3.99__tar.gz
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-3.97/src/machineconfig.egg-info → machineconfig-3.99}/PKG-INFO +1 -1
- {machineconfig-3.97 → machineconfig-3.99}/pyproject.toml +5 -5
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/devops.py +13 -63
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/devops_devapps_install.py +21 -82
- machineconfig-3.99/src/machineconfig/scripts/python/interactive.py +268 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/repos.py +0 -1
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/share_terminal.py +30 -11
- machineconfig-3.99/src/machineconfig/setup_linux/web_shortcuts/interactive.sh +9 -0
- machineconfig-3.99/src/machineconfig/setup_windows/web_shortcuts/interactive.ps1 +12 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/installer.py +5 -6
- machineconfig-3.99/src/machineconfig/utils/installer_utils/__init__.py +0 -0
- machineconfig-3.99/src/machineconfig/utils/installer_utils/installer_abc.py +240 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/installer_utils/installer_class.py +1 -41
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/options.py +3 -16
- {machineconfig-3.97 → machineconfig-3.99/src/machineconfig.egg-info}/PKG-INFO +1 -1
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig.egg-info/SOURCES.txt +1 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig.egg-info/entry_points.txt +1 -4
- machineconfig-3.97/src/machineconfig/scripts/python/interactive.py +0 -257
- machineconfig-3.97/src/machineconfig/setup_linux/web_shortcuts/interactive.sh +0 -58
- machineconfig-3.97/src/machineconfig/setup_windows/web_shortcuts/interactive.ps1 +0 -191
- machineconfig-3.97/src/machineconfig/utils/installer_utils/installer_abc.py +0 -108
- {machineconfig-3.97 → machineconfig-3.99}/MANIFEST.in +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/README.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/setup.cfg +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/remote/cloud_manager.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/remote/data_transfer.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/remote/distribute.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/remote/file_manager.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/remote/job_params.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/remote/loader_runner.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/remote/remote_machine.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/remote/script_execution.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/remote/script_notify_upon_completion.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/enhanced_command_runner.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/wt_local.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/wt_local_manager.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/wt_remote.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/wt_remote_manager.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_local.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_local_manager.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_remote.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_remote_manager.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_utils/monitoring_types.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/templates/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/templates/cli_trogon.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/templates/run_cloud.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/templates/run_cluster.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/templates/run_remote.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/cluster/templates/utils.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom/gh.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom/hx.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/alacritty.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/brave.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/bypass_paywall.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/code.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/cursor.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/espanso.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/goes.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/lvim.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/nerdfont.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/redis.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/wezterm.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/custom_dev/winget.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/brave.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/docker.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/docker_start.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/edge.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/nerdfont.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/redis.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/vscode.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/warp-cli.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/linux_scripts/wezterm.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/packages_custom_dev.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/packages_custom_essential.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/packages_github_dev.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/packages_github_essential.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/linux/msc/cli_agents.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/linux/msc/lid.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/linux/msc/network.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/python/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/python/check_installations.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/python/create_bootable_media.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/python/python_cargo_build_share.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/python/python_ve_symlink.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/python/tasks.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/python/vscode/api.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/python/vscode/sync_code.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/windows/archive/openssh-server_add_key.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/windows/msc/cli_agents.bat +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/windows/msc/cli_agents.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/windows/start_terminal.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/jobs/windows/startup_file.cmd +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/logger.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/profile/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/profile/create.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/profile/records/generic/shares.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/profile/records/linux/apps_summary_report.csv +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/profile/records/linux/apps_summary_report.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/profile/records/windows/apps_summary_report.csv +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/profile/records/windows/apps_summary_report.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/profile/shell.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/cloud/init.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/choose_wezterm_theme +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/cloud_copy +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/cloud_mount +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/cloud_repo_sync +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/cloud_sync +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/croshell +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/devops +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/fire +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/fire_agents +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/ftpx +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/fzf2g +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/fzfag +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/fzffg +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/fzfg +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/fzfrga +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/gh_models +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/initai +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/kill_process +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/mount_drive +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/mount_nfs +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/mount_nw_drive +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/mount_smb +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/programs +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/repos +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/scheduler +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/share_cloud.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/share_nfs +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/share_smb +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/skrg +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/start_docker +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/start_slidev +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/start_terminals +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/switch_ip +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/warp-cli.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/wifi_conn +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/linux/z_ls +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/generate_files.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/initai.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/_shared.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/claude/claude.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/cline/cline.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Thinking-Beast-Mode.chatmode.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/deepResearch.chatmode.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/copilot/privacy.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/crush/crush.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/crush/crush.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/crush/privacy.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/cursor/cursors.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/gemini/gemini.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/gemini/settings.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/generic.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/kilocode/privacy.md +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/choose_wezterm_theme.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/cloud_copy.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/cloud_manager.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/cloud_mount.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/cloud_repo_sync.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/cloud_sync.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/croshell.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/devops_add_identity.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/devops_add_ssh_key.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/devops_backup_retrieve.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/devops_update_repos.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/dotfile.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/fire_agents.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/fire_agents_help_launch.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/fire_agents_help_search.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/fire_agents_load_balancer.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/fire_jobs.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/fire_jobs_args_helper.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/fire_jobs_streamlit_helper.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/ftpx.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/get_zellij_cmd.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/gh_models.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/helpers/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/helpers/cloud_helpers.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/helpers/helpers2.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/helpers/helpers4.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/helpers/helpers5.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/mount_nfs.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/mount_nw_drive.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/mount_ssh.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/onetimeshare.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/pomodoro.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/repos_helper_action.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/repos_helper_clone.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/repos_helper_record.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/repos_helper_update.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/scheduler.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/snapshot.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/start_slidev.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/start_terminals.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/t4.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/viewer.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/viewer_template.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/wifi_conn.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/wsl_windows_transfer.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/cloud_copy.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/cloud_mount.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/cloud_sync.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/croshell.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/devops.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/dotfile.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/fire.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/ftpx.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/fzfb.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/fzfg.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/fzfrga.bat +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/gpt.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/grep.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/initai.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/kill_process.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/mount_nfs.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/mount_nw.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/mount_smb.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/mount_ssh.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/nano.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/pomodoro.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/reload_path.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/repos.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/scheduler.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/share_cloud.cmd +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/share_nfs.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/share_smb.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/snapshot.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/start_slidev.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/start_terminals.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/unlock_bitlocker.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/wifi_conn.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/broot/br.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/broot/brootcd.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/broot/conf.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/glow/glow.yml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/gromit-mpx/gromit-mpx.cfg +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/helix/config.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/helix/languages.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/keras/keras.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/keyboard/espanso/config/default.yml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/keyboard/espanso/match/base.yml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/keyboard/kanata/kanata.kbd +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/autocall/delete.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/autocall/on-cd.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/autocall/on-quit.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/autocall/open.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/autocall/paste.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/autocall/pre-cd.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/autocall/rename.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/colors +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/exe/cleaner.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/exe/leftpane_previewer.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/exe/lfcd.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/exe/previewer.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/exe/previewer_archive.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/icons +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/linux/lfrc +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/autocall/delete.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/autocall/on-cd.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/autocall/on-quit.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/autocall/open.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/autocall/paste.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/autocall/rename.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/cd_tere.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/cd_zoxide.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/cd_zoxide2.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/colors +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/icons +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/leftpane_previewer.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/lfcd.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/lfrc +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/mkdir.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/mkfile.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/previewer.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lf/windows/tst.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/linters/.flake8 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/linters/.mypy.ini +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/linters/.pylintrc +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/linters/.ruff.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lvim/linux/config.lua +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lvim/windows/config.lua +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/lvim/windows/lua/user/custom_config.lua +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/mprocs/windows/mprocs.yaml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/mprocs/windows/other +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/pistol/pistol.conf +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/presenterm/config.yaml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/procs/.procs.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/pudb/pudb.cfg +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/rofi/config.rasi +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/rofi/config_default.rasi +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/alacritty/alacritty.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/alacritty/alacritty.yml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/bash/init.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/hyper/.hyper.js +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/ipy/profiles/default/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/kitty/kitty.conf +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/nushell/config.nu +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/nushell/env.nu +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/pwsh/init.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/pwsh/profile.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/starship/starship.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/vtm/settings.xml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/wezterm/wezterm.lua +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/shells/wt/settings.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/streamlit/config.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/svim/linux/init.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/svim/windows/init.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/tere/terecd.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/tere/terecd.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/tmux/.tmate.conf +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/tmux/.tmux.conf +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/wsl/.wslconfig +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/yazi/keymap.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/yazi/theme.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/yazi/yazi.toml +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zed/settings.json +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zellij/commands/monitor +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zellij/commands/standard_panes +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zellij/config.kdl +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zellij/config.orig.kdl +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zellij/layouts/hist +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zellij/layouts/panes.kdl +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zellij/layouts/st.kdl +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zellij/layouts/st2.kdl +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/settings/zellij/layouts/stacked_panes.kdl +0 -0
- {machineconfig-3.97/src/machineconfig/setup_windows → machineconfig-3.99/src/machineconfig/setup_linux}/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_linux/nix/cli_installation.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_linux/web_shortcuts/android.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_linux/web_shortcuts/ascii_art.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -0
- {machineconfig-3.97/src/machineconfig/setup_windows/wt_and_pwsh → machineconfig-3.99/src/machineconfig/setup_windows}/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_windows/others/docker.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_windows/others/obs.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -0
- {machineconfig-3.97/src/machineconfig/utils → machineconfig-3.99/src/machineconfig/setup_windows/wt_and_pwsh}/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +0 -0
- {machineconfig-3.97/src/machineconfig/utils/ai → machineconfig-3.99/src/machineconfig/utils}/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/accessories.py +0 -0
- {machineconfig-3.97/src/machineconfig/utils/installer_utils → machineconfig-3.99/src/machineconfig/utils/ai}/__init__.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/ai/generate_file_checklist.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/cloud/onedrive/setup_oauth.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/cloud/onedrive/transaction.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/code.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/installer_utils/github_release_bulk.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/io.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/links.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/notifications.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/path_extended.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/path_helper.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/procs.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/scheduler.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/scheduling.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/schemas/fire_agents/fire_agents_input.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/schemas/installer/installer_types.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/schemas/layouts/layout_types.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/schemas/repos/repos_types.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/source_of_truth.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/ssh.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/terminal.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/upgrade_packages.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/utils/ve.py +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig.egg-info/dependency_links.txt +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig.egg-info/requires.txt +0 -0
- {machineconfig-3.97 → machineconfig-3.99}/src/machineconfig.egg-info/top_level.txt +0 -0
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "machineconfig"
|
|
9
|
-
version = "3.
|
|
9
|
+
version = "3.99"
|
|
10
10
|
description = "Dotfiles management package"
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
license = {text = "Apache 2.0"}
|
|
@@ -51,10 +51,7 @@ docs = [
|
|
|
51
51
|
"Bug Tracker" = "https://github.com/thisismygitrepo/machineconfig/issues"
|
|
52
52
|
|
|
53
53
|
[project.scripts]
|
|
54
|
-
devops = "machineconfig.scripts.python.devops:
|
|
55
|
-
ia = "machineconfig.scripts.python.interactive:main"
|
|
56
|
-
install = "machineconfig.scripts.python.devops_devapps_install:main_with_parser"
|
|
57
|
-
share_terminal = "machineconfig.scripts.python.share_terminal:main_with_parser"
|
|
54
|
+
devops = "machineconfig.scripts.python.devops:app"
|
|
58
55
|
choose_wezterm_theme = "machineconfig.scripts.python.choose_wezterm_theme:main"
|
|
59
56
|
cloud_copy = "machineconfig.scripts.python.cloud_copy:arg_parser"
|
|
60
57
|
cloud_mount = "machineconfig.scripts.python.cloud_mount:arg_parser"
|
|
@@ -71,6 +68,9 @@ repos = "machineconfig.scripts.python.repos:main_from_parser"
|
|
|
71
68
|
start_slidev = "machineconfig.scripts.python.start_slidev:arg_parser"
|
|
72
69
|
wifi_conn = "machineconfig.scripts.python.wifi_conn:arg_parser"
|
|
73
70
|
kill_process = "machineconfig.utils.procs:main"
|
|
71
|
+
# ia = "machineconfig.scripts.python.interactive:main" # Used
|
|
72
|
+
# install = "machineconfig.scripts.python.devops_devapps_install:main_with_parser"
|
|
73
|
+
# share_terminal = "machineconfig.scripts.python.share_terminal:main_with_parser"
|
|
74
74
|
|
|
75
75
|
[tool.setuptools]
|
|
76
76
|
package-dir = {"" = "src"}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
"""devops with emojis"""
|
|
2
2
|
|
|
3
|
-
from machineconfig.
|
|
3
|
+
from machineconfig.scripts.python.share_terminal import main as share_terminal_main
|
|
4
|
+
import machineconfig.scripts.python.devops_devapps_install as installer_entry_point
|
|
4
5
|
|
|
5
6
|
from platform import system
|
|
6
|
-
from typing import Optional, Literal, TypeAlias
|
|
7
7
|
from rich.console import Console
|
|
8
8
|
from rich.panel import Panel
|
|
9
9
|
import typer
|
|
10
10
|
|
|
11
11
|
console = Console()
|
|
12
|
-
app = typer.Typer(help="🛠️ DevOps operations with emojis",
|
|
12
|
+
app = typer.Typer(help="🛠️ DevOps operations with emojis", no_args_is_help=True)
|
|
13
13
|
|
|
14
|
-
BOX_WIDTH = 150 # width for box drawing
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
COMMANDS: TypeAlias = Literal["🔄 UPDATE essential repos", "⚙️ DEVAPPS install", "🔗 SYMLINKS, SHELL PROFILE, FONT, TERMINAL SETTINGS.", "🆕 SYMLINKS new", "🔑 SSH add pub key to this machine", "🗝️ SSH add identity (private key) to this machine", "🔐 SSH use key pair to connect two machines", "📡 SSH setup", "🐧 SSH setup wsl", "💾 BACKUP", "📥 RETRIEVE", "⏰ SCHEDULER"]
|
|
18
14
|
|
|
19
|
-
|
|
15
|
+
BOX_WIDTH = 150 # width for box drawing
|
|
20
16
|
|
|
21
17
|
|
|
22
18
|
@app.command()
|
|
@@ -27,12 +23,9 @@ def update():
|
|
|
27
23
|
helper.main()
|
|
28
24
|
|
|
29
25
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
console.print(Panel("⚙️ Installing development applications...", width=BOX_WIDTH, border_style="blue"))
|
|
34
|
-
import machineconfig.scripts.python.devops_devapps_install as helper
|
|
35
|
-
helper.main(which=None)
|
|
26
|
+
app.command(name="install", help="📦 Install essential packages")(installer_entry_point.main)
|
|
27
|
+
app.command(name="share-terminal", help="📡 Share terminal via web browser")(share_terminal_main)
|
|
28
|
+
|
|
36
29
|
|
|
37
30
|
|
|
38
31
|
@app.command()
|
|
@@ -123,55 +116,12 @@ def scheduler():
|
|
|
123
116
|
# from machineconfig.scripts.python.scheduler import main as helper
|
|
124
117
|
# helper()
|
|
125
118
|
|
|
126
|
-
|
|
127
|
-
def
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
@app.command()
|
|
132
|
-
def interactive(which: Optional[COMMANDS] = None):
|
|
133
|
-
"""🛠️ Interactive menu mode (legacy)"""
|
|
134
|
-
console.print(Panel("🚀 Initializing DevOps operation...", width=BOX_WIDTH, border_style="blue"))
|
|
135
|
-
options = options_list
|
|
136
|
-
if which is None:
|
|
137
|
-
try:
|
|
138
|
-
choice_key = choose_from_options(msg="", options=options, header="🛠️ DEVOPS", default=options[0], multi=False, fzf=False)
|
|
139
|
-
except KeyboardInterrupt:
|
|
140
|
-
console.print(Panel("❌ Operation cancelled by user", title_align="left", border_style="red", width=BOX_WIDTH))
|
|
141
|
-
return
|
|
142
|
-
else:
|
|
143
|
-
choice_key = which
|
|
144
|
-
|
|
145
|
-
console.print(Panel(f"🔧 SELECTED OPERATION\n{choice_key}", title_align="left", border_style="green", width=BOX_WIDTH))
|
|
146
|
-
|
|
147
|
-
if choice_key == "🔄 UPDATE essential repos":
|
|
148
|
-
update()
|
|
149
|
-
elif choice_key == "⚙️ DEVAPPS install":
|
|
150
|
-
install()
|
|
151
|
-
elif choice_key == "🆕 SYMLINKS new":
|
|
152
|
-
symlinks_new()
|
|
153
|
-
elif choice_key == "🔗 SYMLINKS, SHELL PROFILE, FONT, TERMINAL SETTINGS.":
|
|
154
|
-
symlinks()
|
|
155
|
-
elif choice_key == "🔑 SSH add pub key to this machine":
|
|
156
|
-
ssh_add_key()
|
|
157
|
-
elif choice_key == "🔐 SSH use key pair to connect two machines":
|
|
158
|
-
ssh_connect()
|
|
159
|
-
elif choice_key == "🗝️ SSH add identity (private key) to this machine":
|
|
160
|
-
ssh_add_identity()
|
|
161
|
-
elif choice_key == "📡 SSH setup":
|
|
162
|
-
ssh_setup()
|
|
163
|
-
elif choice_key == "🐧 SSH setup wsl":
|
|
164
|
-
ssh_setup_wsl()
|
|
165
|
-
elif choice_key == "💾 BACKUP":
|
|
166
|
-
backup()
|
|
167
|
-
elif choice_key == "📥 RETRIEVE":
|
|
168
|
-
retrieve()
|
|
169
|
-
elif choice_key == "⏰ SCHEDULER":
|
|
170
|
-
scheduler()
|
|
171
|
-
else:
|
|
172
|
-
console.print(Panel("❌ ERROR: Invalid choice", title_align="left", border_style="red", width=BOX_WIDTH))
|
|
173
|
-
raise ValueError(f"Unimplemented choice: {choice_key}")
|
|
119
|
+
@app.command("ia")
|
|
120
|
+
def interactive():
|
|
121
|
+
"""🤖 INTERACTIVE configuration of machine."""
|
|
122
|
+
from machineconfig.scripts.python.interactive import main
|
|
123
|
+
main()
|
|
174
124
|
|
|
175
125
|
|
|
176
126
|
if __name__ == "__main__":
|
|
177
|
-
|
|
127
|
+
pass
|
{machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/devops_devapps_install.py
RENAMED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
"""Devops Devapps Install"""
|
|
2
2
|
|
|
3
|
-
# import subprocess
|
|
4
3
|
import typer
|
|
5
4
|
from rich.progress import Progress, SpinnerColumn, TextColumn
|
|
6
|
-
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
7
|
-
from machineconfig.utils.options import choose_from_options
|
|
8
|
-
from machineconfig.utils.installer import get_installers, install_all
|
|
9
|
-
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
10
5
|
from platform import system
|
|
11
|
-
from typing import
|
|
6
|
+
from typing import Optional, Literal, TypeAlias, cast, get_args, Annotated
|
|
12
7
|
|
|
13
|
-
WHICH_CAT: TypeAlias = Literal["essentials", "essentialsDev", "systymPackages", "precheckedPackages"]
|
|
8
|
+
WHICH_CAT: TypeAlias = Literal["essentials", "essentialsDev", "systymPackages", "precheckedPackages", "ia"]
|
|
14
9
|
|
|
15
10
|
|
|
16
11
|
def main_with_parser():
|
|
@@ -20,11 +15,12 @@ def main_with_parser():
|
|
|
20
15
|
app()
|
|
21
16
|
|
|
22
17
|
|
|
23
|
-
def main(which: Annotated[Optional[str], typer.Argument(help=f"Choose a category or program to install, {list(get_args(WHICH_CAT))} or <program_name>")]) -> None:
|
|
24
|
-
if which
|
|
18
|
+
def main(which: Annotated[Optional[str], typer.Argument(help=f"Choose a category or program to install, {list(get_args(WHICH_CAT))} or <program_name> or list of programs names separated by comma.")]) -> None:
|
|
19
|
+
if which in get_args(WHICH_CAT): # install by category
|
|
25
20
|
return get_programs_by_category(program_name=which) # type: ignore
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
22
|
+
from machineconfig.utils.installer import get_installers
|
|
23
|
+
if which != "ia" and which is not None: # install by name
|
|
28
24
|
total_messages: list[str] = []
|
|
29
25
|
for a_which in which.split(",") if type(which) == str else which:
|
|
30
26
|
all_installers = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=["GITHUB_ESSENTIAL", "CUSTOM_ESSENTIAL", "GITHUB_DEV", "CUSTOM_DEV"])
|
|
@@ -53,6 +49,12 @@ def main(which: Annotated[Optional[str], typer.Argument(help=f"Choose a category
|
|
|
53
49
|
print(a_message)
|
|
54
50
|
return None
|
|
55
51
|
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def install_interactively():
|
|
55
|
+
from machineconfig.utils.options import choose_from_options
|
|
56
|
+
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
57
|
+
from machineconfig.utils.installer import get_installers
|
|
56
58
|
installers = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=["GITHUB_ESSENTIAL", "CUSTOM_ESSENTIAL", "GITHUB_DEV", "CUSTOM_DEV"])
|
|
57
59
|
# Check installed programs with progress indicator
|
|
58
60
|
with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress:
|
|
@@ -84,8 +86,7 @@ def main(which: Annotated[Optional[str], typer.Argument(help=f"Choose a category
|
|
|
84
86
|
if a_program_name.startswith("📦 "):
|
|
85
87
|
category_name = a_program_name[2:] # Remove "📦 " prefix
|
|
86
88
|
if category_name in get_args(WHICH_CAT):
|
|
87
|
-
|
|
88
|
-
total_commands += "\n" + shell_commands
|
|
89
|
+
get_programs_by_category(program_name=cast(WHICH_CAT, category_name))
|
|
89
90
|
else:
|
|
90
91
|
# Handle individual installer options
|
|
91
92
|
installer_idx = installer_options.index(a_program_name)
|
|
@@ -112,15 +113,18 @@ def get_programs_by_category(program_name: WHICH_CAT):
|
|
|
112
113
|
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
113
114
|
┃ 📦 Installing Category: {program_name}
|
|
114
115
|
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
|
|
116
|
+
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
117
|
+
from machineconfig.utils.installer import get_installers, install_all
|
|
118
|
+
from machineconfig.utils.installer_utils.installer_abc import parse_apps_installer_linux, parse_apps_installer_windows
|
|
119
|
+
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
120
|
+
from machineconfig.utils.options import choose_from_options
|
|
115
121
|
match program_name:
|
|
116
122
|
case "essentials":
|
|
117
123
|
installers_ = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=["GITHUB_ESSENTIAL", "CUSTOM_ESSENTIAL"])
|
|
118
124
|
install_all(installers=installers_)
|
|
119
|
-
program = ""
|
|
120
125
|
case "essentialsDev":
|
|
121
126
|
installers_ = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=["GITHUB_DEV", "CUSTOM_DEV", "GITHUB_ESSENTIAL", "CUSTOM_ESSENTIAL"])
|
|
122
127
|
install_all(installers=installers_)
|
|
123
|
-
program = ""
|
|
124
128
|
case "systymPackages":
|
|
125
129
|
if system() == "Windows":
|
|
126
130
|
options_system = parse_apps_installer_windows(LIBRARY_ROOT.joinpath("setup_windows/apps.ps1").read_text(encoding="utf-8"))
|
|
@@ -141,79 +145,14 @@ def get_programs_by_category(program_name: WHICH_CAT):
|
|
|
141
145
|
if sub_program.startswith("#winget"):
|
|
142
146
|
sub_program = sub_program[1:]
|
|
143
147
|
program += "\n" + sub_program
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
# installers = get_installers(dev=True, system=system())
|
|
147
|
-
# options__: list[str] = [x.get_description() for x in tqdm(installers, desc="Checking installed programs")]
|
|
148
|
-
# program_names = choose_from_options(multi=True, msg="", options=sorted(options__) + ["all"], header="CHOOSE DEV APP")
|
|
149
|
-
# if "all" in program_names: program_names = options__
|
|
150
|
-
# program = ""
|
|
151
|
-
# print("Installing:")
|
|
152
|
-
# L(program_names).print()
|
|
153
|
-
# for name in program_names:
|
|
154
|
-
# try:
|
|
155
|
-
# idx = options__.index(name)
|
|
156
|
-
# except ValueError as ve:
|
|
157
|
-
# print(f"{name=}")
|
|
158
|
-
# print(f"{options__=}")
|
|
159
|
-
# raise ve
|
|
160
|
-
# print(f"Installing {name}")
|
|
161
|
-
# sub_program = installers[idx].install_robust(version=None) # finish the task
|
|
162
|
-
|
|
148
|
+
case "ia":
|
|
149
|
+
install_interactively()
|
|
163
150
|
case "precheckedPackages":
|
|
164
151
|
# from machineconfig.jobs.python.check_installations import precheckedPackages
|
|
165
152
|
# ci = precheckedPackages()
|
|
166
153
|
# ci.download_safe_apps(name="essentials")
|
|
167
154
|
# program = ""
|
|
168
155
|
raise NotImplementedError("precheckedPackages is not implemented yet.")
|
|
169
|
-
return program
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
def parse_apps_installer_linux(txt: str) -> dict[str, Any]:
|
|
173
|
-
txts = txt.split("""yes '' | sed 3q; echo "----------------------------- installing """)
|
|
174
|
-
res = {}
|
|
175
|
-
for chunk in txts[1:]:
|
|
176
|
-
try:
|
|
177
|
-
k = chunk.split("----")[0].rstrip().lstrip()
|
|
178
|
-
v = "\n".join(chunk.split("\n")[1:])
|
|
179
|
-
res[k] = v
|
|
180
|
-
except IndexError as e:
|
|
181
|
-
print(f"""
|
|
182
|
-
❌ Error parsing chunk:
|
|
183
|
-
{"-" * 50}
|
|
184
|
-
{chunk}
|
|
185
|
-
{"-" * 50}""")
|
|
186
|
-
raise e
|
|
187
|
-
return res
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
def parse_apps_installer_windows(txt: str) -> dict[str, Any]:
|
|
191
|
-
chunks: list[str] = []
|
|
192
|
-
for idx, item in enumerate(txt.split(sep="winget install")):
|
|
193
|
-
if idx == 0:
|
|
194
|
-
continue
|
|
195
|
-
if idx == 1:
|
|
196
|
-
chunks.append(item)
|
|
197
|
-
else:
|
|
198
|
-
chunks.append("winget install" + item)
|
|
199
|
-
# progs = L(txt.splitlines()).filter(lambda x: x.startswith("winget ") or x.startswith("#winget"))
|
|
200
|
-
res: dict[str, str] = {}
|
|
201
|
-
for a_chunk in chunks:
|
|
202
|
-
try:
|
|
203
|
-
name = a_chunk.split("--name ")[1]
|
|
204
|
-
if "--Id" not in name:
|
|
205
|
-
print(f"⚠️ Warning: {name} does not have an Id, skipping")
|
|
206
|
-
continue
|
|
207
|
-
name = name.split(" --Id ", maxsplit=1)[0].strip('"').strip('"')
|
|
208
|
-
res[name] = a_chunk
|
|
209
|
-
except IndexError as e:
|
|
210
|
-
print(f"""
|
|
211
|
-
❌ Error parsing chunk:
|
|
212
|
-
{"-" * 50}
|
|
213
|
-
{a_chunk}
|
|
214
|
-
{"-" * 50}""")
|
|
215
|
-
raise e
|
|
216
|
-
return res
|
|
217
156
|
|
|
218
157
|
|
|
219
158
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Interactive Machine Configuration Setup Script
|
|
4
|
+
|
|
5
|
+
A Python version of the interactive installation script that uses questionary
|
|
6
|
+
for better user experience with checkbox selections.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# echo # 📧 Thunderbird Setup Note:
|
|
10
|
+
# Run after installing Thunderbird and starting it once:
|
|
11
|
+
# cd ~/AppData/Roaming/ThunderBird/Profiles
|
|
12
|
+
# $res = ls
|
|
13
|
+
# $name = $res[0].Name
|
|
14
|
+
# mv $backup_folder $name
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
import subprocess
|
|
21
|
+
import sys
|
|
22
|
+
from pathlib import Path
|
|
23
|
+
from platform import system
|
|
24
|
+
|
|
25
|
+
import questionary
|
|
26
|
+
from questionary import Choice
|
|
27
|
+
from rich.console import Console
|
|
28
|
+
from rich.panel import Panel
|
|
29
|
+
from rich.text import Text
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
console = Console()
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def run_command(command: str, description: str) -> bool:
|
|
36
|
+
"""Execute a shell command and return success status."""
|
|
37
|
+
console.print(f"\n🔧 {description}", style="bold cyan")
|
|
38
|
+
try:
|
|
39
|
+
result = subprocess.run(command, shell=True, check=True, capture_output=False)
|
|
40
|
+
return result.returncode == 0
|
|
41
|
+
except subprocess.CalledProcessError as e:
|
|
42
|
+
console.print(f"❌ Error executing command: {e}", style="bold red")
|
|
43
|
+
return False
|
|
44
|
+
def display_header() -> None:
|
|
45
|
+
"""Display the script header."""
|
|
46
|
+
header_text = Text("MACHINE CONFIGURATION", style="bold magenta")
|
|
47
|
+
subtitle_text = Text("Interactive Installation Script", style="italic cyan")
|
|
48
|
+
console.print(Panel(f"📦 {header_text}\n{subtitle_text}", border_style="blue", padding=(1, 2)))
|
|
49
|
+
def display_completion_message() -> None:
|
|
50
|
+
"""Display completion message."""
|
|
51
|
+
completion_text = Text("INSTALLATION COMPLETE", style="bold green")
|
|
52
|
+
subtitle_text = Text("System setup finished successfully", style="italic green")
|
|
53
|
+
console.print(Panel(f"✨ {completion_text}\n{subtitle_text}\n\n🎉 Your system has been configured successfully!\n🔄 You may need to reboot to apply all changes.", border_style="green", padding=(1, 2)))
|
|
54
|
+
def display_dotfiles_instructions() -> None:
|
|
55
|
+
"""Display instructions for dotfiles migration."""
|
|
56
|
+
header_text = Text("DOTFILES MIGRATION", style="bold yellow")
|
|
57
|
+
subtitle_text = Text("Configuration transfer options", style="italic yellow")
|
|
58
|
+
|
|
59
|
+
instructions = """
|
|
60
|
+
🖱️ [bold blue]Method 1: USING MOUSE WITHOUT KB OR BROWSER SHARE[/bold blue]
|
|
61
|
+
On original machine, run:
|
|
62
|
+
[dim]cd ~/dotfiles/creds/msc
|
|
63
|
+
easy-sharing . --password rew --username al[/dim]
|
|
64
|
+
Then open brave on new machine to get MouseWithoutBorders password
|
|
65
|
+
|
|
66
|
+
🔐 [bold blue]Method 2: USING SSH[/bold blue]
|
|
67
|
+
FROM REMOTE, RUN:
|
|
68
|
+
[dim]fptx ~/dotfiles $USER@$(hostname):^ -z
|
|
69
|
+
# OR, using IP address if router has not yet found the hostname:
|
|
70
|
+
fptx ~/dotfiles $USER@$(hostname -I | awk '{print $1}'):^ -z[/dim]
|
|
71
|
+
|
|
72
|
+
☁️ [bold blue]Method 3: USING INTERNET SECURE SHARE[/bold blue]
|
|
73
|
+
[dim]cd ~
|
|
74
|
+
cloud_copy SHARE_URL . --config ss[/dim]
|
|
75
|
+
(requires symlinks to be created first)"""
|
|
76
|
+
|
|
77
|
+
console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def install_windows_desktop_apps() -> bool:
|
|
81
|
+
"""Install Windows desktop applications using winget."""
|
|
82
|
+
if system() != "Windows":
|
|
83
|
+
console.print("❌ This function is only available on Windows systems.", style="bold red")
|
|
84
|
+
return False
|
|
85
|
+
|
|
86
|
+
console.print(Panel("💻 [bold cyan]WINDOWS DESKTOP APPS[/bold cyan]\n[italic]Installing Brave, Windows Terminal, PowerShell, and VSCode[/italic]", border_style="cyan"))
|
|
87
|
+
|
|
88
|
+
# Install winget applications
|
|
89
|
+
winget_commands = [
|
|
90
|
+
('winget install --no-upgrade --name "Windows Terminal" --Id "Microsoft.WindowsTerminal" --source winget --scope user --accept-package-agreements --accept-source-agreements', "Installing Windows Terminal"),
|
|
91
|
+
('winget install --no-upgrade --name "Powershell" --Id "Microsoft.PowerShell" --source winget --scope user --accept-package-agreements --accept-source-agreements', "Installing PowerShell"),
|
|
92
|
+
('winget install --no-upgrade --name "Brave" --Id "Brave.Brave" --source winget --scope user --accept-package-agreements --accept-source-agreements', "Installing Brave Browser"),
|
|
93
|
+
('winget install --no-upgrade --name "Microsoft Visual Studio Code" --Id "Microsoft.VisualStudioCode" --source winget --scope user --accept-package-agreements --accept-source-agreements', "Installing Visual Studio Code"),
|
|
94
|
+
]
|
|
95
|
+
|
|
96
|
+
success = True
|
|
97
|
+
for command, description in winget_commands:
|
|
98
|
+
if not run_command(command, description):
|
|
99
|
+
success = False
|
|
100
|
+
|
|
101
|
+
# Install Nerd Fonts via Python
|
|
102
|
+
console.print("🔧 Installing Nerd Fonts", style="bold cyan")
|
|
103
|
+
try:
|
|
104
|
+
from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
|
|
105
|
+
install_nerd_fonts()
|
|
106
|
+
console.print("✅ Nerd Fonts installed successfully", style="bold green")
|
|
107
|
+
except Exception as e:
|
|
108
|
+
console.print(f"❌ Error installing Nerd Fonts: {e}", style="bold red")
|
|
109
|
+
success = False
|
|
110
|
+
|
|
111
|
+
# Set Windows Terminal settings via Python
|
|
112
|
+
console.print("🔧 Setting Windows Terminal settings", style="bold cyan")
|
|
113
|
+
try:
|
|
114
|
+
from machineconfig.setup_windows.wt_and_pwsh.set_wt_settings import main as set_wt_settings_main
|
|
115
|
+
set_wt_settings_main()
|
|
116
|
+
console.print("✅ Windows Terminal settings configured successfully", style="bold green")
|
|
117
|
+
except Exception as e:
|
|
118
|
+
console.print(f"❌ Error setting Windows Terminal settings: {e}", style="bold red")
|
|
119
|
+
success = False
|
|
120
|
+
|
|
121
|
+
return success
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def get_installation_choices() -> list[str]:
|
|
125
|
+
"""Get user choices for installation options."""
|
|
126
|
+
choices = [
|
|
127
|
+
Choice(value="install_apps", title="📥 Install Apps - Install base system applications", checked=False),
|
|
128
|
+
Choice(value="upgrade_system", title="🔄 Upgrade System Packages - Update all system packages", checked=False),
|
|
129
|
+
Choice(value="install_uv_repos", title="🐍 Install Repos - Set up Python environment and repositories permanently.", checked=False),
|
|
130
|
+
Choice(value="install_ssh_server", title="🔒 Install SSH Server - Set up remote access", checked=False),
|
|
131
|
+
Choice(value="create_symlinks", title="🔗 Create Symlinks - Set up configuration symlinks (finish dotfiles transfer first)", checked=False),
|
|
132
|
+
Choice(value="install_cli_apps", title="⚡ Install CLI Apps - Command-line tools installation", checked=False),
|
|
133
|
+
Choice(value="install_dev_tools", title="🛠️ Install Development Tools - rust, libssl-dev, ffmpeg, wezterm, brave, code", checked=False),
|
|
134
|
+
Choice(value="retrieve_repositories", title="📚 Retrieve Repositories - Clone repositories to ~/code", checked=False),
|
|
135
|
+
Choice(value="retrieve_data", title="💾 Retrieve Data - Backup restoration", checked=False),
|
|
136
|
+
Choice(value="install_ascii_art", title="🎨 Install ASCII Art Libraries - Terminal visualization tools", checked=False),
|
|
137
|
+
]
|
|
138
|
+
# Add Windows-specific options
|
|
139
|
+
if system() == "Windows":
|
|
140
|
+
choices.append(Choice(value="install_windows_desktop", title="💻 Install Windows Desktop Apps - Brave, Windows Terminal, PowerShell, VSCode (Windows only)", checked=False))
|
|
141
|
+
selected = questionary.checkbox("Select the installation options you want to execute:", choices=choices, show_description=True).ask()
|
|
142
|
+
return selected or []
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def execute_installations(selected_options: list[str]) -> None:
|
|
146
|
+
"""Execute the selected installation options."""
|
|
147
|
+
# Always start with VE setup
|
|
148
|
+
console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Setting up base virtual environment[/italic]", border_style="green"))
|
|
149
|
+
run_command("curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/ve.sh | bash", "Setting up base virtual environment")
|
|
150
|
+
|
|
151
|
+
if "install_apps" in selected_options:
|
|
152
|
+
console.print(Panel("📦 [bold blue]APPLICATIONS[/bold blue]\n[italic]Installing base system applications[/italic]", border_style="blue"))
|
|
153
|
+
if system() == "Windows":
|
|
154
|
+
# Windows: Use PowerShell to execute local apps.ps1 script
|
|
155
|
+
from machineconfig import setup_windows as module
|
|
156
|
+
script = Path(module.__file__).parent / "apps.ps1"
|
|
157
|
+
run_command(f'powershell -ExecutionPolicy Bypass -File "{script}"', "Installing Windows applications")
|
|
158
|
+
else:
|
|
159
|
+
# Linux: Use existing bash script approach
|
|
160
|
+
from machineconfig import setup_linux as module
|
|
161
|
+
script = Path(module.__file__).parent / "apps.sh"
|
|
162
|
+
run_command(f"bash {script}", "Installing Linux base system applications")
|
|
163
|
+
|
|
164
|
+
if "upgrade_system" in selected_options:
|
|
165
|
+
console.print(Panel("🔄 [bold magenta]SYSTEM UPDATE[/bold magenta]\n[italic]Package management[/italic]", border_style="magenta"))
|
|
166
|
+
run_command("sudo nala upgrade -y", "Upgrading system packages")
|
|
167
|
+
|
|
168
|
+
if "install_uv_repos" in selected_options:
|
|
169
|
+
console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
|
|
170
|
+
from machineconfig import setup_linux as module
|
|
171
|
+
script = Path(module.__file__).parent / "repos.sh"
|
|
172
|
+
run_command(f"bash {script}", "Setting up Python environment and repositories")
|
|
173
|
+
|
|
174
|
+
if "install_ssh_server" in selected_options:
|
|
175
|
+
console.print(Panel("🔒 [bold red]SSH SERVER[/bold red]\n[italic]Remote access setup[/italic]", border_style="red"))
|
|
176
|
+
if system() == "Windows":
|
|
177
|
+
powershell_script = """Write-Host "🔧 Installing and configuring SSH server..."
|
|
178
|
+
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
|
|
179
|
+
Start-Service sshd
|
|
180
|
+
Set-Service -Name sshd -StartupType 'Automatic'"""
|
|
181
|
+
run_command(f'powershell -Command "{powershell_script}"', "Installing and configuring SSH server")
|
|
182
|
+
else:
|
|
183
|
+
run_command("sudo nala install openssh-server -y", "Installing SSH server")
|
|
184
|
+
|
|
185
|
+
if "create_symlinks" in selected_options:
|
|
186
|
+
display_dotfiles_instructions()
|
|
187
|
+
dotfiles_ready = questionary.confirm("📂 Have you finished copying dotfiles?", default=True).ask()
|
|
188
|
+
if dotfiles_ready:
|
|
189
|
+
console.print(Panel("🔗 [bold cyan]SYMLINK CREATION[/bold cyan]\n[italic]Configuration setup[/italic]", border_style="cyan"))
|
|
190
|
+
console.print("🔧 Creating symlinks", style="bold cyan")
|
|
191
|
+
try:
|
|
192
|
+
from machineconfig.profile.create import main_symlinks
|
|
193
|
+
main_symlinks()
|
|
194
|
+
console.print("✅ Symlinks created successfully", style="bold green")
|
|
195
|
+
except Exception as e:
|
|
196
|
+
console.print(f"❌ Error creating symlinks: {e}", style="bold red")
|
|
197
|
+
run_command("sudo chmod 600 $HOME/.ssh/*", "Setting SSH key permissions")
|
|
198
|
+
run_command("sudo chmod 700 $HOME/.ssh", "Setting SSH directory permissions")
|
|
199
|
+
else:
|
|
200
|
+
console.print("⏭️ Skipping symlink creation - finish dotfiles transfer first", style="yellow")
|
|
201
|
+
|
|
202
|
+
if "install_cli_apps" in selected_options:
|
|
203
|
+
console.print(Panel("⚡ [bold bright_yellow]CLI APPLICATIONS[/bold bright_yellow]\n[italic]Command-line tools installation[/italic]", border_style="bright_yellow"))
|
|
204
|
+
console.print("🔧 Installing CLI applications", style="bold cyan")
|
|
205
|
+
try:
|
|
206
|
+
from machineconfig.scripts.python.devops_devapps_install import main as devops_devapps_install_main
|
|
207
|
+
devops_devapps_install_main(which="essentials")
|
|
208
|
+
console.print("✅ CLI applications installed successfully", style="bold green")
|
|
209
|
+
except Exception as e:
|
|
210
|
+
console.print(f"❌ Error installing CLI applications: {e}", style="bold red")
|
|
211
|
+
run_command(". $HOME/.bashrc", "Reloading bash configuration")
|
|
212
|
+
|
|
213
|
+
if "install_dev_tools" in selected_options:
|
|
214
|
+
console.print(Panel("🛠️ [bold bright_blue]DEVELOPMENT TOOLS[/bold bright_blue]\n[italic]Software development packages[/italic]", border_style="bright_blue"))
|
|
215
|
+
run_command("(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) || true", "Installing Rust toolchain")
|
|
216
|
+
run_command("sudo nala install libssl-dev -y", "Installing libssl-dev")
|
|
217
|
+
run_command("sudo nala install ffmpeg -y", "Installing ffmpeg")
|
|
218
|
+
console.print("🔧 Installing development applications", style="bold cyan")
|
|
219
|
+
try:
|
|
220
|
+
from machineconfig.scripts.python.devops_devapps_install import main as devops_devapps_install_main
|
|
221
|
+
devops_devapps_install_main(which="wezterm,brave,code")
|
|
222
|
+
console.print("✅ Development applications installed successfully", style="bold green")
|
|
223
|
+
except Exception as e:
|
|
224
|
+
console.print(f"❌ Error installing development applications: {e}", style="bold red")
|
|
225
|
+
|
|
226
|
+
if "retrieve_repositories" in selected_options:
|
|
227
|
+
console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
|
|
228
|
+
from machineconfig.scripts.python import repos as module
|
|
229
|
+
module.main(directory=str(Path.home() / "code"), clone=True, cloud="odg1")
|
|
230
|
+
|
|
231
|
+
if "retrieve_data" in selected_options:
|
|
232
|
+
console.print(Panel("💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]", border_style="bright_cyan"))
|
|
233
|
+
console.print("🔧 Retrieving backup data", style="bold cyan")
|
|
234
|
+
try:
|
|
235
|
+
from machineconfig.scripts.python.devops_backup_retrieve import main_backup_retrieve
|
|
236
|
+
main_backup_retrieve(direction="RETRIEVE")
|
|
237
|
+
console.print("✅ Backup data retrieved successfully", style="bold green")
|
|
238
|
+
except Exception as e:
|
|
239
|
+
console.print(f"❌ Error retrieving backup data: {e}", style="bold red")
|
|
240
|
+
|
|
241
|
+
if "install_ascii_art" in selected_options:
|
|
242
|
+
console.print(Panel("🎨 [bold bright_green]ASCII ART[/bold bright_green]\n[italic]Terminal visualization tools[/italic]", border_style="bright_green"))
|
|
243
|
+
from machineconfig import setup_linux as module
|
|
244
|
+
script = Path(module.__file__).parent / "web_shortcuts" / "ascii_art.sh"
|
|
245
|
+
run_command(f"bash {script}", "Installing ASCII art libraries")
|
|
246
|
+
|
|
247
|
+
if "install_windows_desktop" in selected_options:
|
|
248
|
+
install_windows_desktop_apps()
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
def main() -> None:
|
|
252
|
+
"""Main function to run the interactive installation."""
|
|
253
|
+
display_header()
|
|
254
|
+
selected_options = get_installation_choices()
|
|
255
|
+
if not selected_options:
|
|
256
|
+
console.print("❌ No options selected. Exiting...", style="bold red")
|
|
257
|
+
sys.exit(0)
|
|
258
|
+
console.print(f"\n✅ Selected options: {', '.join(selected_options)}", style="bold green")
|
|
259
|
+
proceed = questionary.confirm("🚀 Proceed with installation?", default=True).ask()
|
|
260
|
+
if not proceed:
|
|
261
|
+
console.print("❌ Installation cancelled.", style="bold red")
|
|
262
|
+
sys.exit(0)
|
|
263
|
+
execute_installations(selected_options)
|
|
264
|
+
display_completion_message()
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
if __name__ == "__main__":
|
|
268
|
+
pass
|
|
@@ -60,7 +60,6 @@ def main(
|
|
|
60
60
|
clone_repos(spec_path=repos_root, preferred_remote=None, checkout_branch_flag=checkout_to_branch, checkout_commit_flag=checkout)
|
|
61
61
|
|
|
62
62
|
elif all or commit or pull or push:
|
|
63
|
-
# Use the new helper function for git operations
|
|
64
63
|
perform_git_operations(
|
|
65
64
|
repos_root=repos_root,
|
|
66
65
|
pull=pull or all,
|
{machineconfig-3.97 → machineconfig-3.99}/src/machineconfig/scripts/python/share_terminal.py
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
from pathlib import Path
|
|
4
|
-
from typing import Optional
|
|
4
|
+
from typing import Optional, Annotated
|
|
5
5
|
import typer
|
|
6
6
|
from rich.console import Console
|
|
7
7
|
from rich.panel import Panel
|
|
@@ -43,12 +43,33 @@ def display_terminal_url(local_ip_v4: str, port: int) -> None:
|
|
|
43
43
|
)
|
|
44
44
|
|
|
45
45
|
# Print with extra spacing and attention-grabbing elements
|
|
46
|
-
console.print("\n" + "🔥" * 60 + "\n", style="bright_red bold")
|
|
46
|
+
# console.print("\n" + "🔥" * 60 + "\n", style="bright_red bold")
|
|
47
47
|
console.print(panel)
|
|
48
|
-
console.print("🔥" * 60 + "\n", style="bright_red bold")
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
def
|
|
48
|
+
# console.print("🔥" * 60 + "\n", style="bright_red bold")
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def install_ttyd():
|
|
52
|
+
# uv run --python 3.13 --with machineconfig devops install ttyd
|
|
53
|
+
from machineconfig.utils.installer_utils.installer_abc import check_tool_exists
|
|
54
|
+
exists = check_tool_exists("ttyd")
|
|
55
|
+
if exists:
|
|
56
|
+
print("✅ ttyd is already installed.")
|
|
57
|
+
return
|
|
58
|
+
print("⏳ ttyd not found. Installing...")
|
|
59
|
+
from machineconfig.scripts.python.devops_devapps_install import main
|
|
60
|
+
main(which="ttyd")
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def main(
|
|
65
|
+
port: Annotated[Optional[int], typer.Option("--port", "-p", help="Port to run the terminal server on (default: 7681)")] = None,
|
|
66
|
+
username: Annotated[Optional[str], typer.Option("--username", "-u", help="Username for terminal access (default: current user)")] = None,
|
|
67
|
+
password: Annotated[Optional[str], typer.Option("--password", "-w", help="Password for terminal access (default: from ~/dotfiles/creds/passwords/quick_password)")] = None
|
|
68
|
+
) -> None:
|
|
69
|
+
install_ttyd()
|
|
70
|
+
if username is None:
|
|
71
|
+
import getpass
|
|
72
|
+
username = getpass.getuser()
|
|
52
73
|
if password is None:
|
|
53
74
|
pwd_path = Path.home().joinpath("dotfiles/creds/passwords/quick_password")
|
|
54
75
|
if pwd_path.exists():
|
|
@@ -67,11 +88,9 @@ def main(port: Optional[int]=None, password: Optional[str]=None) -> None:
|
|
|
67
88
|
|
|
68
89
|
# Display the flashy terminal announcement
|
|
69
90
|
display_terminal_url(local_ip_v4, port)
|
|
70
|
-
|
|
71
|
-
code = f"""
|
|
72
|
-
|
|
73
|
-
uv run --python 3.13 --with machineconfig install -ttyd
|
|
74
|
-
ttyd --writable -t enableSixel=true --port {port} --credential "$USER:{password}" -t 'theme={"background": "black"}' bash
|
|
91
|
+
|
|
92
|
+
code = f"""#!/bin/bash
|
|
93
|
+
ttyd --writable -t enableSixel=true --port {port} --credential "{username}:{password}" -t 'theme={{"background": "black"}}' bash
|
|
75
94
|
"""
|
|
76
95
|
import subprocess
|
|
77
96
|
subprocess.run(code, shell=True, check=True)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
echo """
|
|
4
|
+
=======================================================================
|
|
5
|
+
📦 MACHINE CONFIGURATION | Interactive Installation Script. Installing uv then getting started.
|
|
6
|
+
======================================================================="""
|
|
7
|
+
|
|
8
|
+
curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/ve.sh | bash
|
|
9
|
+
$HOME/.local/bin/uv run --python 3.13 --with machineconfig devops ia
|