machineconfig 1.97__py3-none-any.whl â 2.1__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 +22 -29
- machineconfig/cluster/data_transfer.py +2 -3
- machineconfig/cluster/distribute.py +0 -2
- machineconfig/cluster/file_manager.py +4 -5
- machineconfig/cluster/job_params.py +1 -4
- machineconfig/cluster/loader_runner.py +8 -11
- machineconfig/cluster/remote_machine.py +4 -5
- machineconfig/cluster/script_execution.py +2 -2
- machineconfig/cluster/script_notify_upon_completion.py +0 -1
- machineconfig/cluster/sessions_managers/archive/create_zellij_template.py +4 -6
- machineconfig/cluster/sessions_managers/archive/session_managers.py +0 -1
- machineconfig/cluster/sessions_managers/enhanced_command_runner.py +35 -75
- machineconfig/cluster/sessions_managers/wt_local.py +113 -185
- machineconfig/cluster/sessions_managers/wt_local_manager.py +127 -197
- machineconfig/cluster/sessions_managers/wt_remote.py +60 -67
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +110 -149
- machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +61 -64
- machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +72 -172
- machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +27 -60
- machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +58 -137
- machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +46 -74
- machineconfig/cluster/sessions_managers/zellij_local.py +91 -147
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +165 -190
- machineconfig/cluster/sessions_managers/zellij_remote.py +51 -58
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +40 -46
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +19 -17
- machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +30 -31
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +64 -134
- machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +7 -11
- machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +27 -55
- machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +14 -13
- machineconfig/cluster/templates/cli_click.py +0 -1
- machineconfig/cluster/templates/cli_gooey.py +0 -2
- machineconfig/cluster/templates/cli_trogon.py +0 -1
- machineconfig/cluster/templates/run_cloud.py +0 -1
- machineconfig/cluster/templates/run_cluster.py +0 -1
- machineconfig/cluster/templates/run_remote.py +0 -1
- machineconfig/cluster/templates/utils.py +27 -11
- machineconfig/jobs/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/jobs/linux/msc/cli_agents.sh +16 -0
- machineconfig/jobs/python/check_installations.py +9 -9
- machineconfig/jobs/python/create_bootable_media.py +0 -2
- machineconfig/jobs/python/python_cargo_build_share.py +2 -2
- machineconfig/jobs/python/python_ve_symlink.py +9 -11
- machineconfig/jobs/python/tasks.py +0 -1
- machineconfig/jobs/python/vscode/api.py +5 -5
- machineconfig/jobs/python/vscode/link_ve.py +20 -21
- machineconfig/jobs/python/vscode/select_interpreter.py +28 -29
- machineconfig/jobs/python/vscode/sync_code.py +14 -18
- machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +15 -15
- machineconfig/jobs/python_custom_installers/dev/aider.py +10 -18
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +12 -21
- machineconfig/jobs/python_custom_installers/dev/brave.py +13 -22
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +13 -20
- machineconfig/jobs/python_custom_installers/dev/code.py +17 -24
- machineconfig/jobs/python_custom_installers/dev/cursor.py +10 -21
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +12 -11
- machineconfig/jobs/python_custom_installers/dev/espanso.py +19 -23
- machineconfig/jobs/python_custom_installers/dev/goes.py +9 -16
- machineconfig/jobs/python_custom_installers/dev/lvim.py +13 -21
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +15 -22
- machineconfig/jobs/python_custom_installers/dev/redis.py +15 -23
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +15 -22
- machineconfig/jobs/python_custom_installers/dev/winget.py +32 -50
- machineconfig/jobs/python_custom_installers/docker.py +15 -24
- machineconfig/jobs/python_custom_installers/gh.py +18 -26
- machineconfig/jobs/python_custom_installers/hx.py +33 -17
- machineconfig/jobs/python_custom_installers/warp-cli.py +15 -23
- machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/jobs/python_generic_installers/config.json +412 -389
- machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/jobs/python_windows_installers/dev/config.json +1 -1
- machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +1 -1
- machineconfig/jobs/windows/msc/cli_agents.bat +0 -0
- machineconfig/jobs/windows/msc/cli_agents.ps1 +0 -0
- machineconfig/jobs/windows/start_terminal.ps1 +1 -1
- machineconfig/logger.py +50 -0
- machineconfig/profile/create.py +50 -36
- machineconfig/profile/create_hardlinks.py +33 -26
- machineconfig/profile/shell.py +87 -60
- machineconfig/scripts/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/cloud/init.sh +2 -2
- machineconfig/scripts/linux/checkout_versions +1 -1
- machineconfig/scripts/linux/choose_wezterm_theme +1 -1
- machineconfig/scripts/linux/cloud_copy +1 -1
- machineconfig/scripts/linux/cloud_manager +1 -1
- machineconfig/scripts/linux/cloud_mount +1 -1
- machineconfig/scripts/linux/cloud_repo_sync +1 -1
- machineconfig/scripts/linux/cloud_sync +1 -1
- machineconfig/scripts/linux/croshell +1 -1
- machineconfig/scripts/linux/devops +3 -5
- machineconfig/scripts/linux/fire +2 -1
- machineconfig/scripts/linux/fire_agents +3 -3
- machineconfig/scripts/linux/ftpx +1 -1
- machineconfig/scripts/linux/gh_models +1 -1
- machineconfig/scripts/linux/kill_process +1 -1
- machineconfig/scripts/linux/mcinit +2 -2
- machineconfig/scripts/linux/repos +1 -1
- machineconfig/scripts/linux/scheduler +1 -1
- machineconfig/scripts/linux/start_slidev +1 -1
- machineconfig/scripts/linux/start_terminals +1 -1
- machineconfig/scripts/linux/url2md +1 -1
- machineconfig/scripts/linux/warp-cli.sh +122 -0
- machineconfig/scripts/linux/wifi_conn +1 -1
- machineconfig/scripts/python/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/croshell.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_jobs.cpython-313.pyc +0 -0
- machineconfig/scripts/python/ai/__init__.py +0 -0
- machineconfig/scripts/python/ai/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/python/ai/__pycache__/generate_files.cpython-313.pyc +0 -0
- machineconfig/scripts/python/ai/__pycache__/mcinit.cpython-313.pyc +0 -0
- machineconfig/scripts/python/ai/chatmodes/Thinking-Beast-Mode.chatmode.md +337 -0
- machineconfig/scripts/python/ai/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md +644 -0
- machineconfig/scripts/python/ai/chatmodes/deepResearch.chatmode.md +81 -0
- machineconfig/scripts/python/ai/configs/.gemini/settings.json +81 -0
- machineconfig/scripts/python/ai/generate_files.py +84 -0
- machineconfig/scripts/python/ai/instructions/python/dev.instructions.md +45 -0
- machineconfig/scripts/python/ai/mcinit.py +107 -0
- machineconfig/scripts/python/ai/prompts/allLintersAndTypeCheckers.prompt.md +5 -0
- machineconfig/scripts/python/ai/prompts/research-report-skeleton.prompt.md +38 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +52 -0
- machineconfig/scripts/python/archive/tmate_conn.py +5 -5
- machineconfig/scripts/python/archive/tmate_start.py +3 -3
- machineconfig/scripts/python/choose_wezterm_theme.py +2 -2
- machineconfig/scripts/python/cloud_copy.py +20 -19
- machineconfig/scripts/python/cloud_mount.py +10 -8
- machineconfig/scripts/python/cloud_repo_sync.py +15 -15
- machineconfig/scripts/python/cloud_sync.py +1 -1
- machineconfig/scripts/python/croshell.py +18 -16
- machineconfig/scripts/python/devops.py +6 -6
- machineconfig/scripts/python/devops_add_identity.py +9 -7
- machineconfig/scripts/python/devops_add_ssh_key.py +19 -19
- machineconfig/scripts/python/devops_backup_retrieve.py +14 -14
- machineconfig/scripts/python/devops_devapps_install.py +3 -3
- machineconfig/scripts/python/devops_update_repos.py +141 -53
- machineconfig/scripts/python/dotfile.py +3 -3
- machineconfig/scripts/python/fire_agents.py +202 -41
- machineconfig/scripts/python/fire_jobs.py +20 -21
- machineconfig/scripts/python/ftpx.py +4 -3
- machineconfig/scripts/python/gh_models.py +94 -94
- machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-313.pyc +0 -0
- machineconfig/scripts/python/helpers/cloud_helpers.py +3 -3
- machineconfig/scripts/python/helpers/helpers2.py +3 -3
- machineconfig/scripts/python/helpers/helpers4.py +8 -7
- machineconfig/scripts/python/helpers/helpers5.py +7 -7
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +2 -2
- machineconfig/scripts/python/mount_nfs.py +4 -3
- machineconfig/scripts/python/mount_nw_drive.py +4 -4
- machineconfig/scripts/python/mount_ssh.py +4 -3
- machineconfig/scripts/python/repos.py +9 -9
- machineconfig/scripts/python/scheduler.py +1 -1
- machineconfig/scripts/python/start_slidev.py +9 -8
- machineconfig/scripts/python/start_terminals.py +1 -1
- machineconfig/scripts/python/viewer.py +40 -40
- machineconfig/scripts/python/wifi_conn.py +65 -66
- machineconfig/scripts/python/wsl_windows_transfer.py +2 -2
- machineconfig/scripts/windows/checkout_version.ps1 +1 -3
- machineconfig/scripts/windows/choose_wezterm_theme.ps1 +1 -3
- machineconfig/scripts/windows/cloud_copy.ps1 +2 -6
- machineconfig/scripts/windows/cloud_manager.ps1 +1 -1
- machineconfig/scripts/windows/cloud_repo_sync.ps1 +1 -2
- machineconfig/scripts/windows/cloud_sync.ps1 +2 -2
- machineconfig/scripts/windows/croshell.ps1 +2 -2
- machineconfig/scripts/windows/devops.ps1 +1 -4
- machineconfig/scripts/windows/dotfile.ps1 +1 -3
- machineconfig/scripts/windows/fire.ps1 +1 -1
- machineconfig/scripts/windows/ftpx.ps1 +2 -2
- machineconfig/scripts/windows/gpt.ps1 +1 -1
- machineconfig/scripts/windows/kill_process.ps1 +1 -2
- machineconfig/scripts/windows/mcinit.ps1 +2 -2
- machineconfig/scripts/windows/mount_nfs.ps1 +1 -1
- machineconfig/scripts/windows/mount_ssh.ps1 +1 -1
- machineconfig/scripts/windows/pomodoro.ps1 +1 -1
- machineconfig/scripts/windows/py2exe.ps1 +1 -3
- machineconfig/scripts/windows/repos.ps1 +1 -1
- machineconfig/scripts/windows/scheduler.ps1 +1 -1
- machineconfig/scripts/windows/snapshot.ps1 +2 -2
- machineconfig/scripts/windows/start_slidev.ps1 +1 -1
- machineconfig/scripts/windows/start_terminals.ps1 +1 -1
- machineconfig/scripts/windows/wifi_conn.ps1 +1 -1
- machineconfig/scripts/windows/wsl_windows_transfer.ps1 +1 -3
- machineconfig/settings/lf/linux/lfrc +1 -1
- machineconfig/settings/linters/.ruff.toml +2 -2
- machineconfig/settings/linters/.ruff_cache/.gitignore +2 -0
- machineconfig/settings/linters/.ruff_cache/CACHEDIR.TAG +1 -0
- machineconfig/settings/lvim/windows/archive/config_additional.lua +1 -1
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +71 -71
- machineconfig/settings/shells/wt/settings.json +8 -8
- machineconfig/settings/svim/linux/init.toml +1 -1
- machineconfig/settings/svim/windows/init.toml +1 -1
- machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -54
- machineconfig/setup_linux/web_shortcuts/interactive.sh +6 -6
- machineconfig/setup_linux/web_shortcuts/tmp.sh +2 -0
- machineconfig/setup_windows/web_shortcuts/all.ps1 +2 -2
- machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +1 -1
- machineconfig/setup_windows/web_shortcuts/croshell.ps1 +1 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +5 -5
- machineconfig/setup_windows/wt_and_pwsh/install_fonts.ps1 +51 -15
- machineconfig/setup_windows/wt_and_pwsh/set_pwsh_theme.py +75 -18
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +52 -42
- machineconfig/utils/ai/browser_user_wrapper.py +5 -5
- machineconfig/utils/ai/generate_file_checklist.py +19 -22
- machineconfig/utils/ai/url2md.py +5 -3
- machineconfig/utils/cloud/onedrive/setup_oauth.py +5 -4
- machineconfig/utils/cloud/onedrive/transaction.py +192 -227
- machineconfig/utils/code.py +71 -43
- machineconfig/utils/installer.py +77 -85
- machineconfig/utils/installer_utils/installer_abc.py +29 -17
- machineconfig/utils/installer_utils/installer_class.py +188 -83
- machineconfig/utils/io_save.py +3 -15
- machineconfig/utils/links.py +22 -11
- machineconfig/utils/notifications.py +197 -0
- machineconfig/utils/options.py +38 -25
- machineconfig/utils/path.py +18 -6
- machineconfig/utils/path_reduced.py +637 -316
- machineconfig/utils/procs.py +69 -63
- machineconfig/utils/scheduling.py +11 -13
- machineconfig/utils/ssh.py +351 -0
- machineconfig/utils/terminal.py +225 -0
- machineconfig/utils/utils.py +13 -12
- machineconfig/utils/utils2.py +43 -10
- machineconfig/utils/utils5.py +242 -46
- machineconfig/utils/ve.py +11 -6
- {machineconfig-1.97.dist-info â machineconfig-2.1.dist-info}/METADATA +15 -9
- {machineconfig-1.97.dist-info â machineconfig-2.1.dist-info}/RECORD +232 -235
- machineconfig/cluster/self_ssh.py +0 -57
- machineconfig/jobs/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python/archive/python_tools.txt +0 -12
- machineconfig/jobs/python/vscode/__pycache__/select_interpreter.cpython-311.pyc +0 -0
- machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_generic_installers/update.py +0 -3
- machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-311.pyc +0 -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/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/linux/activate_ve +0 -87
- machineconfig/scripts/python/__pycache__/__init__.cpython-311.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__/get_zellij_cmd.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/repos.cpython-311.pyc +0 -0
- machineconfig/scripts/python/ai/__pycache__/init.cpython-311.pyc +0 -0
- machineconfig/scripts/python/ai/init.py +0 -56
- machineconfig/scripts/python/ai/rules/python/dev.md +0 -31
- machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-311.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__/repo_sync_helpers.cpython-311.pyc +0 -0
- machineconfig/scripts/windows/activate_ve.ps1 +0 -54
- {machineconfig-1.97.dist-info â machineconfig-2.1.dist-info}/WHEEL +0 -0
- {machineconfig-1.97.dist-info â machineconfig-2.1.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
"""lvim
|
|
2
|
-
"""
|
|
1
|
+
"""lvim"""
|
|
3
2
|
|
|
4
|
-
from
|
|
3
|
+
from machineconfig.utils.terminal import Terminal
|
|
5
4
|
import subprocess
|
|
6
5
|
import platform
|
|
7
6
|
from typing import Optional
|
|
@@ -11,25 +10,18 @@ _ = Terminal, subprocess
|
|
|
11
10
|
# as per https://www.lunarvim.org/docs/installation
|
|
12
11
|
|
|
13
12
|
|
|
14
|
-
config_dict = {
|
|
15
|
-
"repo_url": "CUSTOM",
|
|
16
|
-
"doc": "Terminal text editor based on neovim.",
|
|
17
|
-
"filename_template_windows_amd_64": "",
|
|
18
|
-
"filename_template_linux_amd_64": "",
|
|
19
|
-
"strip_v": False,
|
|
20
|
-
"exe_name": "lvim"
|
|
21
|
-
}
|
|
13
|
+
config_dict = {"repo_url": "CUSTOM", "doc": "Terminal text editor based on neovim.", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "lvim"}
|
|
22
14
|
|
|
23
15
|
|
|
24
16
|
def main(version: Optional[str]):
|
|
25
17
|
print(f"""
|
|
26
|
-
{
|
|
18
|
+
{"=" * 150}
|
|
27
19
|
đ LUNARVIM INSTALLER | Setting up Neovim-based IDE
|
|
28
|
-
đ Version: {
|
|
20
|
+
đ Version: {"latest" if version is None else version}
|
|
29
21
|
đ Branch: release-1.4/neovim-0.9
|
|
30
|
-
{
|
|
22
|
+
{"=" * 150}
|
|
31
23
|
""")
|
|
32
|
-
|
|
24
|
+
|
|
33
25
|
_ = version
|
|
34
26
|
if platform.system() == "Windows":
|
|
35
27
|
print("đĒ Installing LunarVim on Windows...")
|
|
@@ -49,25 +41,25 @@ LV_BRANCH='release-1.4/neovim-0.9' bash <(curl -s https://raw.githubusercontent.
|
|
|
49
41
|
else:
|
|
50
42
|
error_msg = f"Unsupported platform: {platform.system()}"
|
|
51
43
|
print(f"""
|
|
52
|
-
{
|
|
44
|
+
{"â ī¸" * 20}
|
|
53
45
|
â ERROR | {error_msg}
|
|
54
|
-
{
|
|
46
|
+
{"â ī¸" * 20}
|
|
55
47
|
""")
|
|
56
48
|
raise NotImplementedError(error_msg)
|
|
57
|
-
|
|
49
|
+
|
|
58
50
|
print(f"""
|
|
59
|
-
{
|
|
51
|
+
{"=" * 150}
|
|
60
52
|
âšī¸ INFO | LunarVim features:
|
|
61
53
|
đ IDE-like experience for Neovim
|
|
62
54
|
đ Built-in plugin management
|
|
63
55
|
đ ī¸ LSP configuration out of the box
|
|
64
56
|
đ Powerful fuzzy finding
|
|
65
57
|
âī¸ Simple and unified configuration
|
|
66
|
-
{
|
|
58
|
+
{"=" * 150}
|
|
67
59
|
|
|
68
60
|
â ī¸ NOTE: The installer will prompt for user input during installation.
|
|
69
61
|
""")
|
|
70
|
-
|
|
62
|
+
|
|
71
63
|
# _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
|
|
72
64
|
# run script here as it requires user input
|
|
73
65
|
return program
|
|
@@ -1,63 +1,56 @@
|
|
|
1
|
-
"""nerfont installer
|
|
2
|
-
"""
|
|
1
|
+
"""nerfont installer"""
|
|
3
2
|
|
|
4
3
|
import platform
|
|
5
4
|
from typing import Optional
|
|
6
5
|
|
|
7
6
|
|
|
8
|
-
config_dict = {
|
|
9
|
-
"repo_url": "CUSTOM",
|
|
10
|
-
"doc": "lightweight containerization",
|
|
11
|
-
"filename_template_windows_amd_64": "",
|
|
12
|
-
"filename_template_linux_amd_64": "",
|
|
13
|
-
"strip_v": False,
|
|
14
|
-
"exe_name": "nerdfont"
|
|
15
|
-
}
|
|
7
|
+
config_dict = {"repo_url": "CUSTOM", "doc": "lightweight containerization", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "nerdfont"}
|
|
16
8
|
|
|
17
9
|
|
|
18
10
|
def main(version: Optional[str]):
|
|
19
11
|
print(f"""
|
|
20
|
-
{
|
|
12
|
+
{"=" * 150}
|
|
21
13
|
đ¤ NERD FONTS INSTALLER | Installing programming fonts with icons
|
|
22
14
|
đģ Platform: {platform.system()}
|
|
23
|
-
đ Version: {
|
|
24
|
-
{
|
|
15
|
+
đ Version: {"latest" if version is None else version}
|
|
16
|
+
{"=" * 150}
|
|
25
17
|
""")
|
|
26
|
-
|
|
18
|
+
|
|
27
19
|
_ = version
|
|
28
20
|
if platform.system() == "Windows":
|
|
29
21
|
error_msg = "Nerd Fonts installation not supported on Windows through this installer"
|
|
30
22
|
print(f"""
|
|
31
|
-
{
|
|
23
|
+
{"â ī¸" * 20}
|
|
32
24
|
â ERROR | {error_msg}
|
|
33
25
|
đĄ TIP: Please download and install manually from https://www.nerdfonts.com
|
|
34
|
-
{
|
|
26
|
+
{"â ī¸" * 20}
|
|
35
27
|
""")
|
|
36
28
|
raise NotImplementedError(error_msg)
|
|
37
29
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
38
30
|
print("đ§ Installing Nerd Fonts on Linux using installation script...")
|
|
39
31
|
import machineconfig.jobs.python_custom_installers as module
|
|
40
32
|
from pathlib import Path
|
|
33
|
+
|
|
41
34
|
program = Path(module.__file__).parent.joinpath("scripts/linux/nerdfont.sh").read_text(encoding="utf-8")
|
|
42
35
|
else:
|
|
43
36
|
error_msg = f"Unsupported platform: {platform.system()}"
|
|
44
37
|
print(f"""
|
|
45
|
-
{
|
|
38
|
+
{"â ī¸" * 20}
|
|
46
39
|
â ERROR | {error_msg}
|
|
47
|
-
{
|
|
40
|
+
{"â ī¸" * 20}
|
|
48
41
|
""")
|
|
49
42
|
raise NotImplementedError(error_msg)
|
|
50
|
-
|
|
43
|
+
|
|
51
44
|
print(f"""
|
|
52
|
-
{
|
|
45
|
+
{"=" * 150}
|
|
53
46
|
âšī¸ INFO | Nerd Fonts features:
|
|
54
47
|
đ¨ Programming fonts patched with icons
|
|
55
48
|
đŖ Includes icons from popular sets (FontAwesome, Devicons, etc.)
|
|
56
49
|
đĨī¸ Perfect for terminals and coding environments
|
|
57
50
|
đ§° Works with many terminal applications and editors
|
|
58
|
-
{
|
|
51
|
+
{"=" * 150}
|
|
59
52
|
""")
|
|
60
|
-
|
|
53
|
+
|
|
61
54
|
# _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
|
|
62
55
|
# run script here as it requires user input
|
|
63
56
|
return program
|
|
@@ -1,37 +1,29 @@
|
|
|
1
|
-
"""nedis installer
|
|
2
|
-
"""
|
|
1
|
+
"""nedis installer"""
|
|
3
2
|
|
|
4
3
|
import platform
|
|
5
4
|
from typing import Optional
|
|
6
5
|
|
|
7
6
|
|
|
8
|
-
config_dict = {
|
|
9
|
-
"repo_url": "CUSTOM",
|
|
10
|
-
"doc": "submillisecond fast key-value db",
|
|
11
|
-
"filename_template_windows_amd_64": "",
|
|
12
|
-
"filename_template_linux_amd_64": "",
|
|
13
|
-
"strip_v": False,
|
|
14
|
-
"exe_name": "redis"
|
|
15
|
-
}
|
|
7
|
+
config_dict = {"repo_url": "CUSTOM", "doc": "submillisecond fast key-value db", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "redis"}
|
|
16
8
|
|
|
17
9
|
|
|
18
10
|
def main(version: Optional[str]):
|
|
19
11
|
print(f"""
|
|
20
|
-
{
|
|
12
|
+
{"=" * 150}
|
|
21
13
|
đī¸ REDIS INSTALLER | Setting up in-memory database
|
|
22
14
|
đģ Platform: {platform.system()}
|
|
23
|
-
đ Version: {
|
|
24
|
-
{
|
|
15
|
+
đ Version: {"latest" if version is None else version}
|
|
16
|
+
{"=" * 150}
|
|
25
17
|
""")
|
|
26
|
-
|
|
18
|
+
|
|
27
19
|
_ = version
|
|
28
20
|
if platform.system() == "Windows":
|
|
29
21
|
error_msg = "Redis installation not supported on Windows through this installer"
|
|
30
22
|
print(f"""
|
|
31
|
-
{
|
|
23
|
+
{"â ī¸" * 20}
|
|
32
24
|
â ERROR | {error_msg}
|
|
33
25
|
đĄ TIP: Consider using WSL2 or Docker to run Redis on Windows
|
|
34
|
-
{
|
|
26
|
+
{"â ī¸" * 20}
|
|
35
27
|
""")
|
|
36
28
|
raise NotImplementedError(error_msg)
|
|
37
29
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
@@ -39,6 +31,7 @@ def main(version: Optional[str]):
|
|
|
39
31
|
print(f"đ§ Installing Redis on {system_name} using installation script...")
|
|
40
32
|
import machineconfig.jobs.python_custom_installers as module
|
|
41
33
|
from pathlib import Path
|
|
34
|
+
|
|
42
35
|
if platform.system() == "Linux":
|
|
43
36
|
program = Path(module.__file__).parent.joinpath("scripts/linux/redis.sh").read_text(encoding="utf-8")
|
|
44
37
|
else: # Darwin/macOS
|
|
@@ -46,23 +39,23 @@ def main(version: Optional[str]):
|
|
|
46
39
|
else:
|
|
47
40
|
error_msg = f"Unsupported platform: {platform.system()}"
|
|
48
41
|
print(f"""
|
|
49
|
-
{
|
|
42
|
+
{"â ī¸" * 20}
|
|
50
43
|
â ERROR | {error_msg}
|
|
51
|
-
{
|
|
44
|
+
{"â ī¸" * 20}
|
|
52
45
|
""")
|
|
53
46
|
raise NotImplementedError(error_msg)
|
|
54
|
-
|
|
47
|
+
|
|
55
48
|
print(f"""
|
|
56
|
-
{
|
|
49
|
+
{"=" * 150}
|
|
57
50
|
âšī¸ INFO | Redis features:
|
|
58
51
|
⥠In-memory data structure store
|
|
59
52
|
đ Key-value database with optional persistence
|
|
60
53
|
đ Sub-millisecond response times
|
|
61
54
|
đž Supports strings, lists, sets, sorted sets, hashes
|
|
62
55
|
đ Built-in replication and Lua scripting
|
|
63
|
-
{
|
|
56
|
+
{"=" * 150}
|
|
64
57
|
""")
|
|
65
|
-
|
|
58
|
+
|
|
66
59
|
# _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
|
|
67
60
|
# run script here as it requires user input
|
|
68
61
|
return program
|
|
@@ -70,4 +63,3 @@ def main(version: Optional[str]):
|
|
|
70
63
|
|
|
71
64
|
if __name__ == "__main__":
|
|
72
65
|
pass
|
|
73
|
-
|
|
@@ -1,37 +1,29 @@
|
|
|
1
|
-
"""wezterm installer
|
|
2
|
-
"""
|
|
1
|
+
"""wezterm installer"""
|
|
3
2
|
|
|
4
3
|
import platform
|
|
5
4
|
from typing import Optional
|
|
6
5
|
|
|
7
6
|
|
|
8
|
-
config_dict = {
|
|
9
|
-
"repo_url": "CUSTOM",
|
|
10
|
-
"doc": "cli for wezterm",
|
|
11
|
-
"filename_template_windows_amd_64": "",
|
|
12
|
-
"filename_template_linux_amd_64": "",
|
|
13
|
-
"strip_v": False,
|
|
14
|
-
"exe_name": "wezterm"
|
|
15
|
-
}
|
|
7
|
+
config_dict = {"repo_url": "CUSTOM", "doc": "cli for wezterm", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "wezterm"}
|
|
16
8
|
|
|
17
9
|
|
|
18
10
|
def main(version: Optional[str]):
|
|
19
11
|
print(f"""
|
|
20
|
-
{
|
|
12
|
+
{"â" * 150}
|
|
21
13
|
đĨī¸ WEZTERM INSTALLER | Modern, GPU-accelerated terminal emulator
|
|
22
14
|
đģ Platform: {platform.system()}
|
|
23
|
-
đ Version: {
|
|
24
|
-
{
|
|
15
|
+
đ Version: {"latest" if version is None else version}
|
|
16
|
+
{"â" * 150}
|
|
25
17
|
""")
|
|
26
|
-
|
|
18
|
+
|
|
27
19
|
_ = version
|
|
28
20
|
if platform.system() == "Windows":
|
|
29
21
|
error_msg = "WezTerm installation not supported on Windows through this installer"
|
|
30
22
|
print(f"""
|
|
31
|
-
{
|
|
23
|
+
{"â ī¸" * 20}
|
|
32
24
|
â ERROR | {error_msg}
|
|
33
25
|
đĄ TIP: Please download and install manually from the WezTerm website
|
|
34
|
-
{
|
|
26
|
+
{"â ī¸" * 20}
|
|
35
27
|
""")
|
|
36
28
|
raise NotImplementedError(error_msg)
|
|
37
29
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
@@ -41,6 +33,7 @@ def main(version: Optional[str]):
|
|
|
41
33
|
""")
|
|
42
34
|
import machineconfig.jobs.python_custom_installers as module
|
|
43
35
|
from pathlib import Path
|
|
36
|
+
|
|
44
37
|
if platform.system() == "Linux":
|
|
45
38
|
program = Path(module.__file__).parent.joinpath("scripts/linux/wezterm.sh").read_text(encoding="utf-8")
|
|
46
39
|
else: # Darwin/macOS
|
|
@@ -48,14 +41,14 @@ def main(version: Optional[str]):
|
|
|
48
41
|
else:
|
|
49
42
|
error_msg = f"Unsupported platform: {platform.system()}"
|
|
50
43
|
print(f"""
|
|
51
|
-
{
|
|
44
|
+
{"â ī¸" * 20}
|
|
52
45
|
â ERROR | {error_msg}
|
|
53
|
-
{
|
|
46
|
+
{"â ī¸" * 20}
|
|
54
47
|
""")
|
|
55
48
|
raise NotImplementedError(error_msg)
|
|
56
|
-
|
|
49
|
+
|
|
57
50
|
print(f"""
|
|
58
|
-
{
|
|
51
|
+
{"â" * 150}
|
|
59
52
|
âšī¸ INFO | WezTerm Features:
|
|
60
53
|
⥠GPU-accelerated rendering
|
|
61
54
|
đ¨ Full color emoji support
|
|
@@ -63,9 +56,9 @@ def main(version: Optional[str]):
|
|
|
63
56
|
âī¸ Lua configuration
|
|
64
57
|
đĻ Cross-platform support
|
|
65
58
|
đ Plugin system
|
|
66
|
-
{
|
|
59
|
+
{"â" * 150}
|
|
67
60
|
""")
|
|
68
|
-
|
|
61
|
+
|
|
69
62
|
# _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
|
|
70
63
|
# run script here as it requires user input
|
|
71
64
|
return program
|
|
@@ -5,30 +5,18 @@ from pathlib import Path
|
|
|
5
5
|
from typing import Optional
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
config_dict = {
|
|
9
|
-
"repo_url": "CUSTOM",
|
|
10
|
-
"doc": "winget installer",
|
|
11
|
-
"filename_template_windows_amd_64": "",
|
|
12
|
-
"filename_template_linux_amd_64": "",
|
|
13
|
-
"strip_v": False,
|
|
14
|
-
"exe_name": "winget"
|
|
15
|
-
}
|
|
8
|
+
config_dict = {"repo_url": "CUSTOM", "doc": "winget installer", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "winget"}
|
|
16
9
|
|
|
17
10
|
|
|
18
11
|
def is_winget_available() -> bool:
|
|
19
12
|
"""
|
|
20
13
|
Check if winget is available in the system PATH.
|
|
21
|
-
|
|
14
|
+
|
|
22
15
|
Returns:
|
|
23
16
|
bool: True if winget is available, False otherwise
|
|
24
17
|
"""
|
|
25
18
|
try:
|
|
26
|
-
result = subprocess.run(
|
|
27
|
-
["winget", "--version"],
|
|
28
|
-
capture_output=True,
|
|
29
|
-
text=True,
|
|
30
|
-
timeout=10
|
|
31
|
-
)
|
|
19
|
+
result = subprocess.run(["winget", "--version"], capture_output=True, text=True, timeout=10)
|
|
32
20
|
return result.returncode == 0
|
|
33
21
|
except (subprocess.TimeoutExpired, FileNotFoundError, subprocess.SubprocessError):
|
|
34
22
|
return False
|
|
@@ -37,7 +25,7 @@ def is_winget_available() -> bool:
|
|
|
37
25
|
def get_latest_winget_release_url() -> Optional[str]:
|
|
38
26
|
"""
|
|
39
27
|
Get the download URL for the latest winget .msixbundle file from GitHub releases.
|
|
40
|
-
|
|
28
|
+
|
|
41
29
|
Returns:
|
|
42
30
|
Optional[str]: URL to the latest .msixbundle file, or None if not found
|
|
43
31
|
"""
|
|
@@ -45,17 +33,17 @@ def get_latest_winget_release_url() -> Optional[str]:
|
|
|
45
33
|
# Get the latest release information from GitHub API
|
|
46
34
|
api_url = "https://api.github.com/repos/microsoft/winget-cli/releases/latest"
|
|
47
35
|
headers = {"Accept": "application/vnd.github.v3+json"}
|
|
48
|
-
|
|
36
|
+
|
|
49
37
|
response = requests.get(api_url, headers=headers, timeout=30)
|
|
50
38
|
response.raise_for_status()
|
|
51
|
-
|
|
39
|
+
|
|
52
40
|
release_data = response.json()
|
|
53
|
-
|
|
41
|
+
|
|
54
42
|
# Look for .msixbundle file in assets
|
|
55
43
|
for asset in release_data.get("assets", []):
|
|
56
44
|
if asset["name"].endswith(".msixbundle"):
|
|
57
45
|
return asset["browser_download_url"]
|
|
58
|
-
|
|
46
|
+
|
|
59
47
|
return None
|
|
60
48
|
except (requests.RequestException, KeyError, ValueError) as e:
|
|
61
49
|
print(f"Error fetching latest winget release: {e}")
|
|
@@ -65,23 +53,23 @@ def get_latest_winget_release_url() -> Optional[str]:
|
|
|
65
53
|
def download_file(url: str, destination: Path) -> bool:
|
|
66
54
|
"""
|
|
67
55
|
Download a file from URL to destination.
|
|
68
|
-
|
|
56
|
+
|
|
69
57
|
Args:
|
|
70
58
|
url: URL to download from
|
|
71
59
|
destination: Path where to save the file
|
|
72
|
-
|
|
60
|
+
|
|
73
61
|
Returns:
|
|
74
62
|
bool: True if download successful, False otherwise
|
|
75
63
|
"""
|
|
76
64
|
try:
|
|
77
65
|
response = requests.get(url, stream=True, timeout=60)
|
|
78
66
|
response.raise_for_status()
|
|
79
|
-
|
|
80
|
-
with open(destination,
|
|
67
|
+
|
|
68
|
+
with open(destination, "wb") as f:
|
|
81
69
|
for chunk in response.iter_content(chunk_size=8192):
|
|
82
70
|
if chunk:
|
|
83
71
|
f.write(chunk)
|
|
84
|
-
|
|
72
|
+
|
|
85
73
|
return True
|
|
86
74
|
except (requests.RequestException, IOError) as e:
|
|
87
75
|
print(f"Error downloading file: {e}")
|
|
@@ -91,29 +79,24 @@ def download_file(url: str, destination: Path) -> bool:
|
|
|
91
79
|
def install_msix_package(package_path: Path) -> bool:
|
|
92
80
|
"""
|
|
93
81
|
Install an MSIX package using PowerShell.
|
|
94
|
-
|
|
82
|
+
|
|
95
83
|
Args:
|
|
96
84
|
package_path: Path to the .msixbundle file
|
|
97
|
-
|
|
85
|
+
|
|
98
86
|
Returns:
|
|
99
87
|
bool: True if installation successful, False otherwise
|
|
100
88
|
"""
|
|
101
89
|
try:
|
|
102
90
|
# Use PowerShell to install the MSIX package
|
|
103
|
-
powershell_cmd = [
|
|
104
|
-
|
|
105
|
-
"-ExecutionPolicy", "Bypass",
|
|
106
|
-
"-Command",
|
|
107
|
-
f"Add-AppxPackage -Path '{package_path}'"
|
|
108
|
-
]
|
|
109
|
-
|
|
91
|
+
powershell_cmd = ["powershell.exe", "-ExecutionPolicy", "Bypass", "-Command", f"Add-AppxPackage -Path '{package_path}'"]
|
|
92
|
+
|
|
110
93
|
result = subprocess.run(
|
|
111
94
|
powershell_cmd,
|
|
112
95
|
capture_output=True,
|
|
113
96
|
text=True,
|
|
114
|
-
timeout=300 # 5 minutes timeout
|
|
97
|
+
timeout=300, # 5 minutes timeout
|
|
115
98
|
)
|
|
116
|
-
|
|
99
|
+
|
|
117
100
|
if result.returncode == 0:
|
|
118
101
|
print("Winget installed successfully!")
|
|
119
102
|
return True
|
|
@@ -121,7 +104,7 @@ def install_msix_package(package_path: Path) -> bool:
|
|
|
121
104
|
print(f"Installation failed with return code {result.returncode}")
|
|
122
105
|
print(f"Error output: {result.stderr}")
|
|
123
106
|
return False
|
|
124
|
-
|
|
107
|
+
|
|
125
108
|
except (subprocess.SubprocessError, subprocess.TimeoutExpired) as e:
|
|
126
109
|
print(f"Error installing MSIX package: {e}")
|
|
127
110
|
return False
|
|
@@ -130,7 +113,7 @@ def install_msix_package(package_path: Path) -> bool:
|
|
|
130
113
|
def ensure_winget_available() -> bool:
|
|
131
114
|
"""
|
|
132
115
|
Ensure winget is available on the system. If not available, download and install it.
|
|
133
|
-
|
|
116
|
+
|
|
134
117
|
Returns:
|
|
135
118
|
bool: True if winget is available (either was already installed or successfully installed),
|
|
136
119
|
False if installation failed
|
|
@@ -139,41 +122,41 @@ def ensure_winget_available() -> bool:
|
|
|
139
122
|
if is_winget_available():
|
|
140
123
|
print("Winget is already available on the system.")
|
|
141
124
|
return True
|
|
142
|
-
|
|
125
|
+
|
|
143
126
|
print("Winget not found. Attempting to download and install...")
|
|
144
|
-
|
|
127
|
+
|
|
145
128
|
# Get the latest release URL
|
|
146
129
|
download_url = get_latest_winget_release_url()
|
|
147
130
|
if not download_url:
|
|
148
131
|
print("Could not find the latest winget release URL.")
|
|
149
132
|
return False
|
|
150
|
-
|
|
133
|
+
|
|
151
134
|
print(f"Found latest winget release: {download_url}")
|
|
152
|
-
|
|
135
|
+
|
|
153
136
|
# Create temporary directory for download
|
|
154
137
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
155
138
|
temp_path = Path(temp_dir)
|
|
156
|
-
|
|
139
|
+
|
|
157
140
|
# Extract filename from URL
|
|
158
141
|
filename = download_url.split("/")[-1]
|
|
159
142
|
if not filename.endswith(".msixbundle"):
|
|
160
143
|
filename = "winget-latest.msixbundle"
|
|
161
|
-
|
|
144
|
+
|
|
162
145
|
package_path = temp_path / filename
|
|
163
|
-
|
|
146
|
+
|
|
164
147
|
# Download the package
|
|
165
148
|
print(f"Downloading winget package to {package_path}...")
|
|
166
149
|
if not download_file(download_url, package_path):
|
|
167
150
|
print("Failed to download winget package.")
|
|
168
151
|
return False
|
|
169
|
-
|
|
152
|
+
|
|
170
153
|
print("Download completed. Installing winget...")
|
|
171
|
-
|
|
154
|
+
|
|
172
155
|
# Install the package
|
|
173
156
|
if not install_msix_package(package_path):
|
|
174
157
|
print("Failed to install winget package.")
|
|
175
158
|
return False
|
|
176
|
-
|
|
159
|
+
|
|
177
160
|
# Verify installation
|
|
178
161
|
if is_winget_available():
|
|
179
162
|
print("Winget has been successfully installed and is now available!")
|
|
@@ -186,9 +169,8 @@ def ensure_winget_available() -> bool:
|
|
|
186
169
|
if __name__ == "__main__":
|
|
187
170
|
# Example usage
|
|
188
171
|
print("=== Winget Installation ===\n")
|
|
189
|
-
|
|
172
|
+
|
|
190
173
|
if ensure_winget_available():
|
|
191
174
|
print("Winget is ready to use!")
|
|
192
175
|
else:
|
|
193
176
|
print("Failed to ensure winget availability.")
|
|
194
|
-
|
|
@@ -1,38 +1,29 @@
|
|
|
1
|
-
"""docker installer
|
|
2
|
-
"""
|
|
1
|
+
"""docker installer"""
|
|
3
2
|
|
|
4
3
|
import platform
|
|
5
4
|
from typing import Optional
|
|
6
5
|
|
|
7
6
|
|
|
8
|
-
config_dict = {
|
|
9
|
-
"repo_url": "CUSTOM",
|
|
10
|
-
"doc": "lightweight containerization",
|
|
11
|
-
"filename_template_windows_amd_64": "",
|
|
12
|
-
"filename_template_linux_amd_64": "",
|
|
13
|
-
"strip_v": False,
|
|
14
|
-
"exe_name": "docker"
|
|
15
|
-
}
|
|
16
|
-
|
|
7
|
+
config_dict = {"repo_url": "CUSTOM", "doc": "lightweight containerization", "filename_template_windows_amd_64": "", "filename_template_linux_amd_64": "", "strip_v": False, "exe_name": "docker"}
|
|
17
8
|
|
|
18
9
|
|
|
19
10
|
def main(version: Optional[str]):
|
|
20
11
|
print(f"""
|
|
21
|
-
{
|
|
12
|
+
{"=" * 150}
|
|
22
13
|
đŗ DOCKER INSTALLER | Setting up containerization platform
|
|
23
14
|
đģ Platform: {platform.system()}
|
|
24
|
-
đ Version: {
|
|
25
|
-
{
|
|
15
|
+
đ Version: {"latest" if version is None else version}
|
|
16
|
+
{"=" * 150}
|
|
26
17
|
""")
|
|
27
|
-
|
|
18
|
+
|
|
28
19
|
_ = version
|
|
29
20
|
if platform.system() == "Windows":
|
|
30
21
|
error_msg = "Docker installation not supported on Windows through this installer"
|
|
31
22
|
print(f"""
|
|
32
|
-
{
|
|
23
|
+
{"â ī¸" * 20}
|
|
33
24
|
â ERROR | {error_msg}
|
|
34
25
|
đĄ TIP: Please use Docker Desktop for Windows instead
|
|
35
|
-
{
|
|
26
|
+
{"â ī¸" * 20}
|
|
36
27
|
""")
|
|
37
28
|
raise NotImplementedError(error_msg)
|
|
38
29
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
@@ -40,6 +31,7 @@ def main(version: Optional[str]):
|
|
|
40
31
|
print(f"đ§ Installing Docker on {system_name} using official script...")
|
|
41
32
|
import machineconfig.jobs.python_custom_installers as module
|
|
42
33
|
from pathlib import Path
|
|
34
|
+
|
|
43
35
|
if platform.system() == "Linux":
|
|
44
36
|
program = Path(module.__file__).parent.joinpath("scripts/linux/docker.sh").read_text(encoding="utf-8")
|
|
45
37
|
else: # Darwin/macOS
|
|
@@ -48,23 +40,23 @@ def main(version: Optional[str]):
|
|
|
48
40
|
else:
|
|
49
41
|
error_msg = f"Unsupported platform: {platform.system()}"
|
|
50
42
|
print(f"""
|
|
51
|
-
{
|
|
43
|
+
{"â ī¸" * 20}
|
|
52
44
|
â ERROR | {error_msg}
|
|
53
|
-
{
|
|
45
|
+
{"â ī¸" * 20}
|
|
54
46
|
""")
|
|
55
47
|
raise NotImplementedError(error_msg)
|
|
56
|
-
|
|
48
|
+
|
|
57
49
|
print(f"""
|
|
58
|
-
{
|
|
50
|
+
{"=" * 150}
|
|
59
51
|
âšī¸ INFO | Docker features:
|
|
60
52
|
đĻ Container-based virtualization
|
|
61
53
|
đ Simplified application deployment
|
|
62
54
|
đ Consistent development environments
|
|
63
55
|
đĄī¸ Isolated application environments
|
|
64
56
|
đ Efficient resource utilization
|
|
65
|
-
{
|
|
57
|
+
{"=" * 150}
|
|
66
58
|
""")
|
|
67
|
-
|
|
59
|
+
|
|
68
60
|
# _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
|
|
69
61
|
# run script here as it requires user input
|
|
70
62
|
return program
|
|
@@ -72,4 +64,3 @@ def main(version: Optional[str]):
|
|
|
72
64
|
|
|
73
65
|
if __name__ == "__main__":
|
|
74
66
|
pass
|
|
75
|
-
|