machineconfig 6.84__py3-none-any.whl → 6.85__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.

Files changed (35) hide show
  1. machineconfig/cluster/sessions_managers/wt_local.py +16 -221
  2. machineconfig/cluster/sessions_managers/wt_local_manager.py +33 -174
  3. machineconfig/cluster/sessions_managers/wt_remote_manager.py +39 -197
  4. machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
  5. machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
  6. machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
  7. machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
  8. machineconfig/scripts/python/ai/vscode_tasks.py +7 -2
  9. machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
  10. machineconfig/scripts/python/fire_jobs.py +30 -65
  11. machineconfig/scripts/python/helpers_devops/cli_config.py +1 -1
  12. machineconfig/scripts/python/helpers_devops/cli_nw.py +50 -0
  13. machineconfig/scripts/python/helpers_devops/cli_self.py +3 -3
  14. machineconfig/scripts/python/helpers_devops/cli_utils.py +1 -1
  15. machineconfig/scripts/python/helpers_fire/helpers4.py +15 -0
  16. machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +1 -1
  17. machineconfig/scripts/python/nw/mount_nfs +1 -1
  18. machineconfig/scripts/python/nw/wifi_conn.py +1 -53
  19. machineconfig/scripts/python/terminal.py +46 -17
  20. machineconfig/scripts/python/utils.py +2 -0
  21. machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
  22. machineconfig/scripts/windows/term.ps1 +48 -0
  23. machineconfig/setup_linux/web_shortcuts/interactive.sh +1 -1
  24. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +1 -1
  25. machineconfig/utils/code.py +18 -13
  26. machineconfig/utils/installer.py +0 -1
  27. machineconfig/utils/path_helper.py +1 -1
  28. machineconfig/utils/scheduling.py +0 -2
  29. machineconfig/utils/ssh.py +2 -2
  30. {machineconfig-6.84.dist-info → machineconfig-6.85.dist-info}/METADATA +1 -1
  31. {machineconfig-6.84.dist-info → machineconfig-6.85.dist-info}/RECORD +34 -31
  32. machineconfig/scripts/linux/warp-cli.sh +0 -122
  33. {machineconfig-6.84.dist-info → machineconfig-6.85.dist-info}/WHEEL +0 -0
  34. {machineconfig-6.84.dist-info → machineconfig-6.85.dist-info}/entry_points.txt +0 -0
  35. {machineconfig-6.84.dist-info → machineconfig-6.85.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,5 @@
1
1
  import subprocess
2
+ # from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
2
3
  import typer
3
4
  from typing import Annotated
4
5
 
@@ -9,7 +10,21 @@ def strip_ansi_codes(text: str) -> str:
9
10
  return re.sub(r'\x1b\[[0-9;]*[a-zA-Z]', '', text)
10
11
 
11
12
 
12
- def choose_zellij_session():
13
+ def choose_zellij_session(
14
+ new_session: Annotated[bool, typer.Option("--new-session", "-n", help="Create a new Zellij session instead of attaching to an existing one.", show_default=True)] = False,
15
+ kill_all: Annotated[bool, typer.Option("--kill-all", "-k", help="Kill all existing Zellij sessions before creating a new one.", show_default=True)] = False):
16
+
17
+ if new_session:
18
+ cmd = """
19
+ zellij --layout st2
20
+ """
21
+ if kill_all:
22
+ cmd = f"""zellij kill-sessions
23
+ {cmd}"""
24
+ from machineconfig.utils.code import exit_then_run_shell_script
25
+ exit_then_run_shell_script(cmd, strict=True)
26
+ typer.Exit()
27
+ return
13
28
  cmd = "zellij list-sessions"
14
29
  sessions: list[str] = subprocess.check_output(cmd, shell=True).decode().strip().split("\n")
15
30
  sessions.sort(key=lambda s: "EXITED" in s)
@@ -32,16 +47,6 @@ def choose_zellij_session():
32
47
  exit_then_run_shell_script(result, strict=True)
33
48
 
34
49
 
35
- def new_zellij_session(kill_all: Annotated[bool, typer.Option("--kill-all", "-k", help="Kill all existing Zellij sessions before creating a new one.", show_default=True)] = False):
36
- cmd = """
37
- zellij --layout st2
38
- """
39
- if kill_all:
40
- cmd = f"""zellij kill-sessions
41
- {cmd}"""
42
- from machineconfig.utils.code import exit_then_run_shell_script
43
- exit_then_run_shell_script(cmd, strict=True)
44
-
45
50
 
46
51
  def get_session_tabs() -> list[tuple[str, str]]:
47
52
  cmd = "zellij list-sessions"
@@ -64,16 +69,40 @@ def get_session_tabs() -> list[tuple[str, str]]:
64
69
  print(result)
65
70
  return result
66
71
 
72
+ def start_wt(layout_name: Annotated[str, typer.Argument(help="Layout name to start.")]):
73
+ from pathlib import Path
74
+ layouts_file = Path.home().joinpath("dotfiles/machineconfig/layouts.json")
75
+ if not layouts_file.exists():
76
+ typer.echo(f"❌ Layouts file not found: {layouts_file}")
77
+ # available
78
+ raise typer.Exit(code=1)
79
+ import json
80
+ from machineconfig.utils.schemas.layouts.layout_types import LayoutsFile
81
+ layouts_data: LayoutsFile = json.loads(layouts_file.read_text(encoding="utf-8"))
82
+ chosen_layout = next((a_layout for a_layout in layouts_data["layouts"] if a_layout["layoutName"] == layout_name), None)
83
+ if not chosen_layout:
84
+ typer.echo(f"❌ Layout '{layout_name}' not found in layouts file.")
85
+ available_layouts = [a_layout["layoutName"] for a_layout in layouts_data["layouts"]]
86
+ typer.echo(f"Available layouts: {', '.join(available_layouts)}")
87
+ raise typer.Exit(code=1)
88
+ from machineconfig.cluster.sessions_managers.wt_local import run_wt_layout
89
+ run_wt_layout(layout_config=chosen_layout)
90
+
91
+ # cmd = f'powershell -ExecutionPolicy Bypass -File "./{layout_name}_layout.ps1"'
92
+ # from machineconfig.utils.code import exit_then_run_shell_script
93
+ # exit_then_run_shell_script(cmd, strict=True)
94
+
67
95
 
68
96
  def main():
69
97
  app = typer.Typer(help="🖥️ Terminal utilities", no_args_is_help=True, add_help_option=False)
70
- app.command(name="choose-zellij-session", no_args_is_help=False, help="[c] Choose a Zellij session to attach to")(choose_zellij_session)
71
- app.command(name="c", hidden=True, no_args_is_help=False, help="[c] Choose a Zellij session to attach to")(choose_zellij_session)
72
- app.command(name="new-zellij-session", no_args_is_help=False, help="[n] new zellij session.")(new_zellij_session)
73
- app.command(name="n", hidden=True, no_args_is_help=False, help="[n] new zellij session.")(new_zellij_session)
98
+ app.command(name="attach-to-zellij", no_args_is_help=False, help="[z] Choose a Zellij session to attach to")(choose_zellij_session)
99
+ app.command(name="z", hidden=True, no_args_is_help=False, help="[z] Choose a Zellij session to attach to")(choose_zellij_session)
100
+
101
+ app.command(name="start-wt", no_args_is_help=True, help="[w] Start a Windows Terminal layout by name.")(start_wt)
102
+ app.command(name="w", hidden=True, no_args_is_help=True, help="[w] Start a Windows Terminal layout by name.")(start_wt)
74
103
 
75
- app.command(name="get-session-tabs", no_args_is_help=False, help="Get all Zellij session tabs.")(get_session_tabs)
76
- app.command(name="gst", hidden=True, no_args_is_help=False, help="Get all Zellij session tabs.")(get_session_tabs)
104
+ app.command(name="get-session-tabs", no_args_is_help=False, help="[zt] Get all Zellij session tabs.")(get_session_tabs)
105
+ app.command(name="zt", hidden=True, no_args_is_help=False, help="[zt] Get all Zellij session tabs.")(get_session_tabs)
77
106
  app()
78
107
 
79
108
 
@@ -41,6 +41,7 @@ uv add nbformat ipdb ipykernel ipython pylint pyright mypy pyrefly ty pytest
41
41
 
42
42
 
43
43
 
44
+
44
45
  def get_app() -> typer.Typer:
45
46
  app = typer.Typer(help="🛠️ utilities operations", no_args_is_help=True, add_help_option=False, add_completion=False)
46
47
  app.command(name="kill-process", no_args_is_help=False, help="[k] Choose a process to kill")(kill_process)
@@ -56,6 +57,7 @@ def get_app() -> typer.Typer:
56
57
  app.command(name="pm", no_args_is_help=True, hidden=True)(merge_pdfs)
57
58
  app.command(name="pdf-compress", no_args_is_help=True, help="[pc] Compress a PDF file.")(compress_pdf)
58
59
  app.command(name="pc", no_args_is_help=True, hidden=True)(compress_pdf)
60
+
59
61
  return app
60
62
 
61
63
  # def func():
@@ -7,7 +7,7 @@ $user = ''
7
7
  $sharePath = ''
8
8
  $driveLetter = ''
9
9
 
10
- uv run --python 3.14 --with "machineconfig>=6.84" python -m machineconfig.scripts.python.mount_ssh
10
+ uv run --python 3.14 --with "machineconfig>=6.85" python -m machineconfig.scripts.python.mount_ssh
11
11
 
12
12
  net use T: \\sshfs.kr\$user@$host.local
13
13
  # this worked: net use T: \\sshfs\alex@alex-p51s-5.local
@@ -0,0 +1,48 @@
1
+ # Equivalent PowerShell script for term.ps1
2
+
3
+ Set-StrictMode -Version Latest
4
+ $ErrorActionPreference = 'Stop'
5
+
6
+ # Generate random name using timestamp and SHA256 hash
7
+ $timestampNs = [DateTimeOffset]::Now.ToUnixTimeMilliseconds() * 1000000
8
+ $hashInput = [System.Text.Encoding]::UTF8.GetBytes($timestampNs.ToString())
9
+ $sha256 = [System.Security.Cryptography.SHA256]::Create()
10
+ $hashBytes = $sha256.ComputeHash($hashInput)
11
+ $hashString = -join ($hashBytes | ForEach-Object { $_.ToString('x2') })
12
+ $randomName = $hashString.Substring(0, 16)
13
+
14
+ $opDir = "$env:USERPROFILE\tmp_results\tmp_scripts\machineconfig"
15
+ $opProgramPath = "$opDir\$randomName.ps1"
16
+ $global:OP_PROGRAM_PATH = $opProgramPath
17
+
18
+ # ANSI color/style codes (using Write-Host colors)
19
+ $bold = [char]27 + '[1m'
20
+ $reset = [char]27 + '[0m'
21
+ $green = [char]27 + '[32m'
22
+ $yellow = [char]27 + '[33m'
23
+ $blue = [char]27 + '[34m'
24
+ $red = [char]27 + '[31m'
25
+
26
+ $timestamp = Get-Date -Format 'u'
27
+
28
+ Write-Host "${bold}${blue}🛠️ terminal — running term${reset}"
29
+ Write-Host "${blue}Timestamp:${reset} ${timestamp}"
30
+ Write-Host "${blue}Op program path:${reset} ${opProgramPath}"
31
+
32
+ terminal $args
33
+
34
+ if (Test-Path $opProgramPath) {
35
+ Write-Host "${green}✅ Found op program:${reset} ${opProgramPath}"
36
+ # Assuming bat is available; otherwise, use Get-Content
37
+ & bat --style=plain --paging=never $opProgramPath
38
+ Write-Host "${green}▶ Running...${reset}"
39
+ . $opProgramPath
40
+ $status = $LASTEXITCODE
41
+ if ($status -eq 0) {
42
+ Write-Host "${green}✅ Completed successfully (exit ${status})${reset}"
43
+ } else {
44
+ Write-Host "${yellow}⚠️ Program exited with status ${status}${reset}"
45
+ }
46
+ } else {
47
+ Write-Host "${yellow}⚠️ No op program found at: ${opProgramPath}${reset}"
48
+ }
@@ -1,7 +1,7 @@
1
1
  #!/bin/bash
2
2
  . <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
3
3
  mcfg() {
4
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.84" mcfg "$@"
4
+ "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.85" mcfg "$@"
5
5
  }
6
6
  alias d="mcfg devops"
7
7
  alias c="mcfg cloud"
@@ -2,7 +2,7 @@
2
2
 
3
3
  iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
4
4
  function mcfg {
5
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.84" mcfg $args
5
+ & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.85" mcfg $args
6
6
  }
7
7
  function d { mcfg devops @args }
8
8
  function c { mcfg cloud @args }
@@ -7,18 +7,23 @@ from pathlib import Path
7
7
 
8
8
  def print_code(code: str, lexer: str, desc: str, subtitle: str = ""):
9
9
  import platform
10
- from rich.console import Console
11
- from rich.panel import Panel
12
- from rich.syntax import Syntax
13
- if lexer == "shell":
14
- if platform.system() == "Windows":
15
- lexer = "powershell"
16
- elif platform.system() in ["Linux", "Darwin"]:
17
- lexer = "sh"
18
- else:
19
- raise NotImplementedError(f"Platform {platform.system()} not supported for lexer {lexer}")
20
- console = Console()
21
- console.print(Panel(Syntax(code=code, lexer=lexer), title=f"📄 {desc}", subtitle=subtitle), style="bold red")
10
+ try:
11
+ from rich.console import Console
12
+ from rich.panel import Panel
13
+ from rich.syntax import Syntax
14
+ if lexer == "shell":
15
+ if platform.system() == "Windows":
16
+ lexer = "powershell"
17
+ elif platform.system() in ["Linux", "Darwin"]:
18
+ lexer = "sh"
19
+ else:
20
+ raise NotImplementedError(f"Platform {platform.system()} not supported for lexer {lexer}")
21
+ console = Console()
22
+ console.print(Panel(Syntax(code=code, lexer=lexer), title=f"📄 {desc}", subtitle=subtitle), style="bold red")
23
+ except ImportError:
24
+ print(f"--- {desc} ---")
25
+ print(code)
26
+ print(f"--- End of {desc} ---")
22
27
 
23
28
 
24
29
  def get_uv_command_executing_python_script(python_script: str, uv_with: Optional[list[str]], uv_project_dir: Optional[str]) -> tuple[str, Path]:
@@ -51,7 +56,7 @@ def run_python_script_in_marimo(py_script: str, uv_project_with: Optional[str]):
51
56
  if uv_project_with is not None:
52
57
  requirements = f"""--with "marimo" --project {uv_project_with} """
53
58
  else:
54
- requirements = f"""--with "marimo" """
59
+ requirements = """--with "marimo" """
55
60
  fire_line = f"""
56
61
  cd {tmp_dir}
57
62
  uv run {requirements} marimo convert {pyfile.name} -o marimo_nb.py
@@ -214,7 +214,6 @@ def get_machineconfig_version() -> str:
214
214
  from importlib.metadata import PackageNotFoundError, version as _pkg_version
215
215
  from pathlib import Path
216
216
  import tomllib
217
-
218
217
  name: str = "machineconfig"
219
218
  try:
220
219
  return _pkg_version(name)
@@ -77,7 +77,7 @@ def match_file_name(sub_string: str, search_root: PathExtended, suffixes: set[st
77
77
  if len(filename_matches) < 20:
78
78
  print("\n".join([a_potential_match.as_posix() for a_potential_match in filename_matches]))
79
79
  if len(filename_matches) > 1:
80
- print("Try to narrow down filename_matches search by case-sensitivity.")
80
+ print(f"Try to narrow down filename_matches search by case-sensitivity, found {len(filename_matches)} results. First @ {filename_matches[0].as_posix()}")
81
81
  # let's see if avoiding .lower() helps narrowing down to one result
82
82
  reduced_scripts = [a_potential_match for a_potential_match in filename_matches if sub_string in a_potential_match.name]
83
83
  if len(reduced_scripts) == 1:
@@ -139,8 +139,6 @@
139
139
  # start: datetime
140
140
  # end: datetime
141
141
  # status: str
142
-
143
- # @classmethod
144
142
  # def from_path(cls, path: PathExtended, return_default_if_not_found: bool=False):
145
143
  # if not path.exists():
146
144
  # if return_default_if_not_found:
@@ -8,7 +8,7 @@ from machineconfig.utils.terminal import Response
8
8
  from machineconfig.utils.accessories import pprint, randstr
9
9
  from machineconfig.utils.meta import lambda_to_python_script
10
10
  UV_RUN_CMD = "$HOME/.local/bin/uv run" if platform.system() != "Windows" else """& "$env:USERPROFILE/.local/bin/uv" run"""
11
- MACHINECONFIG_VERSION = "machineconfig>=6.84"
11
+ MACHINECONFIG_VERSION = "machineconfig>=6.85"
12
12
  DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
13
13
 
14
14
  class SSH:
@@ -115,7 +115,7 @@ class SSH:
115
115
  self.tqdm_wrap = RichProgressWrapper
116
116
  from machineconfig.scripts.python.helpers_devops.cli_utils import get_machine_specs
117
117
  self.local_specs: MachineSpecs = get_machine_specs()
118
- resp = self.run_shell(command=f"""~/.local/bin/utils get-machine-specs """, verbose_output=False, description="Getting remote machine specs", strict_stderr=False, strict_return_code=False)
118
+ resp = self.run_shell(command="""~/.local/bin/utils get-machine-specs """, verbose_output=False, description="Getting remote machine specs", strict_stderr=False, strict_return_code=False)
119
119
  json_str = resp.op
120
120
  import ast
121
121
  self.remote_specs: MachineSpecs = cast(MachineSpecs, ast.literal_eval(json_str))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 6.84
3
+ Version: 6.85
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -14,10 +14,10 @@ machineconfig/cluster/remote/run_remote.py,sha256=vCc56t8BUAUJp7tyb0PFfwy5hlmIdR
14
14
  machineconfig/cluster/remote/script_execution.py,sha256=d1NZdIHlB0H69cyLgOv81vS9ui81d9ClM4WA4ICHKLY,9857
15
15
  machineconfig/cluster/remote/script_notify_upon_completion.py,sha256=GRxnnbnOl1-hTovTN-zI_M9wdV7x293yA77_mou9I1o,2032
16
16
  machineconfig/cluster/sessions_managers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- machineconfig/cluster/sessions_managers/wt_local.py,sha256=6XQL4J1QJlqVyvvTkPASJ4Nvlx5d1iyZAeIktffrkoE,18998
18
- machineconfig/cluster/sessions_managers/wt_local_manager.py,sha256=B7qpdRakeS1XFx4_xapIekii2B_2Nm8XHMvNWlcr7uk,24370
17
+ machineconfig/cluster/sessions_managers/wt_local.py,sha256=AwiSXXOX4XLfrAkgZoy1sSYkNo-7Nq_n4hxPYFAoYqo,9781
18
+ machineconfig/cluster/sessions_managers/wt_local_manager.py,sha256=Y4NT-ukc7z8BVO2tqRZU0tzbLro3uWwU9UUI5MVLut4,19841
19
19
  machineconfig/cluster/sessions_managers/wt_remote.py,sha256=yofv3Zlj2aClDUKYhUJVyvO-Wh76Wka71n-DY1ODj0Q,9072
20
- machineconfig/cluster/sessions_managers/wt_remote_manager.py,sha256=wxfZPJd4_21LAEoaf1kVDIyhUOYlJfWfNfFvlCOPLqo,20303
20
+ machineconfig/cluster/sessions_managers/wt_remote_manager.py,sha256=XC6JUlUsPAuKkw42T0s8wrJNOaXttley2BcfMicH6X0,14490
21
21
  machineconfig/cluster/sessions_managers/zellij_local.py,sha256=eI3nLzlg1lrKDBu-RscTUEAvsJVRd06TrcdVABNgVu4,10076
22
22
  machineconfig/cluster/sessions_managers/zellij_local_manager.py,sha256=YJVhBTWh4FVduvnysMeka_uQ7cckRTLpMrBx5O386zs,17701
23
23
  machineconfig/cluster/sessions_managers/zellij_remote.py,sha256=TFx-Xjmoue8KjbzBFtvFSOSx3zgoTdS_N1WWPPdMBm8,8513
@@ -27,10 +27,14 @@ machineconfig/cluster/sessions_managers/helpers/load_balancer_helper.py,sha256=i
27
27
  machineconfig/cluster/sessions_managers/utils/load_balancer.py,sha256=Y4RQmhROY6o7JXSJXRrBTkoAuEmu1gvmvN_7JKPw5sc,3178
28
28
  machineconfig/cluster/sessions_managers/utils/maker.py,sha256=V8_ywAEaD9VZQ5GIAm0S0XO_5pf7nAcnVBEyD_R8TSY,2643
29
29
  machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py,sha256=OA50j16uUS9ZTjL38TLuR3jufIOln_EszMZpbWyejTo,6972
30
+ machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py,sha256=LWgK-886QMERLRJwQ4rH2Nr2RGlyKu6P7JYoBMVWMGc,1604
31
+ machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py,sha256=e75rdp0G8cDfF9SfkJ7LX3TAJ8R3JWR5v-C_SDkDa14,1627
30
32
  machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py,sha256=Mitm7mKiKl5lT0OiEUHAqVg2Q21RjsKO1-hpJTHJ5lM,15196
31
33
  machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py,sha256=lApUy67_WhfaBXqt0meZSx_QvwiXjN0YLdyE3c7kP_s,6744
32
34
  machineconfig/cluster/sessions_managers/wt_utils/session_manager.py,sha256=-PNcYwPqwdNRnLU9QGKxRR9i6ewY02Id-tgnODB_OzQ,12552
33
35
  machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py,sha256=t5EWNOVS-PTc2fWE8aWNBrDyqR8akLtwtRinztxOdpY,9590
36
+ machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py,sha256=OE24ggT2IWwR22rLHPc6fKxnafjPqIqoPa5VqeMDV90,3961
37
+ machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py,sha256=T6u7Ae2F84VEoQykAZotJdkm8KtwLSyAW-LLC9PQKZE,7824
34
38
  machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py,sha256=FyYsqowiFAvqv4M0eXRnw2U38r7u8EI1I3p580kV5Y0,2976
35
39
  machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py,sha256=FMpwaSeDCc71pEiVk99s8f5NkZEQ8zKQNUuaSXojgq4,4615
36
40
  machineconfig/cluster/sessions_managers/zellij_utils/monitoring_types.py,sha256=8l8OAfWYy5xv-EaVqtXLqvPo9YaR9i8kFqGMhPzk0nw,2616
@@ -109,7 +113,6 @@ machineconfig/scripts/linux/fzfrga,sha256=xSdws6ae28ZXkkqz_uupZ0MYw_vxE2qpLT2DLS
109
113
  machineconfig/scripts/linux/mcfgs,sha256=tjlIG2qEpmx1EuMBYflYcp6GfgiFgSj4OMOD-d94xio,1179
110
114
  machineconfig/scripts/linux/skrg,sha256=JgQJGwxaChr148bDnpTB0rrqZMe2o2zGSDA9x_oUhWM,133
111
115
  machineconfig/scripts/linux/term,sha256=CNPY8p6SitOmtOPKXPervPPabjJNYBerA12SHN_v7w4,1139
112
- machineconfig/scripts/linux/warp-cli.sh,sha256=shFFZ9viet_DSEEHT8kxlGRHoJpO6o85pKYnc3rIkaA,3868
113
116
  machineconfig/scripts/linux/other/share_cloud.sh,sha256=lIZrXiaOT11kzu4NFNTXvANhc2bMdSPDYD1-7XUO_C0,2027
114
117
  machineconfig/scripts/linux/other/share_nfs,sha256=LDQZQ9TV7z2y7RtNHiO4Wb513MztyGjaAV-GzTGwUdc,1374
115
118
  machineconfig/scripts/linux/other/start_docker,sha256=_yDN_PPqgzSUnPT7dmniMTpL4IfeeaGy1a2OL3IJlDU,525
@@ -120,17 +123,17 @@ machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yy
120
123
  machineconfig/scripts/python/croshell.py,sha256=QyQbVboNqDQHJkUeSsJvdT212t4TW46yat3GBzneqsQ,8649
121
124
  machineconfig/scripts/python/devops.py,sha256=Lv4d-UlyOREj4VTcu_pxswYo54Mawe3XGeKjreGQDYg,2222
122
125
  machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
123
- machineconfig/scripts/python/fire_jobs.py,sha256=UrxCwFKg7ZtBYKFpsSHe62ngcpmHFomSxFWDLnM7CmQ,14645
126
+ machineconfig/scripts/python/fire_jobs.py,sha256=bW2RHIP1qD54d_WZHflNwTej7lrdE8OOuJ7ZKQpiB8I,13897
124
127
  machineconfig/scripts/python/ftpx.py,sha256=A13hL_tDYfcsaK9PkshK-0lrUS6KPhPCtwqWtLSo6IM,9764
125
128
  machineconfig/scripts/python/interactive.py,sha256=zt3g6nGKR_Y5A57UnR4Y5-JpLzrpnCOSaqU1bnaikK0,11666
126
129
  machineconfig/scripts/python/mcfg.py,sha256=TB5lZDZDImGqX4_mMSEv4ZoFigIPA0RXn-9H2cmPS6g,2457
127
130
  machineconfig/scripts/python/sessions.py,sha256=JfN8M7r7f8DkfiGJ4jz2NfXvABm90nOZJmLGxPgw_2M,9518
128
- machineconfig/scripts/python/terminal.py,sha256=07TRB0yK-XB86s1EWUQdDv8m3uk6WzndMbqafd2EU0c,3562
129
- machineconfig/scripts/python/utils.py,sha256=Pdk75UjapwE3gou-CMHtqqPhNhpPZP2t1Pm1LPbam-Y,3280
131
+ machineconfig/scripts/python/terminal.py,sha256=5D0RlZkx9ut5WlwjDI8j-t_z6u-H_jJD1eKBnWy_TGU,5191
132
+ machineconfig/scripts/python/utils.py,sha256=1960YceYJyjo0UFAiVaxIMIXm031wdYRA8l1U6k6h9s,3282
130
133
  machineconfig/scripts/python/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
134
  machineconfig/scripts/python/ai/generate_files.py,sha256=VfjKdwgF8O6E4oiRtfWNliibLmmwGe7f9ld6wpOsXTw,14498
132
135
  machineconfig/scripts/python/ai/initai.py,sha256=P4-NCLJPWeNef_k-l4TQ92AB1Xm1k3xzdqSBIjmevnQ,1573
133
- machineconfig/scripts/python/ai/vscode_tasks.py,sha256=61wMMIhtNTUO8Zvl8IziEdyadzgi5H0h8ACwq3cw6Ho,1255
136
+ machineconfig/scripts/python/ai/vscode_tasks.py,sha256=OF8q4oKu53lJy8u36h3alHx3XmMhqHaaXZ-T5nr7b18,1481
134
137
  machineconfig/scripts/python/ai/command_runner/command_runner.sh,sha256=PRaQyeI3lDi3s8pm_0xZc71gRvUFO0bEt8o1g1rwwD4,761
135
138
  machineconfig/scripts/python/ai/command_runner/prompt.txt,sha256=-2NFBMf-8yk5pOe-3LBX3RTIhqIZHJS_m-v4k-j9sWI,779
136
139
  machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1,sha256=m_z4vzLrvi6bgTZumN8twcbIWb9i8ZHfVJPE8jPdxyc,5074
@@ -159,7 +162,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
159
162
  machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
160
163
  machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
161
164
  machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
162
- machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=EX4BuxWG8wdAdwILgwfxwI6VMZpjfWxArSXJgwQfsNE,6932
165
+ machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=fu03lfRAzf7NSyMdbKFfA-eqNWtUeyZAF02QAiOxEY8,6932
163
166
  machineconfig/scripts/python/helpers_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
167
  machineconfig/scripts/python/helpers_cloud/cloud_copy.py,sha256=OV1w3ajFVFs6FJytjIPOntYB_aW2ywGohKi73V4Dm2Y,8691
165
168
  machineconfig/scripts/python/helpers_cloud/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAsPT-Xl3RG9-yBed71a2tu9Pig,4914
@@ -175,15 +178,15 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
175
178
  machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
176
179
  machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
177
180
  machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
- machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=9nyOc-twOdyvnK1imdmpMI2DMHCPQIJAFtAwoksB45I,7218
181
+ machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=Dt1ePdB8oIz2cBZNKdzhWqEa8Fe9C5gLrh55qoYZmMY,7218
179
182
  machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=fluxRtD6hlbh131_RmeKr2Dy8tZpeC4H9-wp2sYt0dM,2486
180
183
  machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
181
- machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=B5Xa9pV5MdC4vPo3EmKaHvNMlThsY3c5F92YPE5j3rI,4176
184
+ machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=edeZPhQrm-hvOx80TPt9GNZXlXq9kkTaRSZSpNdku8w,6441
182
185
  machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
183
- machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=yq0nS7ukWDDCAzvuI-Znf87n2fU9tsHnsG0NDHY_MN8,6225
186
+ machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=-XLkpJHc9s-Hi9ZiLPzCIV1gdeQwsbOIlpchxJNV4Gs,6225
184
187
  machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=q9pFJ6AxPuygMr3onMNOKEuuQHbVE_6Qoyo7xRT5FX0,4196
185
188
  machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
186
- machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=KGIU1uTWC4g3kvBBkGrM-TtmcR8V1jTxVMGKXDSLnLA,10183
189
+ machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=P_PoJnY8ltCmhCarh74dxF2cm5cRBeyU95xPrRzJANU,10182
187
190
  machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Dn8luB6QJzxKiiFSC-NMqiYddWZoca3A8eOjMYZDzTc,5598
188
191
  machineconfig/scripts/python/helpers_devops/devops_status.py,sha256=PJVPhfhXq8der6Xd-_fjZfnizfM-RGfJApkRGhGBmNo,20525
189
192
  machineconfig/scripts/python/helpers_devops/devops_update_repos.py,sha256=kSln8_-Wn7Qu0NaKdt-QTN_bBVyTIAWHH8xVYKK-vCM,10133
@@ -197,7 +200,7 @@ machineconfig/scripts/python/helpers_fire/fire_agents_help_launch.py,sha256=GBhi
197
200
  machineconfig/scripts/python/helpers_fire/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
198
201
  machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py,sha256=umX-Na6W_8kGZX7ccElnvGP8yxJ8prGBiG3-dO9vXJ0,1304
199
202
  machineconfig/scripts/python/helpers_fire/fire_agents_load_balancer.py,sha256=mpqx3uaQdBXYieuvhdK-qsvLepf9oIMo3pwPj9mSEDI,1079
200
- machineconfig/scripts/python/helpers_fire/helpers4.py,sha256=iKR5vVJygaDIpFXhcdma9jOpyxKtUhmqcmalFxJmY0w,4749
203
+ machineconfig/scripts/python/helpers_fire/helpers4.py,sha256=VCrnv5n42SbDXKDJ8VNu_bA0UruTLWXQBK9SxhflzTY,5477
201
204
  machineconfig/scripts/python/helpers_fire/prompt.txt,sha256=Ni6r-Dh0Ez2XwfOZl3MOMDhfn6BJ2z4IdK3wFvA3c_o,116
202
205
  machineconfig/scripts/python/helpers_fire/template.ps1,sha256=9F7h9NMIJisunMIii2wETpgonQmiGLHLHfWg9k_QWKo,859
203
206
  machineconfig/scripts/python/helpers_fire/template.sh,sha256=rOND8s0-MuymFMn6lUspa0SkDikQkKlnJRl2Kyo57Ho,837
@@ -222,7 +225,7 @@ machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wd
222
225
  machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
223
226
  machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
224
227
  machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
225
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=rB9qr8cqg4iMy94ty_Ev8Mc2FsKLBr0ZwJno-MsgZAA,10450
228
+ machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=ZiQgOHuc0GYGSmIOB833W-5C4Plt75FpgeYcRipraak,10450
226
229
  machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
227
230
  machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=vSDtrF4829jziwp6WZmGt9G8MJ9jY4hfXqtf0vhkYSE,607
228
231
  machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
@@ -238,7 +241,7 @@ machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdC
238
241
  machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
239
242
  machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=CkIl85hZLtG9k7yXLSzqi88YrilHV4hIUWHAPBwxWjw,8922
240
243
  machineconfig/scripts/python/nw/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
241
- machineconfig/scripts/python/nw/mount_nfs,sha256=MOBehvwbM5G-6Z454lFWcxajUmnppkAwd-UCcL0gYJ8,1855
244
+ machineconfig/scripts/python/nw/mount_nfs,sha256=YcDHqe9fEnOk01qEd4ItnlHZr2GQce-e-o7V3HHK-pI,1855
242
245
  machineconfig/scripts/python/nw/mount_nfs.py,sha256=lOMDY4RS7tx8gsCazVR5tNNwFbaRyO2PJlnwBCDQgCM,3573
243
246
  machineconfig/scripts/python/nw/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
244
247
  machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
@@ -247,17 +250,17 @@ machineconfig/scripts/python/nw/mount_ssh.py,sha256=qt0P4T4pheszexBxaDeLVrGdLIVR
247
250
  machineconfig/scripts/python/nw/onetimeshare.py,sha256=xRd8by6qUm-od2Umty2MYsXyJwzXw-CBTd7VellNaKY,2498
248
251
  machineconfig/scripts/python/nw/ssh_debug_linux.py,sha256=VSFhyzYQeLIoSwsUFJFW1Wc89DinrpZ_YxyYB2Ndy-4,30966
249
252
  machineconfig/scripts/python/nw/ssh_debug_windows.py,sha256=2prJs3PMsoAUu5LlZhHIKGVgqj7h6OviGEjAMJLJ7LI,29986
250
- machineconfig/scripts/python/nw/wifi_conn.py,sha256=4GdLhgma9GRmZ6OFg3oxOX-qY3sr45njPckozlpM_A0,15566
253
+ machineconfig/scripts/python/nw/wifi_conn.py,sha256=wnSs16kHwhELS7wX3UtRVXgR_5En-x4nD27_JpJIflw,13590
251
254
  machineconfig/scripts/python/nw/wsl_windows_transfer.py,sha256=jHJyFTuks_Kw4cgE8xuGDVjO_71JgICrsV9ZQt53meY,3524
252
255
  machineconfig/scripts/windows/fzfb.ps1,sha256=Bmngm2aY8hnPa3iKAOK6EPDYdKzGLUc81wYOnJhNoqg,149
253
256
  machineconfig/scripts/windows/fzfg.ps1,sha256=CHJbMrMuZePd4dxwIwz3g4XWAEmWmckuX-Nrx2xgRkg,27
254
257
  machineconfig/scripts/windows/fzfrga.bat,sha256=rU_KBMO6ii2EZ0akMnmDk9vpuhKSUZqkV0o8a8ywXcM,488
255
258
  machineconfig/scripts/windows/mcfgs.ps1,sha256=uuK5pEz38D3_SOjfhbvkDT8Kt4I62YhNzkExlW8VSps,577
256
- machineconfig/scripts/windows/term.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
259
+ machineconfig/scripts/windows/term.ps1,sha256=nme_OWis84qN-zI2c0rdysNcDIdoaEKajXZhP2QioQs,1742
257
260
  machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
258
261
  machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
259
262
  machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
260
- machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=ldmxaQcjVhrwy9YlY57sQSOtEzXkJw5FIOTRneZzSWU,322
263
+ machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=fK9_qWP_-xCfvM1eexaOgWp32HYZGq257_s448V5I44,322
261
264
  machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
262
265
  machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
263
266
  machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
@@ -374,7 +377,7 @@ machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE3
374
377
  machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
375
378
  machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
376
379
  machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
377
- machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=90vbyrktpMWaQw1NzqK9yzgDvKGUlU9nNbOAaYoMYsw,488
380
+ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=s1HGck3ZSTz2OhybyA42K-s2mEOjrJouElzmwOwuS9Y,488
378
381
  machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
379
382
  machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
380
383
  machineconfig/setup_mac/uv.sh,sha256=CSN8oCBKS-LK1vJJqYOhAMcrouTf4Q_F3cpplc_ddMA,1157
@@ -388,25 +391,25 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
388
391
  machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
389
392
  machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
390
393
  machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
391
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=iOpIYEwkXw5RuxT6-vBfWe-KVklKuADn2jP3DkWV3QU,616
394
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=Jq0jg6azu1wPPybq2gsxpQoOKlcMdSxXmELKgGCyBsU,616
392
395
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
393
396
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
394
397
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
395
398
  machineconfig/utils/accessories.py,sha256=Rs8R0GUb2Ub6YimkgXHnI02CShS5BKlrZdCigVxfPlk,4339
396
- machineconfig/utils/code.py,sha256=QpSBeeX1wbZ3UUaOz7BTVNtp5VqHpSU0FxkfNy_NIY8,5650
397
- machineconfig/utils/installer.py,sha256=UzI_DtTcKbgvkAkWkNLAPUtx-RVqITHCpvZyLiCpD9g,10377
399
+ machineconfig/utils/code.py,sha256=yEsBswdx94hZedsb_Gy0-H6_CeivHzOiv8-aK9tGIgg,5823
400
+ machineconfig/utils/installer.py,sha256=m92KwGeep0FrT8V42xJDQdcT74HK9RB-xza0Ii50nHA,10376
398
401
  machineconfig/utils/io.py,sha256=4dSieoqZO8Vvi4vW8lLoITDHBvmFp4dtl3kyeZHQ6Co,2528
399
402
  machineconfig/utils/links.py,sha256=KM6vIn3hag9FYEzLSHP5MAM9tU_RStw2mCq2_OvmmZA,23672
400
403
  machineconfig/utils/meta.py,sha256=RXbq3_DSFAFNAEt9GjWqP2TjCWUs0v7gAkKCgRpdwO8,9853
401
404
  machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
402
405
  machineconfig/utils/options.py,sha256=VWYx3EKJxIp-CJ8gDGYdjclKSc1tMUhyrC8v3seeneo,7447
403
406
  machineconfig/utils/path_extended.py,sha256=WyJwoHnXdvSQQJ-yrxTX78FpqYmgVeKDYpNEB9UsRck,53223
404
- machineconfig/utils/path_helper.py,sha256=0e3Xh3BAEv27oqcezNeVLHJllGmLEgLH4T1l90m-650,8014
407
+ machineconfig/utils/path_helper.py,sha256=Yxj8qlf-g_254-dfvRx5rlisM2WA0P-BhZBEbmReeys,8095
405
408
  machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,10957
406
409
  machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
407
- machineconfig/utils/scheduling.py,sha256=6x5zLA7sY5gohrEtN6zGrXIqNFasMoyBfwLcOjrjiME,11109
410
+ machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
408
411
  machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
409
- machineconfig/utils/ssh.py,sha256=-w9b6kbJfCEJjTepS9sfDJ8MToY_m1OeU2-ZxDXSR_A,39009
412
+ machineconfig/utils/ssh.py,sha256=QeS0SHvtJzGtXTbC_7Qns--QjQlfk0uIDT--vOKA9OA,39008
410
413
  machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
411
414
  machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
412
415
  machineconfig/utils/upgrade_packages.py,sha256=TCohwiwc0btSsInOloxDVuk5i88yc1vBK8RZcoMWoUw,3425
@@ -435,8 +438,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
435
438
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
436
439
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
437
440
  machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
438
- machineconfig-6.84.dist-info/METADATA,sha256=72Q2T1CT1wbWoqzrp9P4nHz42XroVZ3W7TSsyxnrYj8,2928
439
- machineconfig-6.84.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
440
- machineconfig-6.84.dist-info/entry_points.txt,sha256=uf_ZPJa02_y3Fw5Z7m22cq7PwxhYd1QV2FfPNZTl_dQ,519
441
- machineconfig-6.84.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
442
- machineconfig-6.84.dist-info/RECORD,,
441
+ machineconfig-6.85.dist-info/METADATA,sha256=1GTj08560el2P_sSeVjfViYjV0ZJoVX5E--oKQiFWRQ,2928
442
+ machineconfig-6.85.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
443
+ machineconfig-6.85.dist-info/entry_points.txt,sha256=uf_ZPJa02_y3Fw5Z7m22cq7PwxhYd1QV2FfPNZTl_dQ,519
444
+ machineconfig-6.85.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
445
+ machineconfig-6.85.dist-info/RECORD,,
@@ -1,122 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Installs Cloudflare WARP (warp-cli) on supported Ubuntu / Debian systems.
3
- # Usage: sudo ./warp-cli.sh [--allow-unsupported] [--force-reinstall]
4
-
5
- set -euo pipefail
6
-
7
- ALLOW_UNSUPPORTED=0
8
- FORCE_REINSTALL=0
9
-
10
- for arg in "$@"; do
11
- case "$arg" in
12
- --allow-unsupported) ALLOW_UNSUPPORTED=1 ;;
13
- --force-reinstall) FORCE_REINSTALL=1 ;;
14
- -h|--help)
15
- printf "Usage: %s [--allow-unsupported] [--force-reinstall]\n" "$0"
16
- exit 0
17
- ;;
18
- *)
19
- printf "Unknown argument: %s\n" "$arg" >&2
20
- exit 2
21
- ;;
22
- esac
23
- done
24
-
25
- require_root() {
26
- if [ "${EUID}" -ne 0 ]; then
27
- printf "Please run as root (use sudo).\n" >&2
28
- exit 1
29
- fi
30
- }
31
-
32
- have_cmd() { command -v "$1" >/dev/null 2>&1; }
33
-
34
- detect_os() {
35
- if have_cmd lsb_release; then
36
- DIST_ID=$(lsb_release -si 2>/dev/null | tr '[:upper:]' '[:lower:]')
37
- CODENAME=$(lsb_release -sc 2>/dev/null | tr '[:upper:]' '[:lower:]')
38
- elif [ -f /etc/os-release ]; then
39
- # shellcheck disable=SC1091
40
- . /etc/os-release
41
- DIST_ID=$(printf "%s" "${ID:-}" | tr '[:upper:]' '[:lower:]')
42
- CODENAME=$(printf "%s" "${VERSION_CODENAME:-}" | tr '[:upper:]' '[:lower:]')
43
- else
44
- printf "Cannot detect distribution. Install lsb_release or provide /etc/os-release.\n" >&2
45
- exit 1
46
- fi
47
- }
48
-
49
- is_supported() {
50
- case "$DIST_ID" in
51
- ubuntu)
52
- # Supported: noble jammy focal (older: bionic xenial)
53
- case "$CODENAME" in
54
- noble|jammy|focal|bionic|xenial) return 0 ;; esac ;;
55
- debian)
56
- # Supported: bookworm bullseye buster (older: stretch)
57
- case "$CODENAME" in
58
- bookworm|bullseye|buster|stretch) return 0 ;; esac ;;
59
- esac
60
- return 1
61
- }
62
-
63
- add_key() {
64
- local key_path="/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg"
65
- if [ -s "$key_path" ]; then
66
- return 0
67
- fi
68
- curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output "$key_path"
69
- }
70
-
71
- add_repo() {
72
- local list_file="/etc/apt/sources.list.d/cloudflare-client.list"
73
- if grep -q "pkg.cloudflareclient.com" "$list_file" 2>/dev/null; then
74
- return 0
75
- fi
76
- echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ ${CODENAME} main" > "$list_file"
77
- }
78
-
79
- need_update=0
80
- install_package() {
81
- if dpkg -s cloudflare-warp >/dev/null 2>&1; then
82
- if [ "$FORCE_REINSTALL" -eq 1 ]; then
83
- apt-get install --reinstall -y cloudflare-warp
84
- else
85
- printf "cloudflare-warp already installed. Use --force-reinstall to reinstall.\n"
86
- fi
87
- else
88
- apt-get install -y cloudflare-warp
89
- fi
90
- }
91
-
92
- main() {
93
- require_root
94
- if ! have_cmd apt-get; then
95
- printf "apt-get not found. This script supports only Debian/Ubuntu.\n" >&2
96
- exit 1
97
- fi
98
- detect_os
99
- if ! is_supported; then
100
- if [ "$ALLOW_UNSUPPORTED" -ne 1 ]; then
101
- printf "Distribution %s (%s) not in supported list. Use --allow-unsupported to proceed.\n" "$DIST_ID" "$CODENAME" >&2
102
- exit 3
103
- else
104
- printf "Proceeding on unsupported distribution %s (%s).\n" "$DIST_ID" "$CODENAME"
105
- fi
106
- fi
107
- pre_key_checksum=$( [ -f /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg ] && sha256sum /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg | cut -d' ' -f1 || true )
108
- add_key
109
- post_key_checksum=$(sha256sum /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg | cut -d' ' -f1)
110
- if [ "$pre_key_checksum" != "$post_key_checksum" ]; then need_update=1; fi
111
- repo_before=$(grep -R "pkg.cloudflareclient.com" /etc/apt/sources.list.d 2>/dev/null || true)
112
- add_repo
113
- repo_after=$(grep -R "pkg.cloudflareclient.com" /etc/apt/sources.list.d 2>/dev/null || true)
114
- if [ "$repo_before" != "$repo_after" ]; then need_update=1; fi
115
- if [ "$need_update" -eq 1 ]; then
116
- apt-get update
117
- fi
118
- install_package
119
- printf "Done. Basic usage: 'warp-cli register' then 'warp-cli connect'. For account: 'warp-cli set-mode warp'.\n"
120
- }
121
-
122
- main "$@"