machineconfig 5.27__py3-none-any.whl → 5.28__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 (59) hide show
  1. machineconfig/cluster/sessions_managers/zellij_local_manager.py +1 -0
  2. machineconfig/jobs/installer/linux_scripts/brave.sh +4 -14
  3. machineconfig/jobs/installer/linux_scripts/docker.sh +5 -17
  4. machineconfig/jobs/installer/linux_scripts/docker_start.sh +6 -14
  5. machineconfig/jobs/installer/linux_scripts/edge.sh +3 -11
  6. machineconfig/jobs/installer/linux_scripts/nerdfont.sh +5 -17
  7. machineconfig/jobs/installer/linux_scripts/pgsql.sh +3 -11
  8. machineconfig/jobs/installer/linux_scripts/redis.sh +5 -17
  9. machineconfig/jobs/installer/linux_scripts/timescaledb.sh +6 -20
  10. machineconfig/jobs/installer/linux_scripts/vscode.sh +5 -17
  11. machineconfig/jobs/installer/linux_scripts/warp-cli.sh +5 -17
  12. machineconfig/jobs/installer/linux_scripts/wezterm.sh +3 -11
  13. machineconfig/jobs/linux/msc/lid.sh +2 -8
  14. machineconfig/jobs/linux/msc/network.sh +2 -8
  15. machineconfig/scripts/cloud/init.sh +6 -20
  16. machineconfig/scripts/linux/share_cloud.sh +11 -25
  17. machineconfig/scripts/python/agents.py +22 -31
  18. machineconfig/scripts/python/cloud_repo_sync.py +14 -29
  19. machineconfig/scripts/python/devops.py +7 -10
  20. machineconfig/scripts/python/helpers/repo_sync_helpers.py +1 -1
  21. machineconfig/scripts/python/helpers_fire/fire_agents_help_launch.py +30 -48
  22. machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py +24 -6
  23. machineconfig/scripts/python/helpers_fire/fire_crush.json +14 -0
  24. machineconfig/scripts/python/helpers_fire/fire_crush.py +37 -0
  25. machineconfig/scripts/python/helpers_fire/fire_cursor_agents.py +23 -0
  26. machineconfig/scripts/python/helpers_fire/fire_gemini.py +41 -0
  27. machineconfig/scripts/python/helpers_fire/fire_q.py +19 -0
  28. machineconfig/scripts/python/helpers_fire/prompt.txt +2 -0
  29. machineconfig/scripts/python/helpers_fire/template.ps1 +0 -0
  30. machineconfig/scripts/python/helpers_fire/template.sh +31 -0
  31. machineconfig/scripts/python/interactive.py +21 -19
  32. machineconfig/scripts/python/repos.py +4 -1
  33. machineconfig/scripts/python/secure_repo.py +15 -0
  34. machineconfig/settings/broot/br.sh +0 -4
  35. machineconfig/setup_linux/__init__.py +2 -2
  36. machineconfig/setup_linux/apps.sh +7 -9
  37. machineconfig/setup_linux/apps_desktop.sh +11 -35
  38. machineconfig/setup_linux/apps_gui.sh +4 -14
  39. machineconfig/setup_linux/nix/cli_installation.sh +9 -29
  40. machineconfig/setup_linux/web_shortcuts/interactive.sh +1 -1
  41. machineconfig/setup_windows/__init__.py +2 -2
  42. machineconfig/utils/code.py +3 -3
  43. machineconfig/utils/files/read.py +1 -1
  44. machineconfig/utils/installer.py +15 -21
  45. machineconfig/utils/installer_utils/installer.py +3 -4
  46. machineconfig/utils/installer_utils/installer_abc.py +4 -4
  47. machineconfig/utils/installer_utils/installer_class.py +11 -46
  48. machineconfig/utils/io.py +0 -1
  49. {machineconfig-5.27.dist-info → machineconfig-5.28.dist-info}/METADATA +3 -3
  50. {machineconfig-5.27.dist-info → machineconfig-5.28.dist-info}/RECORD +57 -50
  51. {machineconfig-5.27.dist-info → machineconfig-5.28.dist-info}/entry_points.txt +0 -1
  52. machineconfig/scripts/linux/cloud_repo_sync +0 -2
  53. machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
  54. /machineconfig/setup_linux/{repos.sh → machineconfig.sh} +0 -0
  55. /machineconfig/setup_linux/{ve.sh → uv.sh} +0 -0
  56. /machineconfig/setup_windows/{repos.ps1 → machineconfig.ps1} +0 -0
  57. /machineconfig/setup_windows/{ve.ps1 → uv.ps1} +0 -0
  58. {machineconfig-5.27.dist-info → machineconfig-5.28.dist-info}/WHEEL +0 -0
  59. {machineconfig-5.27.dist-info → machineconfig-5.28.dist-info}/top_level.txt +0 -0
@@ -1,17 +1,15 @@
1
1
  """package manager"""
2
2
 
3
3
  from machineconfig.utils.installer_utils.installer_abc import check_if_installed_already, parse_apps_installer_linux, parse_apps_installer_windows
4
-
5
4
  from machineconfig.utils.installer_utils.installer_class import Installer
6
5
  from machineconfig.utils.schemas.installer.installer_types import InstallerData, InstallerDataFiles, get_normalized_arch, get_os_name, OPERATING_SYSTEMS, CPU_ARCHITECTURES
7
6
  from machineconfig.jobs.installer.package_groups import PACKAGE_GROUPS, PACKAGE_GROUP2NAMES
8
- from rich.console import Console
9
- from rich.panel import Panel
10
-
11
7
  from machineconfig.utils.path_extended import PathExtended
12
8
  from machineconfig.utils.source_of_truth import INSTALL_VERSION_ROOT, LINUX_INSTALL_PATH, LIBRARY_ROOT
13
9
  from machineconfig.utils.io import read_json
14
10
 
11
+ from rich.console import Console
12
+ from rich.panel import Panel
15
13
  from typing import Any, Optional
16
14
  import platform
17
15
  from joblib import Parallel, delayed
@@ -74,7 +72,7 @@ def check_latest():
74
72
 
75
73
 
76
74
  def get_installed_cli_apps():
77
- print(f"\n{'=' * 80}\n🔍 LISTING INSTALLED CLI APPS 🔍\n{'=' * 80}")
75
+ print("🔍 LISTING INSTALLED CLI APPS 🔍")
78
76
  if platform.system() == "Windows":
79
77
  print("🪟 Searching for Windows executables...")
80
78
  apps = PathExtended.home().joinpath("AppData/Local/Microsoft/WindowsApps").search("*.exe", not_in=["notepad"])
@@ -89,12 +87,12 @@ def get_installed_cli_apps():
89
87
  print(error_msg)
90
88
  raise NotImplementedError(error_msg)
91
89
  apps = [app for app in apps if app.size("kb") > 0.1 and not app.is_symlink()] # no symlinks like paint and wsl and bash
92
- print(f"✅ Found {len(apps)} installed applications\n{'=' * 80}")
90
+ print(f"✅ Found {len(apps)} installed applications")
93
91
  return apps
94
92
 
95
93
 
96
94
  def get_installers(os: OPERATING_SYSTEMS, arch: CPU_ARCHITECTURES, which_cats: Optional[list[PACKAGE_GROUPS]]) -> list[InstallerData]:
97
- print(f"\n{'=' * 80}\n🔍 LOADING INSTALLER CONFIGURATIONS 🔍\n{'=' * 80}")
95
+ print("🔍 LOADING INSTALLER CONFIGURATIONS 🔍")
98
96
  res_all = get_all_installer_data_files()
99
97
  acceptable_apps_names: list[str] | None = None
100
98
  if which_cats is not None:
@@ -111,14 +109,15 @@ def get_installers(os: OPERATING_SYSTEMS, arch: CPU_ARCHITECTURES, which_cats: O
111
109
  if installer_data["fileNamePattern"][arch][os] is None:
112
110
  continue
113
111
  all_installers.append(installer_data)
114
- print(f"✅ Loaded {len(all_installers)} installer configurations\n{'=' * 80}")
112
+ print(f"✅ Loaded {len(all_installers)} installer configurations")
115
113
  return all_installers
116
114
 
117
115
 
118
116
  def get_all_installer_data_files() -> list[InstallerData]:
119
- print(f"\n{'=' * 80}\n📂 LOADING CONFIGURATION FILES 📂\n{'=' * 80}")
117
+ print("📂 LOADING CONFIGURATION FILES 📂")
120
118
  import machineconfig.jobs.installer as module
121
119
  from pathlib import Path
120
+
122
121
  print("📂 Loading configuration files...")
123
122
  res_raw: InstallerDataFiles = read_json(Path(module.__file__).parent.joinpath("installer_data.json"))
124
123
  res_final: list[InstallerData] = res_raw["installers"]
@@ -129,6 +128,7 @@ def get_all_installer_data_files() -> list[InstallerData]:
129
128
  def get_installers_system_groups():
130
129
  res_final: list[InstallerData] = []
131
130
  from platform import system
131
+
132
132
  if system() == "Windows":
133
133
  options_system = parse_apps_installer_windows(LIBRARY_ROOT.joinpath("setup_windows/apps.ps1").read_text(encoding="utf-8"))
134
134
  elif system() == "Linux" or system() == "Darwin":
@@ -137,19 +137,13 @@ def get_installers_system_groups():
137
137
  raise NotImplementedError(f"❌ System {system()} not supported")
138
138
  os_name = get_os_name()
139
139
  for group_name, (docs, script) in options_system.items():
140
- item: InstallerData = {
141
- "appName": group_name,
142
- "doc": docs,
143
- "repoURL": "CMD",
144
- "fileNamePattern": {
145
- "amd64": {os_name: script,},
146
- "arm64": {os_name: script,},}}
147
- res_final.append(item)
140
+ item: InstallerData = {"appName": group_name, "doc": docs, "repoURL": "CMD", "fileNamePattern": {"amd64": {os_name: script}, "arm64": {os_name: script}}}
141
+ res_final.append(item)
148
142
  return res_final
149
143
 
150
144
 
151
145
  def install_bulk(installers_data: list[InstallerData], safe: bool = False, jobs: int = 10, fresh: bool = False):
152
- print(f"\n{'=' * 80}\n🚀 BULK INSTALLATION PROCESS 🚀\n{'=' * 80}")
146
+ print("🚀 BULK INSTALLATION PROCESS 🚀")
153
147
  if fresh:
154
148
  print("🧹 Fresh install requested - clearing version cache...")
155
149
  PathExtended(INSTALL_VERSION_ROOT).delete(sure=True)
@@ -182,10 +176,10 @@ def install_bulk(installers_data: list[InstallerData], safe: bool = False, jobs:
182
176
  # return None
183
177
 
184
178
  print(f"🚀 Starting installation of {len(installers_data)} packages...")
185
- print(f"\n{'=' * 80}\n📦 INSTALLING FIRST PACKAGE 📦\n{'=' * 80}")
179
+ print("📦 INSTALLING FIRST PACKAGE 📦")
186
180
  Installer(installers_data[0]).install(version=None)
187
181
  installers_remaining = installers_data[1:]
188
- print(f"\n{'=' * 80}\n📦 INSTALLING REMAINING PACKAGES 📦\n{'=' * 80}")
182
+ print("📦 INSTALLING REMAINING PACKAGES 📦")
189
183
 
190
184
  # Use joblib for parallel processing of remaining installers
191
185
  res = Parallel(n_jobs=jobs)(delayed(lambda x: Installer(x).install_robust(version=None))(installer) for installer in installers_remaining)
@@ -218,11 +212,11 @@ def install_bulk(installers_data: list[InstallerData], safe: bool = False, jobs:
218
212
  print("\n" * 2)
219
213
 
220
214
 
221
-
222
215
  def get_machineconfig_version() -> str:
223
216
  from importlib.metadata import PackageNotFoundError, version as _pkg_version
224
217
  from pathlib import Path
225
218
  import tomllib
219
+
226
220
  name: str = "machineconfig"
227
221
  try:
228
222
  return _pkg_version(name)
@@ -57,12 +57,13 @@ def main_with_parser():
57
57
 
58
58
  def main(
59
59
  which: Optional[str] = typer.Option(None, "--which", "-w", help="Comma-separated list of program names to install."),
60
- group: Optional[PACKAGE_GROUPS] = typer.Option(None, "--group", "-g", help=f"Group name (one of {list(get_args(PACKAGE_GROUPS))})"),
60
+ group: Optional[str] = typer.Option(None, "--group", "-g", help="Groups names. A group is bundle of apps. See available groups when running interactively."),
61
61
  interactive: bool = typer.Option(False, "--interactive", "-ia", help="Interactive selection of programs to install."),
62
62
  ) -> None:
63
63
  if which is not None:
64
64
  return install_clis(clis_names=[x.strip() for x in which.split(",") if x.strip() != ""])
65
65
  if group is not None:
66
+ # for a_group in group
66
67
  return install_group(package_group=group)
67
68
  if interactive:
68
69
  return install_interactively()
@@ -82,13 +83,11 @@ def install_interactively():
82
83
  installer_options = []
83
84
  for x in installers:
84
85
  installer_options.append(Installer(installer_data=x).get_description())
85
-
86
86
  # Build category options and maintain a mapping from display text to actual category name
87
87
  category_display_to_name: dict[str, str] = {}
88
88
  for group_name, group_values in PACKAGE_GROUP2NAMES.items():
89
89
  display = f"📦 {group_name:<20}" + " -- " + f"{'|'.join(group_values):<60}"
90
90
  category_display_to_name[display] = group_name
91
-
92
91
  options_system = get_installers_system_groups()
93
92
  for item in options_system:
94
93
  display = f"📦 {item['appName']:<20} -- {item['doc']:<60}"
@@ -114,7 +113,7 @@ def install_interactively():
114
113
  console.print(panel)
115
114
 
116
115
 
117
- def install_group(package_group: PACKAGE_GROUPS):
116
+ def install_group(package_group: str):
118
117
  panel = Panel(f"[bold yellow]Installing programs from category: [green]{package_group}[/green][/bold yellow]", title="[bold blue]📦 Category Installation[/bold blue]", border_style="blue", padding=(1, 2))
119
118
  console.print(panel)
120
119
  from machineconfig.utils.installer import get_installers, install_bulk
@@ -9,7 +9,7 @@ import platform
9
9
 
10
10
 
11
11
  def find_move_delete_windows(downloaded_file_path: PathExtended, exe_name: Optional[str] = None, delete: bool = True, rename_to: Optional[str] = None):
12
- print(f"\n{'=' * 80}\n🔍 PROCESSING WINDOWS EXECUTABLE 🔍\n{'=' * 80}")
12
+ print(f"🔍 PROCESSING WINDOWS EXECUTABLE 🔍")
13
13
  if exe_name is not None and ".exe" in exe_name:
14
14
  exe_name = exe_name.replace(".exe", "")
15
15
  if downloaded_file_path.is_file():
@@ -54,7 +54,7 @@ def find_move_delete_windows(downloaded_file_path: PathExtended, exe_name: Optio
54
54
 
55
55
 
56
56
  def find_move_delete_linux(downloaded: PathExtended, tool_name: str, delete: Optional[bool] = True, rename_to: Optional[str] = None):
57
- print(f"\n{'=' * 80}\n🔍 PROCESSING LINUX EXECUTABLE 🔍\n{'=' * 80}")
57
+ print(f"🔍 PROCESSING LINUX EXECUTABLE 🔍")
58
58
  if downloaded.is_file():
59
59
  exe = downloaded
60
60
  print(f"📄 Found direct executable file: {exe}")
@@ -108,7 +108,7 @@ def find_move_delete_linux(downloaded: PathExtended, tool_name: str, delete: Opt
108
108
  print("✅ Temporary files removed")
109
109
 
110
110
  exe_new_location = PathExtended(LINUX_INSTALL_PATH).joinpath(exe.name)
111
- print(f"✅ Executable installed at: {exe_new_location}\n{'=' * 80}")
111
+ print(f"✅ Executable installed at: {exe_new_location}")
112
112
  return exe_new_location
113
113
 
114
114
 
@@ -134,7 +134,7 @@ def is_executable_in_path(executable_name: str) -> bool:
134
134
 
135
135
 
136
136
  def check_if_installed_already(exe_name: str, version: Optional[str], use_cache: bool) -> tuple[str, str, str]:
137
- print(f"\n{'=' * 80}\n🔍 CHECKING INSTALLATION STATUS: {exe_name} 🔍\n{'=' * 80}")
137
+ print(f"🔍 CHECKING INSTALLATION STATUS: {exe_name} 🔍")
138
138
  INSTALL_VERSION_ROOT.joinpath(exe_name).parent.mkdir(parents=True, exist_ok=True)
139
139
  tmp_path = INSTALL_VERSION_ROOT.joinpath(exe_name)
140
140
 
@@ -34,45 +34,10 @@ class Installer:
34
34
  """Derive executable name from app name by converting to lowercase and removing spaces."""
35
35
  return self.installer_data["appName"].lower().replace(" ", "").replace("-", "")
36
36
 
37
- @staticmethod
38
- def choose_app_and_install():
39
- print(f"\n{'=' * 80}\n🔍 SELECT APPLICATION TO INSTALL 🔍\n{'=' * 80}")
40
- from machineconfig.utils.options import choose_from_options
41
-
42
- print("📂 Searching for configuration files...")
43
- jobs_dir = Path(LIBRARY_ROOT.joinpath("jobs"))
44
- config_paths = [Path(p) for p in jobs_dir.rglob("config.json")]
45
- path = choose_from_options(multi=False, options=config_paths, msg="Choose one option")
46
- print(f"📄 Loading configuration from: {path}")
47
- config_data = read_json(path)
48
- installer_data_files = InstallerDataFiles(config_data)
49
-
50
- # Extract app names from the installers
51
- app_names = [installer["appName"] for installer in installer_data_files["installers"]]
52
- print("🔍 Select an application to install:")
53
- app_name = choose_from_options(multi=False, options=app_names, fzf=True, msg="Choose one option")
54
-
55
- # Find the selected installer data
56
- selected_installer_data = None
57
- for installer_data in installer_data_files["installers"]:
58
- if installer_data["appName"] == app_name:
59
- selected_installer_data = installer_data
60
- break
61
-
62
- if selected_installer_data is None:
63
- raise ValueError(f"Could not find installer data for {app_name}")
64
-
65
- installer = Installer(installer_data=selected_installer_data)
66
- exe_name = installer._get_exe_name()
67
- print(f"📦 Selected application: {exe_name}")
68
- version = input(f"📝 Enter version to install for {exe_name} [latest]: ") or None
69
- print(f"\n{'=' * 80}\n🚀 INSTALLING {exe_name.upper()} 🚀\n{'=' * 80}")
70
- installer.install(version=version)
71
-
72
37
  def install_robust(self, version: Optional[str]) -> str:
73
38
  try:
74
39
  exe_name = self._get_exe_name()
75
- print(f"\n{'=' * 80}\n🚀 INSTALLING {exe_name.upper()} 🚀\n{'=' * 80}")
40
+ print(f"🚀 INSTALLING {exe_name.upper()} 🚀")
76
41
  result_old = subprocess.run(f"{exe_name} --version", shell=True, capture_output=True, text=True)
77
42
  old_version_cli = result_old.stdout.strip()
78
43
  print(f"📊 Current version: {old_version_cli or 'Not installed'}")
@@ -105,7 +70,7 @@ class Installer:
105
70
  if installer_arch_os is None:
106
71
  raise ValueError(f"No installation pattern for {exe_name} on {os_name} {arch}")
107
72
 
108
- print(f"\n{'=' * 80}\n🔧 INSTALLATION PROCESS: {exe_name} 🔧\n{'=' * 80}")
73
+ print(f"🔧 INSTALLATION PROCESS: {exe_name} 🔧")
109
74
  version_to_be_installed: str = "unknown" # Initialize to ensure it's always bound
110
75
  if repo_url == "CMD":
111
76
  if "npm " in installer_arch_os or "pip " in installer_arch_os or "winget " in installer_arch_os:
@@ -123,7 +88,7 @@ class Installer:
123
88
  if result.stderr:
124
89
  print(f"STDERR: {result.stderr}")
125
90
  print(f"Return code: {result.returncode}")
126
- print(f"✅ Package manager installation completed\n{'=' * 80}")
91
+ print(f"✅ Package manager installation completed")
127
92
  elif installer_arch_os.endswith((".sh", ".py", ".ps1")):
128
93
  # search for the script, see which path ends with the script name
129
94
  import machineconfig.jobs.installer as module
@@ -142,19 +107,19 @@ class Installer:
142
107
  print(f"🚀 Running shell script: {installer_path}")
143
108
  subprocess.run(f"bash {installer_path}", shell=True, check=True)
144
109
  version_to_be_installed = "scripted_installation"
145
- print(f"✅ Shell script installation completed\n{'=' * 80}")
110
+ print("✅ Shell script installation completed")
146
111
  elif installer_arch_os.endswith(".ps1"):
147
112
  if platform.system() != "Windows":
148
113
  raise NotImplementedError(f"PowerShell script installation not supported on {platform.system()}")
149
114
  print(f"🚀 Running PowerShell script: {installer_path}")
150
115
  subprocess.run(f"powershell -ExecutionPolicy Bypass -File {installer_path}", shell=True, check=True)
151
116
  version_to_be_installed = "scripted_installation"
152
- print(f"✅ PowerShell script installation completed\n{'=' * 80}")
117
+ print("✅ PowerShell script installation completed")
153
118
  elif installer_arch_os.endswith(".py"):
154
119
  import runpy
155
120
  runpy.run_path(str(installer_path), run_name=None)["main"](self.installer_data, version=version)
156
121
  version_to_be_installed = str(version)
157
- print(f"✅ Custom installation completed\n{'=' * 80}")
122
+ print("✅ Custom installation completed")
158
123
  elif installer_arch_os.startswith("https://"): # its a url to be downloaded
159
124
  print(f"📥 Downloading object from URL: {installer_arch_os}")
160
125
  downloaded_object = PathExtended(installer_arch_os).download(folder=INSTALL_TMP_DIR)
@@ -186,7 +151,7 @@ class Installer:
186
151
  print(f"🔄 Renaming to correct name: {new_exe_name}")
187
152
  exe.with_name(name=new_exe_name, inplace=True, overwrite=True)
188
153
  version_to_be_installed = "downloaded_binary"
189
- print(f"✅ Downloaded binary installation completed\n{'=' * 80}")
154
+ print("✅ Downloaded binary installation completed")
190
155
  else:
191
156
  raise NotImplementedError(f"CMD installation method not implemented for: {installer_arch_os}")
192
157
  else:
@@ -208,7 +173,7 @@ class Installer:
208
173
  print(f"Return code: {result.returncode}")
209
174
  print("🗑️ Cleaning up .deb package...")
210
175
  downloaded.delete(sure=True)
211
- print(f"✅ DEB package installation completed\n{'=' * 80}")
176
+ print("✅ DEB package installation completed")
212
177
  else:
213
178
  if platform.system() == "Windows":
214
179
  print("🪟 Installing on Windows...")
@@ -236,13 +201,13 @@ class Installer:
236
201
  print(f"💾 Saving version information to: {INSTALL_VERSION_ROOT.joinpath(exe_name)}")
237
202
  INSTALL_VERSION_ROOT.joinpath(exe_name).parent.mkdir(parents=True, exist_ok=True)
238
203
  INSTALL_VERSION_ROOT.joinpath(exe_name).write_text(version_to_be_installed or "unknown", encoding="utf-8")
239
- print(f"✅ Installation completed successfully!\n{'=' * 80}")
204
+ print("✅ Installation completed successfully!")
240
205
 
241
206
  def download(self, version: Optional[str]) -> tuple[PathExtended, str]:
242
207
  exe_name = self._get_exe_name()
243
208
  repo_url = self.installer_data["repoURL"]
244
209
  app_name = self.installer_data["appName"]
245
- print(f"\n{'=' * 80}\n📥 DOWNLOADING: {exe_name} 📥\n{'=' * 80}")
210
+ print(f"📥 DOWNLOADING: {exe_name} 📥")
246
211
 
247
212
  download_link: Optional[str] = None
248
213
  version_to_be_installed: Optional[str] = None
@@ -273,7 +238,7 @@ class Installer:
273
238
  assert version_to_be_installed is not None, "version_to_be_installed must be set"
274
239
  print(f"📥 Downloading {app_name} from: {download_link}")
275
240
  downloaded = PathExtended(download_link).download(folder=INSTALL_TMP_DIR).decompress()
276
- print(f"✅ Download and extraction completed to: {downloaded}\n{'=' * 80}")
241
+ print(f"✅ Download and extraction completed to: {downloaded}")
277
242
  return downloaded, version_to_be_installed
278
243
 
279
244
  # --------------------------- Arch / template helpers ---------------------------
machineconfig/utils/io.py CHANGED
@@ -69,7 +69,6 @@ def read_ini(path: "Path", encoding: Optional[str] = None):
69
69
  if not Path(path).exists() or Path(path).is_dir():
70
70
  raise FileNotFoundError(f"File not found or is a directory: {path}")
71
71
  import configparser
72
-
73
72
  res = configparser.ConfigParser()
74
73
  res.read(filenames=[str(path)], encoding=encoding)
75
74
  return res
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 5.27
3
+ Version: 5.28
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -62,13 +62,13 @@ Additionally, files that contain data, sensitive information that should not be
62
62
  # Windows:
63
63
 
64
64
  ```powershell
65
- iex (iwr bit.ly/cfgiawindows).Content
65
+ iex (iwr bit.ly/cfgwindows).Content
66
66
  ```
67
67
 
68
68
  # Linux and MacOS
69
69
 
70
70
  ```bash
71
- . <(curl -sL bit.ly/cfgialinux)
71
+ . <(curl -sL bit.ly/cfglinux)
72
72
  ```
73
73
 
74
74
 
@@ -19,7 +19,7 @@ machineconfig/cluster/sessions_managers/wt_local_manager.py,sha256=B7qpdRakeS1XF
19
19
  machineconfig/cluster/sessions_managers/wt_remote.py,sha256=yofv3Zlj2aClDUKYhUJVyvO-Wh76Wka71n-DY1ODj0Q,9072
20
20
  machineconfig/cluster/sessions_managers/wt_remote_manager.py,sha256=wxfZPJd4_21LAEoaf1kVDIyhUOYlJfWfNfFvlCOPLqo,20303
21
21
  machineconfig/cluster/sessions_managers/zellij_local.py,sha256=jQgaWEvPmLVHt_cPTJEM5YCI7HeM71kI0X3U7BFP_jk,10064
22
- machineconfig/cluster/sessions_managers/zellij_local_manager.py,sha256=Rdpl9i5mN0Ywfw5VfPr7BlBl78IaBRM7WqWM6tNJGSs,17612
22
+ machineconfig/cluster/sessions_managers/zellij_local_manager.py,sha256=_qfGQUTmgnhuyfTB0vDGijjb7NFClM1hdprFIXtt2aw,17691
23
23
  machineconfig/cluster/sessions_managers/zellij_remote.py,sha256=siLNW7DohSMjDGmhTeNGU8xpb1XM4NFvmkzaa3NyZbc,8533
24
24
  machineconfig/cluster/sessions_managers/zellij_remote_manager.py,sha256=xzih0y8_1vMH58kMQE2oFj5sdjDM8lWhe5lbz0U9hZo,8417
25
25
  machineconfig/cluster/sessions_managers/helpers/zellij_local_helper.py,sha256=B7RXw1j31evmdYciU3CP3Jdb8A87eUeqV-JAwVQTN5E,14822
@@ -64,23 +64,23 @@ machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py,sha256=6IRg95T
64
64
  machineconfig/jobs/installer/custom_dev/redis.py,sha256=bReDLsgy37eJyTU4TXE7FQpKFi-_usQC7bwhfXvZuBU,3259
65
65
  machineconfig/jobs/installer/custom_dev/wezterm.py,sha256=73BzfUdY8mXM4l4jVFIBxR1qXSE4g_PAyxefanrVkFU,3555
66
66
  machineconfig/jobs/installer/custom_dev/winget.py,sha256=gLdwM20jKMf2bMV3BAcOg4MkuzwF09CU5OhXvLkPoHo,5738
67
- machineconfig/jobs/installer/linux_scripts/brave.sh,sha256=m01xquA4YZW3YrhJiTCvTZuLliELmRI1avYFyuE5-Ws,2119
68
- machineconfig/jobs/installer/linux_scripts/docker.sh,sha256=xP219QeQ5eLwhvOHsNYqOERMGdjBqvrL5jeoZj749XE,5347
69
- machineconfig/jobs/installer/linux_scripts/docker_start.sh,sha256=TiS-hWRltw66_p_Fq8gfkA_rqUIuwxoIkFZItVF6TXA,1478
70
- machineconfig/jobs/installer/linux_scripts/edge.sh,sha256=2JclQOi6sBTs2VQPsQWh6dPFRu1C36OyRREI0a76yJQ,1903
71
- machineconfig/jobs/installer/linux_scripts/nerdfont.sh,sha256=vSJQfGYVpWF2T1vz1zZuVXdeus_PWXdP7VquRQjsLwU,2351
67
+ machineconfig/jobs/installer/linux_scripts/brave.sh,sha256=_al_D5iZSwtlDRTeqjjK37nEWai8mrHFk-cZeVws9MY,1389
68
+ machineconfig/jobs/installer/linux_scripts/docker.sh,sha256=4NYWXCdvh6qlggVVH7FGe6jWkYuWoaJoDwLJvI4oRNQ,4471
69
+ machineconfig/jobs/installer/linux_scripts/docker_start.sh,sha256=8L2fLex6PU8nCpBii7yT8w4CvULZ9_JcDvxdCGJQ6cU,894
70
+ machineconfig/jobs/installer/linux_scripts/edge.sh,sha256=f1UI2Z2s0ToZ-QGlzkS1ThcRsTz5tMHOjxSFqfHK9SQ,1319
71
+ machineconfig/jobs/installer/linux_scripts/nerdfont.sh,sha256=ute9wl4BcqHUqavVHWJlnMcmugdb50LbnUVlU0cUVso,1475
72
72
  machineconfig/jobs/installer/linux_scripts/ngrok.sh,sha256=K-t62nhnAHxhppTmqjubIJRHozkNHfBxXGbn1Oz3w-A,287
73
- machineconfig/jobs/installer/linux_scripts/pgsql.sh,sha256=qe_yo4dM16B8L1VYIPqyLVvI1uns2jg7if_cokuOofY,2239
73
+ machineconfig/jobs/installer/linux_scripts/pgsql.sh,sha256=FbIteF6RVCcDdHl8seFFO7FuAX9siZpkwr9WVeKn5NA,1655
74
74
  machineconfig/jobs/installer/linux_scripts/q.sh,sha256=jXokwpfwotI7X5v1dXbYKZyH5ifzSCOek-d_BociyY0,228
75
- machineconfig/jobs/installer/linux_scripts/redis.sh,sha256=XNsnypuP0UQDdNnLQ1rHC8XRYeqeaM213i1aga5_Q0M,2940
76
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh,sha256=-thz4K7Eo_4IsNTQMLsmQdyMdVhW7NAMn5S2CB3-blE,3530
77
- machineconfig/jobs/installer/linux_scripts/vscode.sh,sha256=8S0nZpOeAdhpVHvygt6rs1sywCtjHNECfNNRhXMHWW8,5417
78
- machineconfig/jobs/installer/linux_scripts/warp-cli.sh,sha256=PVNLeYWdh3XEFllCVZDYIHBI42btjGlH5jbyXjJGz-Y,3033
79
- machineconfig/jobs/installer/linux_scripts/wezterm.sh,sha256=rfEcFHjsel-93A8qL1x3PJOKlgHoDjz5efE657Ozj_M,1878
75
+ machineconfig/jobs/installer/linux_scripts/redis.sh,sha256=GbElaDpkICLL6_XnkPev0UPZm4wQ8euGoOmrX2okneg,2064
76
+ machineconfig/jobs/installer/linux_scripts/timescaledb.sh,sha256=PTvo7KBpyxmWdpVoBK4cuPJ5slxJIPlVTfGQYnvKEQg,2508
77
+ machineconfig/jobs/installer/linux_scripts/vscode.sh,sha256=fI6lNCWUjlstNE319Y-rUtimvLLb9GcNh3z9t1KRaaE,4541
78
+ machineconfig/jobs/installer/linux_scripts/warp-cli.sh,sha256=dnMHZjyyYARwKFa1XZbIonLntIHTRGROyr2v4Eodd6s,2157
79
+ machineconfig/jobs/installer/linux_scripts/wezterm.sh,sha256=hZBS0CopWr-VrGhFSVjoWATFzHqCt6V41_N8bImAQRc,1294
80
80
  machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1,sha256=JsQfGAMkvirhiUmBNOifMlbum2PfHSs0-Akgj-J-WZw,3177
81
81
  machineconfig/jobs/linux/msc/cli_agents.sh,sha256=MMa_cd4yijI69c7tztTY1b0tl9I1ECTbxqLCShElhFU,184
82
- machineconfig/jobs/linux/msc/lid.sh,sha256=09LeoSaXCGjCn7YxPcIFQpHroYdglJlEtFU2agarh3I,1302
83
- machineconfig/jobs/linux/msc/network.sh,sha256=dmISsh0hioDheinqee3qHfo2k7ClFx6G_GfGDxuflmc,1796
82
+ machineconfig/jobs/linux/msc/lid.sh,sha256=nUw870lc5p8GA8KT3JI29ob2wKSVKzCvOHIxEjoSTOA,864
83
+ machineconfig/jobs/linux/msc/network.sh,sha256=j3kRV2mFEZK05XL2UdR9ssW2hkLH5rOYM7LU539UUEE,1358
84
84
  machineconfig/jobs/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
85
  machineconfig/jobs/python/python_ve_symlink.py,sha256=Mw2SK_TDLK5Ct_mEESh_Pd-Rn-B1oBSp7a_9y_eZbqw,1140
86
86
  machineconfig/jobs/python/vscode/api.py,sha256=Et0G-VUj13D1rshYMdDrw_CUYSO7Q6XRrEQO0WjVIKU,1683
@@ -102,12 +102,11 @@ machineconfig/profile/records/linux/apps_summary_report.md,sha256=l77oofA6Rliql0
102
102
  machineconfig/profile/records/windows/apps_summary_report.csv,sha256=nN5BoACBqXgKNczm2t5KaCLdDnxFCIscX8iRkWBm0a4,47
103
103
  machineconfig/profile/records/windows/apps_summary_report.md,sha256=O5hmAcpObaLmOjYLvHg9kkPJryqFwFaP8OsmfPwfR1o,137
104
104
  machineconfig/scripts/__init__.py,sha256=v0cMjnaIo39C3ltLiTf1S0fCTMAqWtEU7zrVenUj4PQ,71
105
- machineconfig/scripts/cloud/init.sh,sha256=zPn3_hwsHduaRxHs97TTn-BoLaJS44I2XwlLmZudQ80,4646
105
+ machineconfig/scripts/cloud/init.sh,sha256=0Pp2wEnWT989VcOc1nVXElO08u3ON-kFzWZGifOLWY0,3624
106
106
  machineconfig/scripts/linux/agents,sha256=zahzfVZ8_NIkC1TKMjcZqo0vsBtFl-xBhpz63sn29yA,96
107
107
  machineconfig/scripts/linux/choose_wezterm_theme,sha256=T7_vS-XvIZErRkfqtlyoZuHEVKFQQwhIeQMFIVTjtxg,145
108
108
  machineconfig/scripts/linux/cloud_copy,sha256=IU5TO7roSUYB-U4Km9bhAZOvlUr4nRJtJf4tqCPIPAs,100
109
109
  machineconfig/scripts/linux/cloud_mount,sha256=QnDUPUv9q3V14PONOwM4tAPHqOopF_uvjEN1tL24jZA,102
110
- machineconfig/scripts/linux/cloud_repo_sync,sha256=cUv2R7-SApsv6JZjESieg4uMZAjQP1G4egvrHMQsVrI,106
111
110
  machineconfig/scripts/linux/cloud_sync,sha256=Tf5yr9D5Ca5tiIpbUBE3QDqZF22tsh32XedW-aHZ-lQ,96
112
111
  machineconfig/scripts/linux/croshell,sha256=UZWGufTwtzCllRXrQ14YwCuAEZs--a1lJBW_kuNLhYg,100
113
112
  machineconfig/scripts/linux/devops,sha256=hQGs_cuu19dxeTB3CqZTJ6miZDwugfwh4NgrSlhWtOg,96
@@ -127,7 +126,7 @@ machineconfig/scripts/linux/mount_nw_drive,sha256=pNzHc7yZn5YIzn2BkpKvd5530Pqbes
127
126
  machineconfig/scripts/linux/mount_smb,sha256=7UN5EP1kuxYL_-CnyaH4f9Wuu2CgALDZpJ0mPcdvCiY,94
128
127
  machineconfig/scripts/linux/scheduler,sha256=Z9Wu0N9vWRbi4FoRbpcc4ydq4bVaDjZOXESR35ZN0rI,100
129
128
  machineconfig/scripts/linux/sessions,sha256=A4vxUDHnDhyph833iy-tBprgQ7av_DZ5t031PRrbqVQ,98
130
- machineconfig/scripts/linux/share_cloud.sh,sha256=75IzCm7Nob1wO-zlfaNyPPod1IjAsVCG5lcMFdXmiI4,3010
129
+ machineconfig/scripts/linux/share_cloud.sh,sha256=LzkioYG46siaiJdLqzLFt_-dim6-lx4PmHg3bPpH5Zo,1988
131
130
  machineconfig/scripts/linux/share_nfs,sha256=LDQZQ9TV7z2y7RtNHiO4Wb513MztyGjaAV-GzTGwUdc,1374
132
131
  machineconfig/scripts/linux/share_smb,sha256=HZX8BKgMlS9JzkGIYnxTsPvoxEBBuVLVkqzR3pmGFGY,20
133
132
  machineconfig/scripts/linux/skrg,sha256=JgQJGwxaChr148bDnpTB0rrqZMe2o2zGSDA9x_oUhWM,133
@@ -139,26 +138,27 @@ machineconfig/scripts/linux/warp-cli.sh,sha256=shFFZ9viet_DSEEHT8kxlGRHoJpO6o85p
139
138
  machineconfig/scripts/linux/wifi_conn,sha256=X4TH3OvcVZfOveSbF9WW8uXb4U_G7ZSnCERc7VYAqkc,95
140
139
  machineconfig/scripts/linux/z_ls,sha256=ATZtu0ccN3AKvAOxkwLq1xgQjJ3en5byEWJ3Q8afnNg,3340
141
140
  machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
- machineconfig/scripts/python/agents.py,sha256=JUrywdrPP-N4RAndTth_TQ-gIYbiHm92OdSkkPoI-gM,9949
141
+ machineconfig/scripts/python/agents.py,sha256=OgxGnsmhkPU3n-GsNUJeECWQ01_RP3OHppaSglc3Yf8,9931
143
142
  machineconfig/scripts/python/choose_wezterm_theme.py,sha256=pRXAGe2IpysYshsaF8CKEwHI8EGPtLcM8PtiAqM7vmM,3425
144
143
  machineconfig/scripts/python/cloud_copy.py,sha256=fcWbSo2nGiubtMYjGci8s5tVjZ9D-u8mteCawZmbw3I,8379
145
144
  machineconfig/scripts/python/cloud_mount.py,sha256=GwcXbd5ohoHGESfX5edtCEl2-umDDxH_AZapmFSzc9E,6740
146
- machineconfig/scripts/python/cloud_repo_sync.py,sha256=8VZa95YN8_pcY8k5KRDQAXxDTAMhOjnuXsT6NNnjUzg,9664
145
+ machineconfig/scripts/python/cloud_repo_sync.py,sha256=7CAJDZold4vg3nDLVC_1HAiDa9mgwHH6GbTSOnc5oMs,9064
147
146
  machineconfig/scripts/python/cloud_sync.py,sha256=RWGpAfJ9fnN18yNBSgN44dzA38Hmd4879JL5r2pcyrM,3514
148
147
  machineconfig/scripts/python/croshell.py,sha256=LgmwB17EVgNgRkXgwLOZPQWrHqSYDo7Kd-d6vkqA3PY,6459
149
- machineconfig/scripts/python/devops.py,sha256=wrjPaW_uSBfdjIpTqqA7MUL4khznCejnPSgKJyumYqA,7431
148
+ machineconfig/scripts/python/devops.py,sha256=x0hXYfCM2RR503svUbX7Iw1BRSB6VErbAkVO4Wt2NoA,7396
150
149
  machineconfig/scripts/python/dotfile.py,sha256=9W9i8Qbs6i2NfTq0knywB3StvE_sHaZYZ0RslTyoVz8,2734
151
150
  machineconfig/scripts/python/fire_jobs.py,sha256=iHcuADhRFlN2wgr7zUV1RAacfUPnnvvOGbEDzFM61gs,13476
152
151
  machineconfig/scripts/python/ftpx.py,sha256=QfQTp-6jQP6yxfbLc5sKxiMtTgAgc8sjN7d17_uLiZc,9400
153
152
  machineconfig/scripts/python/gh_models.py,sha256=3BLfW25mBRiPO5VKtVm-nMlKLv-PaZDw7mObajq6F6M,5538
154
- machineconfig/scripts/python/interactive.py,sha256=AeK4GoYpCOi8khAOKTpWZy4P53uYP2kxArFqXRpdvHI,13209
153
+ machineconfig/scripts/python/interactive.py,sha256=jrh_x9YYSfBz3uUAaascGEjc7uxGoMM0KCfoBqtfUpg,12767
155
154
  machineconfig/scripts/python/mount_nfs.py,sha256=aECrL64j9g-9rF49sVJAjGmzaoGgcMnl3g9v17kQF4c,3239
156
155
  machineconfig/scripts/python/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
157
156
  machineconfig/scripts/python/mount_ssh.py,sha256=k2fKq3f5dKq_7anrFOlqvJoI_3U4EWNHLRZ1o3Lsy6M,2268
158
157
  machineconfig/scripts/python/onetimeshare.py,sha256=xRd8by6qUm-od2Umty2MYsXyJwzXw-CBTd7VellNaKY,2498
159
158
  machineconfig/scripts/python/pomodoro.py,sha256=SPkfeoZGv8rylGiOyzQ7UK3aXZ3G2FIOuGkSuBUggOI,2019
160
- machineconfig/scripts/python/repos.py,sha256=gxjLTOpccJBiyh1w9pIAztflo1BZzzuazmYJD_CZiww,8000
159
+ machineconfig/scripts/python/repos.py,sha256=EytbeRBJf692KAtjrYdZKRCPrseNyIkH_kVe22WI-As,8218
161
160
  machineconfig/scripts/python/scheduler.py,sha256=rKhssuxkD697EY6qaV6CSdNhxpAQLDWO4fE8GMCQ9FA,3061
161
+ machineconfig/scripts/python/secure_repo.py,sha256=xwV3mHg918EmVjUH-gJuZFnzIoBhOnJspx4_ZxNhurk,979
162
162
  machineconfig/scripts/python/sessions.py,sha256=oCNGhhAYxr5DFyGCkL7jup3hPb4qCdBome2Qr9Evwao,8694
163
163
  machineconfig/scripts/python/sessions_multiprocess.py,sha256=jtFci9vugJ8sMiw3qupUtANICy2RSorT2W8sdppkRN4,2914
164
164
  machineconfig/scripts/python/share_terminal.py,sha256=-SNCDrQHBDUZw2cNNrEw3K3owzmZASBjd5deBKB49YY,5358
@@ -207,12 +207,20 @@ machineconfig/scripts/python/helpers/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAs
207
207
  machineconfig/scripts/python/helpers/helpers2.py,sha256=2QeQ2aii6hVc4S-oi3SVTSyPxKPTDUWBD7GnkCEr7Qs,7304
208
208
  machineconfig/scripts/python/helpers/helpers4.py,sha256=iKR5vVJygaDIpFXhcdma9jOpyxKtUhmqcmalFxJmY0w,4749
209
209
  machineconfig/scripts/python/helpers/helpers5.py,sha256=dPBvA9Tcyx9TMgM6On49A1CueGMhBdRzikDnlJGf3J0,1123
210
- machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=lc5d2eBiqlqDcTSR2hi_ifVUDj_E1G1foaIA2wARUJk,3931
210
+ machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=smxpX_dXO6vptkOUsOa0C4ufk2-Xf1PW1ptCO3Pmv4o,3931
211
211
  machineconfig/scripts/python/helpers_fire/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
- machineconfig/scripts/python/helpers_fire/fire_agents_help_launch.py,sha256=T1idFLOwOOxi2Q820vfseS2JgDdNkgt8TMgCXzeQahM,5066
212
+ machineconfig/scripts/python/helpers_fire/fire_agents_help_launch.py,sha256=wQb4RotkDgRrSB2pvJSVx_W4uLgtWNnm0f3CIjLp9SA,5500
213
213
  machineconfig/scripts/python/helpers_fire/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
214
- machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py,sha256=zKu8Vr6iucaGSkCm_Tkt_WrYU7-6Nript3coYyzTXzY,295
214
+ machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py,sha256=b3_EaG_rGuRxTuVmKZVbY-tawsfrNP3tvPNaNgZ9ohs,1069
215
215
  machineconfig/scripts/python/helpers_fire/fire_agents_load_balancer.py,sha256=mpqx3uaQdBXYieuvhdK-qsvLepf9oIMo3pwPj9mSEDI,1079
216
+ machineconfig/scripts/python/helpers_fire/fire_crush.json,sha256=YGuJF-qlMjhICPf0QnNfQlGNPsYrJJDlNcgmes0TFhM,252
217
+ machineconfig/scripts/python/helpers_fire/fire_crush.py,sha256=-yRdVcKX_1XTUzWKNoNW9rjmn_NsJuk1pB5EKC4TKpU,1622
218
+ machineconfig/scripts/python/helpers_fire/fire_cursor_agents.py,sha256=YYwZWa3yEbpIxUorL2Z1AOwrG9RqhtMQx5D4hsON_Vw,570
219
+ machineconfig/scripts/python/helpers_fire/fire_gemini.py,sha256=hF1ZwPWFWvlAv5O2qkwWCDA0K_b4PuHbcXqMScJGz7w,1400
220
+ machineconfig/scripts/python/helpers_fire/fire_q.py,sha256=hN7CQP03INt5uMqB75L3Up99zBkoK0uNYWr1Q76N6Ws,492
221
+ machineconfig/scripts/python/helpers_fire/prompt.txt,sha256=Ni6r-Dh0Ez2XwfOZl3MOMDhfn6BJ2z4IdK3wFvA3c_o,116
222
+ machineconfig/scripts/python/helpers_fire/template.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
+ machineconfig/scripts/python/helpers_fire/template.sh,sha256=6bFw04pIleOUAHs5bXlzorK-qrYwcq1WNIgaj4FByOo,1124
216
224
  machineconfig/scripts/python/helpers_fire_command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
217
225
  machineconfig/scripts/python/helpers_fire_command/cloud_manager.py,sha256=YN0DYLzPKtMBaks-EAVwFmkCu3XeHWMr1D21uqX5dDk,3429
218
226
  machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py,sha256=UUrGB2N_pR7PxFKtKTJxIUiS58WjQX0U50y2ft8Ul4w,4334
@@ -230,7 +238,6 @@ machineconfig/scripts/windows/agents.ps1,sha256=DqdrC_Xc2rwQ6kGzT0xh5CJz4B_0p5Zw
230
238
  machineconfig/scripts/windows/choose_wezterm_theme.ps1,sha256=LiXJ0a4LKjb6E-oH_bAg6DjegV4SqDUdiMp_svGCFlI,95
231
239
  machineconfig/scripts/windows/cloud_copy.ps1,sha256=llTFhN2uInZTcoZYZuuhJcf5Ifo5MF226I5MpOzvc3A,82
232
240
  machineconfig/scripts/windows/cloud_mount.ps1,sha256=wSQO5II8DbqktexRIuI-RUn8kVCEk-SWT7imZqd7Qdk,82
233
- machineconfig/scripts/windows/cloud_repo_sync.ps1,sha256=2M49l1VcDbix48kpK-qUzT9pmwjbJFX3C8VD3wgvLWg,87
234
241
  machineconfig/scripts/windows/cloud_sync.ps1,sha256=YrltSWkEKBoG7LMaB-gmot7IswRJEyhDH3fJ2Rlez6c,82
235
242
  machineconfig/scripts/windows/croshell.ps1,sha256=VkYdUKJLz7ahvCyXKWvNcCy9IjEDYgRub6rNhCtrJgo,80
236
243
  machineconfig/scripts/windows/devops.ps1,sha256=8HQCsE2V6Ec-Cd5UrhdzqClBc7KFV3_8wLpnQZqP9k8,78
@@ -263,7 +270,7 @@ machineconfig/scripts/windows/wifi_conn.ps1,sha256=M4D8gT4Ae0nG6zdhHTkmaF_Wu_w1I
263
270
  machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1,sha256=dGKAoP8WsQzHiAZjD8WT1Ne8RRQU8xf9HdH9bDkihh4,1720
264
271
  machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1,sha256=dr6t49UCnMHAhA0AR4gHluN0HvS5wzyygCNmjORfknU,2715
265
272
  machineconfig/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
- machineconfig/settings/broot/br.sh,sha256=UoiQN5ULJqCnwVudUonZ5_sO0TEHZE8LEROgArnDD7k,1747
273
+ machineconfig/settings/broot/br.sh,sha256=7CCJflIAirkiuo1suDCT8BzhVzDdJWEfbAxNDG4VPSI,1455
267
274
  machineconfig/settings/broot/brootcd.ps1,sha256=BB8uGnoVywxFWSgwsHxlbS8V4W_Qom3L1SedekGpgWA,877
268
275
  machineconfig/settings/broot/conf.toml,sha256=2C2ggpFR0Z-Sceu0iwHW0LFz45AjwyeCBD0PSP0VIoo,55
269
276
  machineconfig/settings/glow/glow.yml,sha256=59eFsIPBXRgJSVb6kcA7XHkWuLe0_wNandhc9KGykmE,245
@@ -363,22 +370,22 @@ machineconfig/settings/zellij/layouts/panes.kdl,sha256=KlhKtelBy4Z2ENV_pix4xE7NH
363
370
  machineconfig/settings/zellij/layouts/st.kdl,sha256=QXLRK7Wx05aKbKRHVmm4RspLYzPmEa44JMK1TwXQk58,523
364
371
  machineconfig/settings/zellij/layouts/st2.kdl,sha256=1FKTH3qQWYMWp_wPMreP7fKOTlVd4cfBy3J8fv4zCBc,1489
365
372
  machineconfig/settings/zellij/layouts/stacked_panes.kdl,sha256=usY8kKKwX1KUMXnWDivPg0i0drpM1Biw-tOnNZVjiZU,163
366
- machineconfig/setup_linux/__init__.py,sha256=acmXv9KPYt9jdPuLGp6O392r-hSdzayyjn-E808zq-M,365
367
- machineconfig/setup_linux/apps.sh,sha256=0PdPojpj2B-wOxE6ryvguKwBvL6vEt-43A1NdnwJumM,3198
368
- machineconfig/setup_linux/apps_desktop.sh,sha256=nBt_24tbdgKYK68w15ZiktgcEEJ7ytLoPWIrDluTkIQ,5077
369
- machineconfig/setup_linux/apps_gui.sh,sha256=ufsCqmShc8G3XyKBmchD1tJ85FZYjSDY2yiE_0Rl7v4,3031
370
- machineconfig/setup_linux/repos.sh,sha256=VHrMMadbu__P94eF5SRpy1OeXm1fNjAxFJjITioxKXQ,476
371
- machineconfig/setup_linux/ve.sh,sha256=VxjGbRif_I4hZ9vogOZYxQhFGqX91zlvVfELvvqRwB8,487
372
- machineconfig/setup_linux/nix/cli_installation.sh,sha256=AQ_wRmldeD1tPqCmU7qgz9ZrZFly4OYwBJDGRpb9IJ0,5470
373
+ machineconfig/setup_linux/__init__.py,sha256=QSu4qc1pIBd483WdakKFN3JW8iI6YCv2hWl8Kg_ymsw,381
374
+ machineconfig/setup_linux/apps.sh,sha256=dP_caRCXwtQe9XjAWiyV4KU0TxOdn07H8fl07DASdZg,3329
375
+ machineconfig/setup_linux/apps_desktop.sh,sha256=L2b_pcw3GiQdoAaoMO7J4bVvUoG5Pnuy9kDhV8JqprU,3325
376
+ machineconfig/setup_linux/apps_gui.sh,sha256=lFPYq7H2bRogPwW6QoEuSr9GnTjHS-jRM_eYg2rjOmM,2301
377
+ machineconfig/setup_linux/machineconfig.sh,sha256=VHrMMadbu__P94eF5SRpy1OeXm1fNjAxFJjITioxKXQ,476
378
+ machineconfig/setup_linux/uv.sh,sha256=VxjGbRif_I4hZ9vogOZYxQhFGqX91zlvVfELvvqRwB8,487
379
+ machineconfig/setup_linux/nix/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE31BXDP0Fmeta4--gpr-zJZlY,4010
373
380
  machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
374
381
  machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
375
382
  machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
376
383
  machineconfig/setup_linux/web_shortcuts/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
377
- machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=PHi3mlEJcEAH_aIYZIceDswkfEzt7qJqE35wnbOnecA,219
378
- machineconfig/setup_windows/__init__.py,sha256=M8DFE3a4BW7-EAH9-F0F6U3WfYMF8wiLfXf9f3Mv2Go,438
384
+ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=NwrHKEPHW1PIkl3Yi7BEQL8Mdsfs7_FX5Ci7cKOrGZg,219
385
+ machineconfig/setup_windows/__init__.py,sha256=wVpUqoLqXl-_-bRd7gZw_PJ7WZ2GtOqfFMzo_lIwieg,454
379
386
  machineconfig/setup_windows/apps.ps1,sha256=G5GqZ9G0aiQr_A-HaahtRdzpaTTdW6n3DRKMZWDTSPc,11214
380
- machineconfig/setup_windows/repos.ps1,sha256=gIQBOLIh65oUXgSjYMeYeD6lU1Bu80LZ59xqRc3T3BA,918
381
- machineconfig/setup_windows/ve.ps1,sha256=hYawJUKBAujEIYaORr4-OaFagTfnz0l-nVd_s7APZPI,310
387
+ machineconfig/setup_windows/machineconfig.ps1,sha256=gIQBOLIh65oUXgSjYMeYeD6lU1Bu80LZ59xqRc3T3BA,918
388
+ machineconfig/setup_windows/uv.ps1,sha256=hYawJUKBAujEIYaORr4-OaFagTfnz0l-nVd_s7APZPI,310
382
389
  machineconfig/setup_windows/others/docker.ps1,sha256=M8NfsSxH8YlmY92J4rSe1xWOwTW8IFrdgb8cI8Riu2E,311
383
390
  machineconfig/setup_windows/others/obs.ps1,sha256=2andchcXpxS3rqZjGaMpY5VShxTAKWvw6eCrayjuaLo,30
384
391
  machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhmNpuM0hgXTQgVJmIRR_7sdcY,182
@@ -391,9 +398,9 @@ machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
391
398
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
392
399
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
393
400
  machineconfig/utils/accessories.py,sha256=W_9dLzjwNTW5JQk_pe3B2ijQ1nA2-8Kdg2r7VBtzgQs,4340
394
- machineconfig/utils/code.py,sha256=CaDMxAoOKkjeMCr0Zw-yH0ghfz-4yvf3q7dPHKvHzrg,5634
395
- machineconfig/utils/installer.py,sha256=FitnRR2xOekkAygXgptKWdHHGdbXImKR8PcbgPmiPXw,10738
396
- machineconfig/utils/io.py,sha256=ZXB3aataS1IZ_0WMcCRSmoN1nbkvEO-bWYcs-TpngqU,2872
401
+ machineconfig/utils/code.py,sha256=O53GYyUNPaaT6ywD_JaV2KWEZQmwWGcpnTOMTnRnVog,5631
402
+ machineconfig/utils/installer.py,sha256=ZnhW_gRmGlq5uXwzNvIn-x1vXuOJxkzVqjNu188f37s,10465
403
+ machineconfig/utils/io.py,sha256=3axJBhNZCZiWJbzBvF7keDjCmqnbSKtoTnyDtq1I5BE,2871
397
404
  machineconfig/utils/links.py,sha256=GQExBsMoxewOhwIrNdERuzk9HVKcmWgNUGO-RzPMS6M,22588
398
405
  machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
399
406
  machineconfig/utils/options.py,sha256=vUO4Kej-vDOv64wHr2HNDyu6PATURpjd7xp6N8OOoJg,7083
@@ -414,20 +421,20 @@ machineconfig/utils/cloud/onedrive/transaction.py,sha256=m-aNcnWj_gfZVvJOSpkdIqj
414
421
  machineconfig/utils/files/ascii_art.py,sha256=cNJaJC07vx94fS44-tzgfbfBeCwXVrgpnWGBLUnfC38,5212
415
422
  machineconfig/utils/files/dbms.py,sha256=xJTg6H_AvZWsduuDaSs4_KdUu__rO8LXrE_hrcXTgNM,17203
416
423
  machineconfig/utils/files/headers.py,sha256=L54G11DfLadyZGyQXSQ7y8UI_tNvlld7zqP4qEAWL88,3647
417
- machineconfig/utils/files/read.py,sha256=VGraV3_73gGFwqYZ-GJzsfERsmO21n2JkFLKvck4fmc,4561
424
+ machineconfig/utils/files/read.py,sha256=R1bvIIdiFX9N0JyzUISqVfewYFq30cY3z0kqSlKGtuA,4566
418
425
  machineconfig/utils/files/ouch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
419
426
  machineconfig/utils/files/ouch/decompress.py,sha256=7qPaEkMerBBXzeZyFn8hLODHZJv1aty-yGgwBxLgVys,1413
420
427
  machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
421
428
  machineconfig/utils/installer_utils/github_release_bulk.py,sha256=WJf_qZlF02SmIc6C7o1h4Gy4gAaJAfeAS8O9s2Itj-k,6535
422
- machineconfig/utils/installer_utils/installer.py,sha256=H9wukQBSZDLlpB6Xn4Sa2hSV8iCUr9UQChcgOa3u-L8,9278
423
- machineconfig/utils/installer_utils/installer_abc.py,sha256=VTHe5O3jA6k6rnUnXhgnEf6mVvkVQlEuXjzYLEDgEAs,11140
424
- machineconfig/utils/installer_utils/installer_class.py,sha256=fN4Nfqn4tlSfQGW52A_Ipi6GT6utC30ZuSj5WM_yxIY,20252
429
+ machineconfig/utils/installer_utils/installer.py,sha256=CfBwtES-T0hhF-IHfbpyPn_tUz0YaVEk9sMV96oc0-w,9313
430
+ 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
425
432
  machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=Xbi59rU35AzR7HZZ8ZQ8aUu_FjSgijNqc8Sme0rCk2Y,2050
426
433
  machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoSpdmTIdgS9LS-RvE-QZ-D260tD3o,1214
427
434
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
428
435
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
429
- machineconfig-5.27.dist-info/METADATA,sha256=sYYuJDVjKlKL9-2rzI_-KkWQxxnb3os78fPYPyPe17o,2499
430
- machineconfig-5.27.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
431
- machineconfig-5.27.dist-info/entry_points.txt,sha256=2afE1mw-o4MUlfxyX73SV02XaQI4SV_LdL2r6_CzhPU,1074
432
- machineconfig-5.27.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
433
- machineconfig-5.27.dist-info/RECORD,,
436
+ machineconfig-5.28.dist-info/METADATA,sha256=lHeBGi9TCKHn9AZGejd2N2kqa8IsEBaEf3-sDdQK3to,2495
437
+ machineconfig-5.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
438
+ machineconfig-5.28.dist-info/entry_points.txt,sha256=8jXeXoGGihOkQtKV0VYlm6lq5ewDh2eXR_LcccRkbws,999
439
+ machineconfig-5.28.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
440
+ machineconfig-5.28.dist-info/RECORD,,
@@ -3,7 +3,6 @@ agents = machineconfig.scripts.python.agents:main_from_parser
3
3
  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
- cloud_repo_sync = machineconfig.scripts.python.cloud_repo_sync:args_parser
7
6
  cloud_sync = machineconfig.scripts.python.cloud_sync:arg_parser
8
7
  croshell = machineconfig.scripts.python.croshell:arg_parser
9
8
  devops = machineconfig.scripts.python.devops:app
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env bash
2
- uv run --python 3.13 --no-dev --project $HOME/code/machineconfig cloud_repo_sync "$@"
@@ -1 +0,0 @@
1
- uv run --python 3.13 --no-dev --project $HOME/code/machineconfig cloud_repo_sync $args
File without changes
File without changes