machineconfig 5.29__py3-none-any.whl → 5.31__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 (50) hide show
  1. machineconfig/scripts/python/croshell_helpers/__init__.py +0 -0
  2. machineconfig/scripts/python/devops.py +13 -122
  3. machineconfig/scripts/python/devops_helpers/choose_pwsh_theme.ps1 +44 -0
  4. machineconfig/scripts/python/devops_helpers/cli_config.py +43 -0
  5. machineconfig/scripts/python/devops_helpers/cli_data.py +18 -0
  6. machineconfig/scripts/python/devops_helpers/cli_nw.py +39 -0
  7. machineconfig/scripts/python/{repos.py → devops_helpers/cli_repos.py} +43 -7
  8. machineconfig/scripts/python/devops_helpers/cli_self.py +41 -0
  9. machineconfig/scripts/python/devops_helpers/devops_status.py +118 -55
  10. machineconfig/scripts/python/devops_navigator.py +806 -0
  11. machineconfig/scripts/python/helpers/repo_sync_helpers.py +1 -1
  12. machineconfig/scripts/python/helpers_repos/__init__.py +0 -0
  13. machineconfig/scripts/python/helpers_repos/grource.py +2 -3
  14. machineconfig/scripts/python/{secure_repo.py → helpers_repos/secure_repo.py} +1 -1
  15. machineconfig/scripts/python/interactive.py +2 -2
  16. machineconfig/scripts/python/nw/__init__.py +0 -0
  17. machineconfig/scripts/python/sessions.py +1 -1
  18. machineconfig/scripts/python/sessions_helpers/__init__.py +0 -0
  19. machineconfig/settings/linters/.ruff.toml +1 -1
  20. machineconfig/settings/shells/pwsh/init.ps1 +1 -1
  21. machineconfig/setup_windows/uv.ps1 +1 -1
  22. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +2 -3
  23. machineconfig/utils/code.py +13 -3
  24. machineconfig/utils/installer_utils/installer_class.py +3 -5
  25. {machineconfig-5.29.dist-info → machineconfig-5.31.dist-info}/METADATA +2 -1
  26. {machineconfig-5.29.dist-info → machineconfig-5.31.dist-info}/RECORD +45 -40
  27. {machineconfig-5.29.dist-info → machineconfig-5.31.dist-info}/entry_points.txt +1 -0
  28. machineconfig/scripts/python/gh_models.py +0 -104
  29. machineconfig/scripts/python/snapshot.py +0 -25
  30. machineconfig/scripts/python/start_terminals.py +0 -121
  31. machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
  32. machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
  33. /machineconfig/scripts/python/{pomodoro.py → croshell_helpers/pomodoro.py} +0 -0
  34. /machineconfig/scripts/python/{scheduler.py → croshell_helpers/scheduler.py} +0 -0
  35. /machineconfig/scripts/python/{start_slidev.py → croshell_helpers/start_slidev.py} +0 -0
  36. /machineconfig/scripts/python/{viewer.py → croshell_helpers/viewer.py} +0 -0
  37. /machineconfig/scripts/python/{viewer_template.py → croshell_helpers/viewer_template.py} +0 -0
  38. /machineconfig/scripts/python/{choose_wezterm_theme.py → devops_helpers/choose_wezterm_theme.py} +0 -0
  39. /machineconfig/scripts/python/{dotfile.py → devops_helpers/cli_config_dotfile.py} +0 -0
  40. /machineconfig/scripts/python/{share_terminal.py → devops_helpers/cli_terminal.py} +0 -0
  41. /machineconfig/scripts/python/{cloud_repo_sync.py → helpers_repos/cloud_repo_sync.py} +0 -0
  42. /machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +0 -0
  43. /machineconfig/scripts/python/{mount_nw_drive.py → nw/mount_nw_drive.py} +0 -0
  44. /machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +0 -0
  45. /machineconfig/scripts/python/{onetimeshare.py → nw/onetimeshare.py} +0 -0
  46. /machineconfig/scripts/python/{wifi_conn.py → nw/wifi_conn.py} +0 -0
  47. /machineconfig/scripts/python/{wsl_windows_transfer.py → nw/wsl_windows_transfer.py} +0 -0
  48. /machineconfig/scripts/python/{sessions_multiprocess.py → sessions_helpers/sessions_multiprocess.py} +0 -0
  49. {machineconfig-5.29.dist-info → machineconfig-5.31.dist-info}/WHEEL +0 -0
  50. {machineconfig-5.29.dist-info → machineconfig-5.31.dist-info}/top_level.txt +0 -0
@@ -80,7 +80,7 @@ def check_dotfiles_version_is_beyond(commit_dtm: str, update: bool) -> bool:
80
80
  if res is False and update is True:
81
81
  console = Console()
82
82
  console.print(Panel(f"🔄 UPDATE REQUIRED | Updating dotfiles because {dtm} < {datetime.fromisoformat(commit_dtm)}", border_style="bold blue", expand=False))
83
- from machineconfig.scripts.python.cloud_repo_sync import main
83
+ from machineconfig.scripts.python.helpers_repos.cloud_repo_sync import main
84
84
 
85
85
  main(cloud=None, repo=dotfiles_path)
86
86
  return res
File without changes
@@ -175,10 +175,9 @@ def visualize(
175
175
  gource_cmd: str = str(gource_exe)
176
176
  else:
177
177
  print("❌ Installation failed, falling back to system gource")
178
- gource_cmd = "gource"
178
+ raise typer.Exit(1)
179
179
  else:
180
- gource_cmd = "gource"
181
- print(f"⚠️ Portable gource not found at {gource_exe}, using system gource")
180
+ raise FileNotFoundError(f"Gource executable not found at {gource_exe}. Please install gource using your package manager.")
182
181
  else:
183
182
  gource_cmd = str(gource_exe)
184
183
 
@@ -11,5 +11,5 @@ def main(
11
11
  on_conflict: Literal["ask", "pushLocalMerge", "overwriteLocal", "InspectRepos", "RemoveLocalRclone"] = typer.Option("ask", "--on-conflict", "-oc", help="Action to take on merge conflict. Default is 'ask'."),
12
12
  pwd: Optional[str] = typer.Option(None, "--password", help="Password for encryption/decryption of the remote repository."),
13
13
  ):
14
- from machineconfig.scripts.python.cloud_repo_sync import main as program_content
14
+ from machineconfig.scripts.python.helpers_repos.cloud_repo_sync import main as program_content
15
15
  program_content(cloud=cloud, repo=repo, message=message, on_conflict=on_conflict, pwd=pwd)
@@ -157,8 +157,8 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
157
157
 
158
158
  if "retrieve_repositories" in selected_options:
159
159
  console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
160
- from machineconfig.scripts.python import repos
161
- repos.clone(directory=str(Path.home() / "code"), cloud="odg1")
160
+ from machineconfig.scripts.python.devops_helpers import cli_repos
161
+ cli_repos.clone(directory=str(Path.home() / "code"), cloud="odg1")
162
162
 
163
163
  if "retrieve_data" in selected_options:
164
164
  console.print(Panel("💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]", border_style="bright_cyan"))
File without changes
@@ -2,7 +2,7 @@
2
2
  from pathlib import Path
3
3
  from typing import Optional, Literal
4
4
  import typer
5
- from machineconfig.scripts.python.sessions_multiprocess import create_from_function
5
+ from machineconfig.scripts.python.sessions_helpers.sessions_multiprocess import create_from_function
6
6
 
7
7
  def balance_load(layout_path: Path = typer.Argument(..., help="Path to the layout.json file"),
8
8
  max_thresh: int = typer.Option(..., help="Maximum tabs per layout"),
@@ -30,7 +30,7 @@ exclude = [
30
30
  ]
31
31
 
32
32
  # Same as Black.
33
- line-length = 350
33
+ line-length = 150
34
34
  indent-width = 4
35
35
 
36
36
  # Assume Python 3.13
@@ -69,7 +69,7 @@ catch {
69
69
  # }
70
70
 
71
71
 
72
- oh-my-posh --init --shell pwsh --config $env:USERPROFILE/AppData/Local/Programs/oh-my-posh/themes/atomicBit.omp.json | Invoke-Expression
72
+ # oh-my-posh --init --shell pwsh --config $env:USERPROFILE/AppData/Local/Programs/oh-my-posh/themes/atomicBit.omp.json | Invoke-Expression
73
73
 
74
74
  # try {
75
75
  # Invoke-Expression (&starship init powershell)
@@ -2,7 +2,7 @@
2
2
 
3
3
  if (-not (Test-Path -Path "$HOME\.local\bin\uv.exe")) {
4
4
  Write-Output "uv binary not found, installing..."
5
- irm https://astral.sh/uv/install.ps1 | iex
5
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
6
6
  } else {
7
7
  Write-Output "uv binary found, updating..."
8
8
  & "$HOME\.local\bin\uv.exe" self update
@@ -1,5 +1,4 @@
1
1
 
2
2
 
3
- Write-Host "ℹ️ If you have execution policy issues, run: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser"
4
- iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/ve.ps1").Content
5
- uv run --python 3.13 --with machineconfig devops self interactive
3
+ iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
4
+ & "$HOME\.local\bin\uv.exe" run --python 3.13 --with machineconfig devops self interactive
@@ -116,12 +116,22 @@ def run_shell_script(script: str, display_script: bool = True):
116
116
 
117
117
  if platform.system() == "Windows":
118
118
  import subprocess
119
- subprocess.run(f'powershell -ExecutionPolicy Bypass -File "{temp_script_path}"', check=True, shell=True)
119
+ proc = subprocess.run(f'powershell -ExecutionPolicy Bypass -File "{temp_script_path}"', check=True, shell=True)
120
120
  elif platform.system() == "Linux" or platform.system() == "Darwin":
121
121
  import subprocess
122
- subprocess.run(f"bash {str(temp_script_path)}", check=True, shell=True)
123
-
122
+ proc = subprocess.run(f"bash {str(temp_script_path)}", check=True, shell=True)
123
+ else:
124
+ raise NotImplementedError(f"Platform {platform.system()} not supported.")
125
+ # console.print(f"✅ [green]Script executed successfully:[/green] [blue]{temp_script_path}[/blue]")
126
+ if proc.returncode != 0:
127
+ console.print(f"❌ [red]Script execution failed with return code {proc.returncode}:[/red] [blue]{temp_script_path}[/blue]")
128
+ elif proc.returncode == 0:
129
+ console.print(f"✅ [green]Script executed successfully:[/green] [blue]{temp_script_path}[/blue]")
130
+ else:
131
+ console.print(f"⚠️ [yellow]Script executed with warnings (return code {proc.returncode}):[/yellow] [blue]{temp_script_path}[/blue]")
124
132
  temp_script_path.unlink(missing_ok=True)
133
+ console.print(f"🗑️ [blue]Temporary script deleted:[/blue] [green]{temp_script_path}[/green]")
134
+
125
135
 
126
136
  # def run_command(command: str, description: str) -> bool:
127
137
  # """Execute a shell command and return success status."""
@@ -1,15 +1,13 @@
1
1
  from machineconfig.utils.path_extended import PathExtended
2
2
  from machineconfig.utils.installer_utils.installer_abc import find_move_delete_linux, find_move_delete_windows
3
- from machineconfig.utils.source_of_truth import INSTALL_TMP_DIR, INSTALL_VERSION_ROOT, LIBRARY_ROOT
3
+ from machineconfig.utils.source_of_truth import INSTALL_TMP_DIR, INSTALL_VERSION_ROOT
4
4
  from machineconfig.utils.installer_utils.installer_abc import check_tool_exists
5
- from machineconfig.utils.io import read_json
6
- from machineconfig.utils.schemas.installer.installer_types import InstallerData, InstallerDataFiles, get_os_name, get_normalized_arch
5
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData, get_os_name, get_normalized_arch
7
6
 
8
7
  import platform
9
8
  import subprocess
10
9
  import json
11
10
  from typing import Optional, Any
12
- from pathlib import Path
13
11
  from urllib.parse import urlparse
14
12
 
15
13
 
@@ -88,7 +86,7 @@ class Installer:
88
86
  if result.stderr:
89
87
  print(f"STDERR: {result.stderr}")
90
88
  print(f"Return code: {result.returncode}")
91
- print(f"✅ Package manager installation completed")
89
+ print("✅ Package manager installation completed")
92
90
  elif installer_arch_os.endswith((".sh", ".py", ".ps1")):
93
91
  # search for the script, see which path ends with the script name
94
92
  import machineconfig.jobs.installer as module
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 5.29
3
+ Version: 5.31
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -27,6 +27,7 @@ Requires-Dist: pyjson5>=1.6.9
27
27
  Requires-Dist: typer-slim>=0.19.2
28
28
  Requires-Dist: questionary>=2.1.1
29
29
  Requires-Dist: typer>=0.19.2
30
+ Requires-Dist: textual>=6.1.0
30
31
  Provides-Extra: windows
31
32
  Requires-Dist: pywin32; extra == "windows"
32
33
  Provides-Extra: docs
@@ -139,36 +139,16 @@ machineconfig/scripts/linux/wifi_conn,sha256=X4TH3OvcVZfOveSbF9WW8uXb4U_G7ZSnCER
139
139
  machineconfig/scripts/linux/z_ls,sha256=ATZtu0ccN3AKvAOxkwLq1xgQjJ3en5byEWJ3Q8afnNg,3340
140
140
  machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
141
  machineconfig/scripts/python/agents.py,sha256=OgxGnsmhkPU3n-GsNUJeECWQ01_RP3OHppaSglc3Yf8,9931
142
- machineconfig/scripts/python/choose_wezterm_theme.py,sha256=pRXAGe2IpysYshsaF8CKEwHI8EGPtLcM8PtiAqM7vmM,3425
143
142
  machineconfig/scripts/python/cloud_copy.py,sha256=fcWbSo2nGiubtMYjGci8s5tVjZ9D-u8mteCawZmbw3I,8379
144
143
  machineconfig/scripts/python/cloud_mount.py,sha256=GwcXbd5ohoHGESfX5edtCEl2-umDDxH_AZapmFSzc9E,6740
145
- machineconfig/scripts/python/cloud_repo_sync.py,sha256=7CAJDZold4vg3nDLVC_1HAiDa9mgwHH6GbTSOnc5oMs,9064
146
144
  machineconfig/scripts/python/cloud_sync.py,sha256=RWGpAfJ9fnN18yNBSgN44dzA38Hmd4879JL5r2pcyrM,3514
147
145
  machineconfig/scripts/python/croshell.py,sha256=LgmwB17EVgNgRkXgwLOZPQWrHqSYDo7Kd-d6vkqA3PY,6459
148
- machineconfig/scripts/python/devops.py,sha256=x0hXYfCM2RR503svUbX7Iw1BRSB6VErbAkVO4Wt2NoA,7396
149
- machineconfig/scripts/python/dotfile.py,sha256=9W9i8Qbs6i2NfTq0knywB3StvE_sHaZYZ0RslTyoVz8,2734
146
+ machineconfig/scripts/python/devops.py,sha256=3mG-4RlF9vzcfXO7ISsxwRICQpJRR8JMqxtxKLE70fs,1822
147
+ machineconfig/scripts/python/devops_navigator.py,sha256=iR6HAYt0TA7efV_g6Lr9gPczN6mqvS0V5hShD1x-9R8,29537
150
148
  machineconfig/scripts/python/fire_jobs.py,sha256=iHcuADhRFlN2wgr7zUV1RAacfUPnnvvOGbEDzFM61gs,13476
151
149
  machineconfig/scripts/python/ftpx.py,sha256=QfQTp-6jQP6yxfbLc5sKxiMtTgAgc8sjN7d17_uLiZc,9400
152
- machineconfig/scripts/python/gh_models.py,sha256=3BLfW25mBRiPO5VKtVm-nMlKLv-PaZDw7mObajq6F6M,5538
153
- machineconfig/scripts/python/interactive.py,sha256=ApUfnpSIQRm8pRvIKSmoUBlPPJCxr5175ghdzHEEzaw,11750
154
- machineconfig/scripts/python/mount_nfs.py,sha256=aECrL64j9g-9rF49sVJAjGmzaoGgcMnl3g9v17kQF4c,3239
155
- machineconfig/scripts/python/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
156
- machineconfig/scripts/python/mount_ssh.py,sha256=k2fKq3f5dKq_7anrFOlqvJoI_3U4EWNHLRZ1o3Lsy6M,2268
157
- machineconfig/scripts/python/onetimeshare.py,sha256=xRd8by6qUm-od2Umty2MYsXyJwzXw-CBTd7VellNaKY,2498
158
- machineconfig/scripts/python/pomodoro.py,sha256=SPkfeoZGv8rylGiOyzQ7UK3aXZ3G2FIOuGkSuBUggOI,2019
159
- machineconfig/scripts/python/repos.py,sha256=EytbeRBJf692KAtjrYdZKRCPrseNyIkH_kVe22WI-As,8218
160
- machineconfig/scripts/python/scheduler.py,sha256=rKhssuxkD697EY6qaV6CSdNhxpAQLDWO4fE8GMCQ9FA,3061
161
- machineconfig/scripts/python/secure_repo.py,sha256=xwV3mHg918EmVjUH-gJuZFnzIoBhOnJspx4_ZxNhurk,979
162
- machineconfig/scripts/python/sessions.py,sha256=oCNGhhAYxr5DFyGCkL7jup3hPb4qCdBome2Qr9Evwao,8694
163
- machineconfig/scripts/python/sessions_multiprocess.py,sha256=jtFci9vugJ8sMiw3qupUtANICy2RSorT2W8sdppkRN4,2914
164
- machineconfig/scripts/python/share_terminal.py,sha256=-SNCDrQHBDUZw2cNNrEw3K3owzmZASBjd5deBKB49YY,5358
165
- machineconfig/scripts/python/snapshot.py,sha256=aDvKeoniZaeTSNv9zWBUajaj2yagAxVdfuvO1_tgq5Y,1026
166
- machineconfig/scripts/python/start_slidev.py,sha256=FAJ1_WkAQ7KcbRZ3cSN_72NDgV_flRrwxmXv1imyulI,4897
167
- machineconfig/scripts/python/start_terminals.py,sha256=DRWbMZumhPmL0DvvsCsbRNFL5AVQn1SgaziafTio3YQ,6149
168
- machineconfig/scripts/python/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
169
- machineconfig/scripts/python/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
170
- machineconfig/scripts/python/wifi_conn.py,sha256=4GdLhgma9GRmZ6OFg3oxOX-qY3sr45njPckozlpM_A0,15566
171
- machineconfig/scripts/python/wsl_windows_transfer.py,sha256=534zlYe3Xsr0mqegAnZrVru8Fif-9jZyQK38Q90AtDo,3389
150
+ machineconfig/scripts/python/interactive.py,sha256=Rd406f3WpdTzDv7-dY1xbB90YHBk-EUBpsViX3QDGZM,11773
151
+ machineconfig/scripts/python/sessions.py,sha256=03WhAVvOA5ZuvXegA8OZ8UATnriCmIoYB8iB9D3GTYY,8711
172
152
  machineconfig/scripts/python/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
153
  machineconfig/scripts/python/ai/generate_files.py,sha256=Vfjgd0skJu-WTgqUxmOVFzaNMfSFBaFmY5oGGVY7MZY,2860
174
154
  machineconfig/scripts/python/ai/initai.py,sha256=FJriMm1-x44xx6yEnqgI-F5lfRw44xleOluv4TcRs0I,2237
@@ -196,18 +176,33 @@ machineconfig/scripts/python/ai/solutions/gemini/settings.json,sha256=tFdtqZkyti
196
176
  machineconfig/scripts/python/ai/solutions/kilocode/privacy.md,sha256=oKOXnfFOdUuMlKwVf5MqeqCc24hZcjKE_e1MEXpijJI,117
197
177
  machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1dNzkUCS_vCX_fy2TisRtfg8DXH-D4N1iUVU,99
198
178
  machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
179
+ machineconfig/scripts/python/croshell_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
+ machineconfig/scripts/python/croshell_helpers/pomodoro.py,sha256=SPkfeoZGv8rylGiOyzQ7UK3aXZ3G2FIOuGkSuBUggOI,2019
181
+ machineconfig/scripts/python/croshell_helpers/scheduler.py,sha256=rKhssuxkD697EY6qaV6CSdNhxpAQLDWO4fE8GMCQ9FA,3061
182
+ machineconfig/scripts/python/croshell_helpers/start_slidev.py,sha256=FAJ1_WkAQ7KcbRZ3cSN_72NDgV_flRrwxmXv1imyulI,4897
183
+ machineconfig/scripts/python/croshell_helpers/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
184
+ machineconfig/scripts/python/croshell_helpers/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
199
185
  machineconfig/scripts/python/devops_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
+ machineconfig/scripts/python/devops_helpers/choose_pwsh_theme.ps1,sha256=bl27f8XAeLrm6WggorGmPR5uhsNwj5ayWsxus4UrKI8,1843
187
+ machineconfig/scripts/python/devops_helpers/choose_wezterm_theme.py,sha256=pRXAGe2IpysYshsaF8CKEwHI8EGPtLcM8PtiAqM7vmM,3425
188
+ machineconfig/scripts/python/devops_helpers/cli_config.py,sha256=LObo-YBjpfCB0_0CYQlYBqTtApM1RUOE_H28gEcH7PY,2870
189
+ machineconfig/scripts/python/devops_helpers/cli_config_dotfile.py,sha256=9W9i8Qbs6i2NfTq0knywB3StvE_sHaZYZ0RslTyoVz8,2734
190
+ machineconfig/scripts/python/devops_helpers/cli_data.py,sha256=f_2espL92n6SoNb5sFVMvrK7LA29HzfrFAKhxKaud1M,510
191
+ machineconfig/scripts/python/devops_helpers/cli_nw.py,sha256=J3_ugdGrEhuL-4sEOTHrlZR4WYvQOYR9ALXNjxBWIlA,1397
192
+ machineconfig/scripts/python/devops_helpers/cli_repos.py,sha256=eFWyVxzy0YdutJpE2fdQu_Z1WCAumy6dTP4xstSTSg4,9712
193
+ machineconfig/scripts/python/devops_helpers/cli_self.py,sha256=XGWPZVZmwKaDOY_5IYj2l_Ke0ocjhfXP9NK5-nFwFSg,1467
194
+ machineconfig/scripts/python/devops_helpers/cli_terminal.py,sha256=-SNCDrQHBDUZw2cNNrEw3K3owzmZASBjd5deBKB49YY,5358
200
195
  machineconfig/scripts/python/devops_helpers/devops_add_identity.py,sha256=wvjNgqsLmqD2SxbNCW_usqfp0LI-TDvcJJKGOWt2oFw,3775
201
196
  machineconfig/scripts/python/devops_helpers/devops_add_ssh_key.py,sha256=BXB-9RvuSZO0YTbnM2azeABW2ngLW4SKhhAGAieMzfw,6873
202
197
  machineconfig/scripts/python/devops_helpers/devops_backup_retrieve.py,sha256=JLJHmi8JmZ_qVTeMW-qBEAYGt1fmfWXzZ7Gm-Q-GDcU,5585
203
- machineconfig/scripts/python/devops_helpers/devops_status.py,sha256=qSmDCNopKq8DLcx3u1sLhCIZtILP2ZzdGYZuA7fvrJ8,22487
198
+ machineconfig/scripts/python/devops_helpers/devops_status.py,sha256=C1akn6mGteBVV9CiQnUX6H32ehnCgMdCyNgojXVQeqA,23287
204
199
  machineconfig/scripts/python/devops_helpers/devops_update_repos.py,sha256=OarxDD532sA0Tk4Ek2I9J_dAV0MgiV9mUG4hQZBpF6Y,9407
205
200
  machineconfig/scripts/python/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
201
  machineconfig/scripts/python/helpers/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAsPT-Xl3RG9-yBed71a2tu9Pig,4914
207
202
  machineconfig/scripts/python/helpers/helpers2.py,sha256=2QeQ2aii6hVc4S-oi3SVTSyPxKPTDUWBD7GnkCEr7Qs,7304
208
203
  machineconfig/scripts/python/helpers/helpers4.py,sha256=iKR5vVJygaDIpFXhcdma9jOpyxKtUhmqcmalFxJmY0w,4749
209
204
  machineconfig/scripts/python/helpers/helpers5.py,sha256=dPBvA9Tcyx9TMgM6On49A1CueGMhBdRzikDnlJGf3J0,1123
210
- machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=smxpX_dXO6vptkOUsOa0C4ufk2-Xf1PW1ptCO3Pmv4o,3931
205
+ machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=Fp7C5iz6kYpul0zzu63NyQtozFQuuDrArHcxPAk1J38,3945
211
206
  machineconfig/scripts/python/helpers_fire/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
207
  machineconfig/scripts/python/helpers_fire/fire_agents_help_launch.py,sha256=wQb4RotkDgRrSB2pvJSVx_W4uLgtWNnm0f3CIjLp9SA,5500
213
208
  machineconfig/scripts/python/helpers_fire/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
@@ -226,7 +221,17 @@ machineconfig/scripts/python/helpers_fire_command/cloud_manager.py,sha256=YN0DYL
226
221
  machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py,sha256=UUrGB2N_pR7PxFKtKTJxIUiS58WjQX0U50y2ft8Ul4w,4334
227
222
  machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py,sha256=9zGuh_bMkQgfMS0nnFoa2oIWdmLAkSNtlEH4H-FprmM,5373
228
223
  machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
- machineconfig/scripts/python/helpers_repos/grource.py,sha256=qIe2L5U15cUw9rVfDz6fKUiC4PN6boZItcRhyoscBRc,14589
224
+ machineconfig/scripts/python/helpers_repos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
+ machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=7CAJDZold4vg3nDLVC_1HAiDa9mgwHH6GbTSOnc5oMs,9064
226
+ machineconfig/scripts/python/helpers_repos/grource.py,sha256=IywQ1NDPcLXM5Tr9xhmq4tHfYspLRs3pF20LP2TlgIQ,14595
227
+ machineconfig/scripts/python/helpers_repos/secure_repo.py,sha256=G_quiKOLNkWD5UG8ekexgh9xbpW4Od-J1pLJbLLWnpg,993
228
+ machineconfig/scripts/python/nw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
+ machineconfig/scripts/python/nw/mount_nfs.py,sha256=aECrL64j9g-9rF49sVJAjGmzaoGgcMnl3g9v17kQF4c,3239
230
+ machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
231
+ machineconfig/scripts/python/nw/mount_ssh.py,sha256=k2fKq3f5dKq_7anrFOlqvJoI_3U4EWNHLRZ1o3Lsy6M,2268
232
+ machineconfig/scripts/python/nw/onetimeshare.py,sha256=xRd8by6qUm-od2Umty2MYsXyJwzXw-CBTd7VellNaKY,2498
233
+ machineconfig/scripts/python/nw/wifi_conn.py,sha256=4GdLhgma9GRmZ6OFg3oxOX-qY3sr45njPckozlpM_A0,15566
234
+ machineconfig/scripts/python/nw/wsl_windows_transfer.py,sha256=534zlYe3Xsr0mqegAnZrVru8Fif-9jZyQK38Q90AtDo,3389
230
235
  machineconfig/scripts/python/repos_helpers/count_lines.py,sha256=ZLEajCLmlFFY969BehabqGOB9_kkpATO3Lt09L7KULk,15968
231
236
  machineconfig/scripts/python/repos_helpers/count_lines_frontend.py,sha256=jOlMCcVgE2a-NhdUtzNK1wKMf-VGldwGHR6QA1tnFa8,559
232
237
  machineconfig/scripts/python/repos_helpers/repos_helper.py,sha256=aP-Cy0V-4fj2dDHGdI72vPkBj33neOK_GvBgMD43dKg,2853
@@ -234,8 +239,9 @@ machineconfig/scripts/python/repos_helpers/repos_helper_action.py,sha256=byWcGh_
234
239
  machineconfig/scripts/python/repos_helpers/repos_helper_clone.py,sha256=9vGb9NCXT0lkerPzOJjmFfhU8LSzE-_1LDvjkhgnal0,5461
235
240
  machineconfig/scripts/python/repos_helpers/repos_helper_record.py,sha256=dtnnInQPn00u1cyr0oOgJ_jB12O3bSiNctwzC3W7_3w,10994
236
241
  machineconfig/scripts/python/repos_helpers/repos_helper_update.py,sha256=AYyKIB7eQ48yoYmFjydIhRI1lV39TBv_S4_LCa-oKuQ,11042
242
+ machineconfig/scripts/python/sessions_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
+ machineconfig/scripts/python/sessions_helpers/sessions_multiprocess.py,sha256=jtFci9vugJ8sMiw3qupUtANICy2RSorT2W8sdppkRN4,2914
237
244
  machineconfig/scripts/windows/agents.ps1,sha256=DqdrC_Xc2rwQ6kGzT0xh5CJz4B_0p5ZwB7s8XE6rPCM,77
238
- machineconfig/scripts/windows/choose_wezterm_theme.ps1,sha256=LiXJ0a4LKjb6E-oH_bAg6DjegV4SqDUdiMp_svGCFlI,95
239
245
  machineconfig/scripts/windows/cloud_copy.ps1,sha256=llTFhN2uInZTcoZYZuuhJcf5Ifo5MF226I5MpOzvc3A,82
240
246
  machineconfig/scripts/windows/cloud_mount.ps1,sha256=wSQO5II8DbqktexRIuI-RUn8kVCEk-SWT7imZqd7Qdk,82
241
247
  machineconfig/scripts/windows/cloud_sync.ps1,sha256=YrltSWkEKBoG7LMaB-gmot7IswRJEyhDH3fJ2Rlez6c,82
@@ -266,7 +272,6 @@ machineconfig/scripts/windows/snapshot.ps1,sha256=dSHwz8LRTe446lU9BkjiugBMWRS384
266
272
  machineconfig/scripts/windows/start_slidev.ps1,sha256=jow4mcguhuCFiUaOkHYUpq9EFKkgs5fp8G2rVMyVcR4,83
267
273
  machineconfig/scripts/windows/start_terminals.ps1,sha256=qoQNkv8waF2ZvfIIuUt8ZXdr2v2It2MPuzQj2ZQ5ToI,87
268
274
  machineconfig/scripts/windows/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
269
- machineconfig/scripts/windows/wifi_conn.ps1,sha256=M4D8gT4Ae0nG6zdhHTkmaF_Wu_w1IRvmltV4qpC6Bqw,82
270
275
  machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1,sha256=dGKAoP8WsQzHiAZjD8WT1Ne8RRQU8xf9HdH9bDkihh4,1720
271
276
  machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1,sha256=dr6t49UCnMHAhA0AR4gHluN0HvS5wzyygCNmjORfknU,2715
272
277
  machineconfig/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -320,7 +325,7 @@ machineconfig/settings/lf/windows/autocall/rename.ps1,sha256=47DEQpj8HBSa-_TImW-
320
325
  machineconfig/settings/linters/.flake8,sha256=1By04Qwy5saCudYKOw2bKHSNQg4N128SJudwD3SVGhQ,1958
321
326
  machineconfig/settings/linters/.mypy.ini,sha256=BNxVtNuliJZVeFpCRRIQpSWFDQYuKqKtcVKYcZ-sApc,811
322
327
  machineconfig/settings/linters/.pylintrc,sha256=_hYrPgtMvQc877u5NTU_HlkJMZwuDrmB6Yt3u5zg3-c,3593
323
- machineconfig/settings/linters/.ruff.toml,sha256=5C-8Fkj9mdZxs3ajeideTNUOKRSo31dDYW1VQmDzK6w,1655
328
+ machineconfig/settings/linters/.ruff.toml,sha256=Cw9FHSyM1oPlLJDAy9Y9GiwyuBYUWI1mqSpz94ddAhc,1655
324
329
  machineconfig/settings/lvim/linux/config.lua,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
330
  machineconfig/settings/lvim/windows/config.lua,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
326
331
  machineconfig/settings/lvim/windows/archive/config_additional.lua,sha256=zj-VDn-Av4IomJ3EqM1gf_6VsZ9ieG815O9QK1slyPI,792
@@ -343,7 +348,7 @@ machineconfig/settings/shells/ipy/profiles/default/startup/playext.py,sha256=OJ3
343
348
  machineconfig/settings/shells/kitty/kitty.conf,sha256=lDdx-dUX3jbKGb3BkS2f2TOpmgGiS-CI-_-lFvhD5A4,52870
344
349
  machineconfig/settings/shells/nushell/config.nu,sha256=ug0E0NXNlCzgStScFN6VTsAkUaOTPJZB69P-LS5L2VE,1047
345
350
  machineconfig/settings/shells/nushell/env.nu,sha256=4VmaXb-qP6qnMD5TPzkXMLFNlB5QC4l9HEzCvXZE2GQ,315
346
- machineconfig/settings/shells/pwsh/init.ps1,sha256=ARW_ym1jPffrKPYcXiifHQN5JGcQtDS8SuEkKJl_DAE,2466
351
+ machineconfig/settings/shells/pwsh/init.ps1,sha256=3ayfo_DyCKEY6JHVEmFtGK7BjQqNdIUCoaScWnxBXFE,2468
347
352
  machineconfig/settings/shells/pwsh/profile.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
348
353
  machineconfig/settings/shells/starship/starship.toml,sha256=5rQTY7ZpKnrnhgu2Y9OJKUYMz5lPLIftO1p1VRuVZwQ,1150
349
354
  machineconfig/settings/shells/vtm/settings.xml,sha256=5TNXd-i0eUGo2w3tuhY9aOkwoJdqih8_HO_U6uL2Dts,18262
@@ -385,7 +390,7 @@ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=NwrHKEPHW1PIkl3Yi7
385
390
  machineconfig/setup_windows/__init__.py,sha256=wVpUqoLqXl-_-bRd7gZw_PJ7WZ2GtOqfFMzo_lIwieg,454
386
391
  machineconfig/setup_windows/apps.ps1,sha256=G5GqZ9G0aiQr_A-HaahtRdzpaTTdW6n3DRKMZWDTSPc,11214
387
392
  machineconfig/setup_windows/machineconfig.ps1,sha256=gIQBOLIh65oUXgSjYMeYeD6lU1Bu80LZ59xqRc3T3BA,918
388
- machineconfig/setup_windows/uv.ps1,sha256=hYawJUKBAujEIYaORr4-OaFagTfnz0l-nVd_s7APZPI,310
393
+ machineconfig/setup_windows/uv.ps1,sha256=mzkFJUQ57dukVQtY7WqAQIVUDMcixnkir8aNM_TYrl4,350
389
394
  machineconfig/setup_windows/others/docker.ps1,sha256=M8NfsSxH8YlmY92J4rSe1xWOwTW8IFrdgb8cI8Riu2E,311
390
395
  machineconfig/setup_windows/others/obs.ps1,sha256=2andchcXpxS3rqZjGaMpY5VShxTAKWvw6eCrayjuaLo,30
391
396
  machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhmNpuM0hgXTQgVJmIRR_7sdcY,182
@@ -393,12 +398,12 @@ machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=7FopRdNn8hQbst4Cq_T1qo
393
398
  machineconfig/setup_windows/ssh/openssh-server_add-sshkey.ps1,sha256=qiNC02kzUZi6KBV7O-nRQ7pQ0OGixbq-rUvSCQ7TVxc,1656
394
399
  machineconfig/setup_windows/ssh/openssh-server_add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
395
400
  machineconfig/setup_windows/ssh/openssh_all.ps1,sha256=-mBGNRJSxsY6Z3gFMwIoL_3poj943acjfzXwGo2YFu4,864
396
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=VSw7JlTUAI8hflz4lyCqsRt2nMwGC2HyxrgQ2hhXhIs,328
401
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=47KY5sr8Cy3bfzFCszwnGeQpIHpjh7r8_znv3TZhqWY,221
397
402
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
398
403
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
399
404
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
400
405
  machineconfig/utils/accessories.py,sha256=W_9dLzjwNTW5JQk_pe3B2ijQ1nA2-8Kdg2r7VBtzgQs,4340
401
- machineconfig/utils/code.py,sha256=O53GYyUNPaaT6ywD_JaV2KWEZQmwWGcpnTOMTnRnVog,5631
406
+ machineconfig/utils/code.py,sha256=0dwPUAGQTaGfPtqlNnsKYkCC6D8ntCVXo2XIr-7MzOI,6409
402
407
  machineconfig/utils/installer.py,sha256=ZnhW_gRmGlq5uXwzNvIn-x1vXuOJxkzVqjNu188f37s,10465
403
408
  machineconfig/utils/io.py,sha256=3axJBhNZCZiWJbzBvF7keDjCmqnbSKtoTnyDtq1I5BE,2871
404
409
  machineconfig/utils/links.py,sha256=GQExBsMoxewOhwIrNdERuzk9HVKcmWgNUGO-RzPMS6M,22588
@@ -428,13 +433,13 @@ machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
428
433
  machineconfig/utils/installer_utils/github_release_bulk.py,sha256=WJf_qZlF02SmIc6C7o1h4Gy4gAaJAfeAS8O9s2Itj-k,6535
429
434
  machineconfig/utils/installer_utils/installer.py,sha256=CfBwtES-T0hhF-IHfbpyPn_tUz0YaVEk9sMV96oc0-w,9313
430
435
  machineconfig/utils/installer_utils/installer_abc.py,sha256=IxAN2QDohMAudNY_snW88NPU2S8ZUp8_2BPC32R4d_s,11050
431
- machineconfig/utils/installer_utils/installer_class.py,sha256=6FYtyY1EKsImqwZTtNmNbg8gKwYayeEmm_IBL-4Vbc8,18324
436
+ machineconfig/utils/installer_utils/installer_class.py,sha256=kvxsc8Ff6boqx1Llsupkp92LIsslUg5nktLLHdzZazo,18219
432
437
  machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=Xbi59rU35AzR7HZZ8ZQ8aUu_FjSgijNqc8Sme0rCk2Y,2050
433
438
  machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoSpdmTIdgS9LS-RvE-QZ-D260tD3o,1214
434
439
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
435
440
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
436
- machineconfig-5.29.dist-info/METADATA,sha256=nrWCsYTkePEXwvVHNOuWF5uhf6v-4kO5vXKb7jzrMC8,2495
437
- machineconfig-5.29.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
438
- machineconfig-5.29.dist-info/entry_points.txt,sha256=8jXeXoGGihOkQtKV0VYlm6lq5ewDh2eXR_LcccRkbws,999
439
- machineconfig-5.29.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
440
- machineconfig-5.29.dist-info/RECORD,,
441
+ machineconfig-5.31.dist-info/METADATA,sha256=m6XsqS0EKt06UBZ8re8-fVkkF3IoWSjYS4qSj2RQdH4,2525
442
+ machineconfig-5.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
443
+ machineconfig-5.31.dist-info/entry_points.txt,sha256=HprziWQM36Ra08mjGDqDsGB1q5krpRSNUG7V7M2EJxg,1074
444
+ machineconfig-5.31.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
445
+ machineconfig-5.31.dist-info/RECORD,,
@@ -4,6 +4,7 @@ choose_wezterm_theme = machineconfig.scripts.python.choose_wezterm_theme:main
4
4
  cloud_copy = machineconfig.scripts.python.cloud_copy:arg_parser
5
5
  cloud_mount = machineconfig.scripts.python.cloud_mount:arg_parser
6
6
  cloud_sync = machineconfig.scripts.python.cloud_sync:arg_parser
7
+ commands = machineconfig.scripts.python.command_navigator:main_from_parser
7
8
  croshell = machineconfig.scripts.python.croshell:arg_parser
8
9
  devops = machineconfig.scripts.python.devops:app
9
10
  fire = machineconfig.scripts.python.fire_jobs:main_from_parser
@@ -1,104 +0,0 @@
1
- # # as per https://github.com/marketplace/models/azure-openai/o1-preview
2
- # from openai import OpenAI
3
- # from machineconfig.utils.path_reduced import P as PathExtended
4
- # from machineconfig.utils.utils2 import read_ini
5
- # from rich import print as rprint
6
- # from rich.panel import Panel
7
- # from typing import Any
8
-
9
-
10
- # gh_token = read_ini(PathExtended.home().joinpath("dotfiles/creds/git/git_host_tokens.ini"))['thisismygitrepo']['newLongterm']
11
- # endpoint = "https://models.inference.ai.azure.com"
12
- # model_name_preferences = ["o3-mini", "o1-preview", "o1-mini", "GPT-4o", "GPT-4-o-mini"]
13
- # client__ = OpenAI(
14
- # base_url=endpoint,
15
- # api_key=gh_token,
16
- # )
17
-
18
-
19
- # def get_response(client: Any, model_name: str, messages: list[dict[str, str]]):
20
- # print(f"""
21
- # ┌────────────────────────────────────────────────────────────────
22
- # │ 🤖 Querying Model: {model_name}
23
- # │ Sending request to API...
24
- # └────────────────────────────────────────────────────────────────""")
25
- # try:
26
- # response = client.chat.completions.create(
27
- # messages=messages,
28
- # model=model_name
29
- # )
30
- # return response.choices
31
- # except Exception as e:
32
- # print(f"""
33
- # ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
34
- # ┃ ❌ API Error with model {model_name}
35
- # ┃ {str(e)}
36
- # ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
37
- # return None
38
-
39
-
40
- # def interactive_chat():
41
- # conversation_history = []
42
- # model_index = 0
43
- # model_name = model_name_preferences[model_index]
44
-
45
- # print("""
46
- # ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
47
- # ┃ 🚀 Interactive Chat Started
48
- # ┃ Type your message and press Enter to chat
49
- # ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
50
-
51
- # while True:
52
- # header = f" 🤖 Using Model: {model_name} "
53
- # print(f"\n{header.center(80, '═')}\n")
54
-
55
- # while True:
56
- # try:
57
- # user_input = input("💬 You: ")
58
- # conversation_history.append({"role": "user", "content": user_input})
59
-
60
- # while True:
61
- # choices = get_response(client__, model_name, conversation_history)
62
- # if choices is None:
63
- # model_index += 1
64
- # model_name = model_name_preferences[model_index % len(model_name_preferences)]
65
- # print(f"""
66
- # ┌────────────────────────────────────────────────────────────────
67
- # │ 🔄 Model Switch
68
- # │ Now using: {model_name}
69
- # └────────────────────────────────────────────────────────────────""")
70
- # continue
71
- # else:
72
- # break
73
-
74
- # for a_choice in choices:
75
- # response_content = a_choice.message.content
76
- # print("\n" * 2)
77
- # try:
78
- # rprint(Panel(
79
- # f"{response_content}",
80
- # title=f"🤖 AI ({model_name})",
81
- # border_style="blue"
82
- # ))
83
- # except Exception:
84
- # # Fallback if rich formatting fails
85
- # print(f"""
86
- # ┌────────────────────────────────────────────────────────────────
87
- # │ 🤖 AI ({model_name}):
88
- # │
89
- # {response_content}
90
- # └────────────────────────────────────────────────────────────────""")
91
-
92
- # conversation_history.append({"role": "assistant", "content": response_content})
93
- # print("\n")
94
- # except KeyboardInterrupt:
95
- # print("""
96
- # ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
97
- # ┃ 👋 Chat Session Ended
98
- # ┃ Thank you for using the interactive chat!
99
- # ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
100
- # return
101
-
102
-
103
- # if __name__ == "__main__":
104
- # interactive_chat()
@@ -1,25 +0,0 @@
1
- # def main():
2
- # print("\n" + "=" * 50)
3
- # print("📸 Welcome to the Snapshot Tool")
4
- # print("=" * 50 + "\n")
5
-
6
- # parser = argparse.ArgumentParser(description='📷 Capture snapshots using your webcam.')
7
- # parser.add_argument("--to_text", "-t", help="📝 Convert the snapshot to text using OCR.", action="store_true")
8
- # args = parser.parse_args()
9
-
10
- # print("📷 Capturing image from webcam...")
11
- # img_path = capture_from_webcam(show=False, wait=False, save=True)
12
- # print(f"✅ Image captured and saved at: {img_path}\n")
13
-
14
- # if args.to_text:
15
- # print("🔍 Converting image to text using Tesseract OCR...")
16
- # q = Terminal().run(f"cd ~/AppData/Local/Tesseract-OCR; pytesseract '{img_path}'", shell="pwsh").capture().op
17
- # print("📝 Extracted Text:")
18
- # print("-" * 50)
19
- # print(q)
20
- # print("-" * 50 + "\n")
21
- # else:
22
- # print("📂 Image saved successfully. No text extraction requested.\n")
23
-
24
- # if __name__ == '__main__':
25
- # main()
@@ -1,121 +0,0 @@
1
- """Script to start terminals on windows and wsl"""
2
-
3
- from machineconfig.utils.options import choose_from_options, get_ssh_hosts
4
- import platform
5
- from itertools import cycle
6
- from typing import Literal, Optional, Annotated
7
- import typer
8
-
9
-
10
- COLOR_SCHEMES = ["Campbell", "Campbell Powershell", "Solarized Dark", "Ubuntu-ColorScheme", "Retro"]
11
- THEMES_ITER = cycle(COLOR_SCHEMES)
12
- INIT_COMMANDS = ["ls", "lf", "cpufetch", "fastfetch", "btm"]
13
- INIT_COMMANDS_ITER = cycle(INIT_COMMANDS)
14
- SIZE_ITER = cycle([0.6, 0.4, 0.3])
15
- ORIENTATION = ["vertical", "horizontal"]
16
- ORIENTATION_ITER = cycle(ORIENTATION)
17
- ORIENTATION_TYPE = Literal["vertical", "horizontal"]
18
-
19
- THIS_MACHINE = "this"
20
- THIS_MACHINE_WSL = "thiswsl"
21
- THIS_MACHINE_HOSTNAME = platform.node()
22
- THIS_MACHINE_HOSTNAME_WSL = f"{THIS_MACHINE_HOSTNAME}wsl"
23
-
24
-
25
- def main_windows_and_wsl(window: int, hosts: list[str], orientation: ORIENTATION_TYPE = "vertical", mprocs: bool = False):
26
- print("\n🔧 Configuring terminal layout for Windows and WSL...")
27
- orientation_oposite = "horizontal" if orientation == "vertical" else "vertical"
28
- orientation_swap = "up" if orientation == "horizontal" else "left"
29
- orientation_opposite_move_focus = "up" if orientation_oposite == "horizontal" else "left"
30
- orientation_opposite_move_focus_other = "down" if orientation_oposite == "horizontal" else "right"
31
- sleep = 3
32
- sep = f"\nsleep {sleep}; wt --window {window}" # or '`;'
33
- ssh_cmd = "-t 'mprocs'" if mprocs else "" # 'wsl_ssh_windows_port_forwarding.ps1'
34
- split_per_machine = 1 / len(hosts)
35
- size = 0.3
36
- known_hosts = get_ssh_hosts()
37
- if len(hosts) == 1:
38
- print("🖥️ Single host detected. Configuring layout...")
39
- if "wsl" in hosts[0] or f"{hosts[0]}wsl" in known_hosts: # its a windows machine with wsl
40
- host_wind = hosts[0] if "wsl" not in hosts[0] else hosts[0].split("wsl")[0]
41
- host_linux = f"{host_wind}wsl"
42
- cmd = f"""
43
- wt --window {window} --title {hosts[0]} powershell -Command "ssh {host_linux} {ssh_cmd}" `; split-pane --{orientation} --title {hosts[0]}wsl --size 0.5 powershell -Command "ssh {host_wind} `; split-pane --{orientation_oposite} --size 0.5 powershell "
44
- """
45
- else: # its a windows machine without wsl
46
- cmd = f"""wt --window {window} --title {hosts[0]} powershell -Command "ssh {hosts[0]} {ssh_cmd}" `; split-pane --{orientation} --title {hosts[0]}wsl --size 0.1 powershell """
47
-
48
- elif len(hosts) > 1:
49
- print("🖥️ Multiple hosts detected. Configuring layout...")
50
- pane_cmd = f'powershell -Command "ssh {hosts[0]} {ssh_cmd}" ' if hosts[0] != THIS_MACHINE else ""
51
- cmd = f"""wt --window {window} --title {hosts[0]} {pane_cmd} """
52
- for a_host in hosts[1:]:
53
- if a_host != THIS_MACHINE:
54
- pane_cmd = f'powershell -Command "ssh {a_host} {ssh_cmd}" '
55
- else:
56
- pane_cmd = "powershell"
57
- cmd += f"""{sep} split-pane --{orientation_oposite} --title {a_host}Windows --size {split_per_machine} {pane_cmd} """
58
- for idx, a_host in enumerate(hosts[::-1]):
59
- if f"{a_host}wsl" not in known_hosts and a_host != THIS_MACHINE:
60
- continue
61
- pane_cmd = f'powershell -Command "ssh {a_host}wsl"' if a_host != THIS_MACHINE else "wsl"
62
- if idx == 0:
63
- tmp = ""
64
- else:
65
- tmp = f"move-focus {orientation_opposite_move_focus}" if idx % 2 == 1 else f"move-focus {orientation_opposite_move_focus_other}"
66
- cmd += f"""{sep} {tmp} split-pane --{orientation} --title {a_host}wsl --size {size} {pane_cmd} """
67
- cmd += f"""{sep} swap-pane {orientation_swap} """
68
- else:
69
- raise NotImplementedError(f"❌ len(hosts) = {len(hosts)}. Only 1 or 2 hosts are supported.")
70
- print("✅ Terminal layout configured successfully!\n")
71
- return cmd
72
-
73
-
74
- def main(
75
- panes: Annotated[Optional[int], typer.Option("--panes", "-p", help="🔲 The number of panes to open.")] = 4,
76
- vertical: Annotated[bool, typer.Option("--vertical", "-V", help="↕️ Switch orientation to vertical from default horizontal.")] = False,
77
- window: Annotated[int, typer.Option("--window", "-w", help="🪟 The window ID to use.")] = 0,
78
- hosts: Annotated[Optional[list[str]], typer.Option("--hosts", "-H", help="🌐 The hosts to connect to.")] = None,
79
- ) -> None:
80
- print("\n" + "=" * 50)
81
- print("🖥️ Welcome to the Terminal Starter Tool")
82
- print("=" * 50 + "\n")
83
-
84
- if panes:
85
- print("🔲 Configuring panes...")
86
- cmd = f"wt --window {window} --colorScheme '{next(THEMES_ITER)}' pwsh -NoExit -Command '{next(INIT_COMMANDS_ITER)}' "
87
- cmd += f" `; new-tab --colorScheme '{next(THEMES_ITER)}' --profile pwsh --title 't2' --tabColor '#f59218' "
88
- cmd += f" `; new-tab --colorScheme '{next(THEMES_ITER)}' --profile pwsh --title 't3' --tabColor '#009999' "
89
- for idx in range(panes):
90
- if idx % 2 == 0:
91
- cmd += f" `; move-focus down split-pane --horizontal --size {next(SIZE_ITER)} --colorScheme '{next(THEMES_ITER)}' pwsh -NoExit -Command '{next(INIT_COMMANDS_ITER)}' "
92
- else:
93
- cmd += f" `; move-focus up split-pane --vertical --size {next(SIZE_ITER)} --colorScheme '{next(THEMES_ITER)}' pwsh -NoExit -Command '{next(INIT_COMMANDS_ITER)}' "
94
-
95
- else:
96
- if hosts is None:
97
- print("🌐 No hosts provided. Displaying options...")
98
- hosts = choose_from_options(msg="Select hosts:", options=get_ssh_hosts() + [THIS_MACHINE], multi=True, fzf=True)
99
- else:
100
- print("🌐 Using provided hosts:", hosts)
101
- assert isinstance(hosts, list)
102
- cmd = main_windows_and_wsl(window=window, hosts=hosts, orientation="vertical" if vertical else "horizontal")
103
-
104
- print("\n📋 Generated Command:")
105
- print("-" * 50)
106
- print(cmd)
107
- print("-" * 50 + "\n")
108
-
109
- # PROGRAM_PATH.write_text(cmd, encoding="utf-8")
110
- import subprocess
111
-
112
- subprocess.run(cmd, shell=True)
113
- print("✅ Command saved successfully!\n")
114
-
115
-
116
- def arg_parser() -> None:
117
- typer.run(main)
118
-
119
-
120
- if __name__ == "__main__":
121
- arg_parser()
@@ -1 +0,0 @@
1
- uv run --python 3.13 --no-dev --project $HOME/code/machineconfig choose_wezterm_theme $args[0]