machineconfig 7.51__py3-none-any.whl → 7.52__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/jobs/installer/custom_dev/brave.py +1 -1
- machineconfig/jobs/installer/custom_dev/code.py +4 -1
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +0 -9
- machineconfig/jobs/installer/custom_dev/sysabc.py +140 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +2 -15
- machineconfig/jobs/installer/installer_data.json +689 -9
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +23 -72
- machineconfig/logger.py +0 -1
- machineconfig/profile/create_links_export.py +2 -2
- machineconfig/profile/mapper.toml +1 -4
- machineconfig/scripts/python/croshell.py +20 -43
- machineconfig/scripts/python/devops.py +1 -1
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/fire_jobs.py +52 -39
- machineconfig/scripts/python/helpers_croshell/crosh.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_config.py +3 -19
- machineconfig/scripts/python/helpers_devops/cli_self.py +12 -6
- machineconfig/scripts/python/helpers_devops/cli_utils.py +1 -80
- machineconfig/scripts/python/helpers_fire_command/file_wrangler.py +0 -17
- machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfg +1 -1
- machineconfig/scripts/python/helpers_repos/clone.py +0 -1
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +1 -1
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +1 -1
- machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +2 -2
- machineconfig/scripts/python/helpers_utils/path.py +106 -0
- machineconfig/scripts/python/interactive.py +9 -15
- machineconfig/scripts/python/sessions.py +2 -2
- machineconfig/scripts/python/utils.py +7 -3
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
- machineconfig/setup_linux/__init__.py +0 -1
- machineconfig/setup_linux/web_shortcuts/interactive.sh +11 -10
- machineconfig/setup_mac/__init__.py +2 -3
- machineconfig/setup_windows/__init__.py +0 -3
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +11 -10
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +15 -0
- machineconfig/utils/installer.py +11 -27
- machineconfig/utils/installer_utils/installer.py +9 -50
- machineconfig/utils/installer_utils/installer_abc.py +0 -68
- machineconfig/utils/io.py +0 -1
- machineconfig/utils/path_helper.py +57 -6
- machineconfig/utils/ssh.py +3 -3
- {machineconfig-7.51.dist-info → machineconfig-7.52.dist-info}/METADATA +5 -3
- {machineconfig-7.51.dist-info → machineconfig-7.52.dist-info}/RECORD +49 -51
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
- machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_mac/apps.sh +0 -73
- machineconfig/setup_windows/apps.ps1 +0 -62
- /machineconfig/{jobs/installer/powershell_scripts → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
- /machineconfig/{jobs/installer/powershell_scripts → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
- {machineconfig-7.51.dist-info → machineconfig-7.52.dist-info}/WHEEL +0 -0
- {machineconfig-7.51.dist-info → machineconfig-7.52.dist-info}/entry_points.txt +0 -0
- {machineconfig-7.51.dist-info → machineconfig-7.52.dist-info}/top_level.txt +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"""Devops Devapps Install"""
|
|
2
2
|
|
|
3
|
-
from machineconfig.utils.installer import dynamically_extract_installers_system_groups_from_scripts
|
|
4
3
|
import typer
|
|
5
4
|
from rich.console import Console
|
|
6
5
|
from rich.panel import Panel
|
|
7
6
|
from rich.table import Table
|
|
8
|
-
from typing import Optional,
|
|
9
|
-
from machineconfig.jobs.installer.package_groups import
|
|
7
|
+
from typing import Optional, Annotated
|
|
8
|
+
from machineconfig.jobs.installer.package_groups import PACKAGE_GROUP2NAMES
|
|
10
9
|
|
|
11
10
|
console = Console()
|
|
12
11
|
|
|
@@ -36,7 +35,7 @@ def _handle_installer_not_found(search_term: str, all_names: list[str]) -> None:
|
|
|
36
35
|
if len(all_names) > 10:
|
|
37
36
|
console.print(f" [dim]... and {len(all_names) - 10} more[/dim]")
|
|
38
37
|
|
|
39
|
-
panel = Panel(f"[bold blue]💡 Use 'ia' to interactively browse all available installers.[/bold blue]\n[bold blue]💡 Use one of the categories: {list(
|
|
38
|
+
panel = Panel(f"[bold blue]💡 Use 'ia' to interactively browse all available installers.[/bold blue]\n[bold blue]💡 Use one of the categories: {list(PACKAGE_GROUP2NAMES.keys())}[/bold blue]", title="[yellow]Helpful Tips[/yellow]", border_style="yellow")
|
|
40
39
|
console.print(panel)
|
|
41
40
|
|
|
42
41
|
|
|
@@ -63,7 +62,7 @@ def main(
|
|
|
63
62
|
else:
|
|
64
63
|
if group:
|
|
65
64
|
typer.echo("❌ You must provide a group name when using the --group/-g option.")
|
|
66
|
-
res =
|
|
65
|
+
res = get_group_name_to_repr()
|
|
67
66
|
console.print("[bold blue]Here are the available groups:[/bold blue]")
|
|
68
67
|
table = Table(show_header=True, header_style="bold magenta")
|
|
69
68
|
table.add_column("Group", style="cyan", no_wrap=True)
|
|
@@ -87,16 +86,12 @@ def main(
|
|
|
87
86
|
raise typer.Exit(1)
|
|
88
87
|
|
|
89
88
|
|
|
90
|
-
def
|
|
89
|
+
def get_group_name_to_repr() -> dict[str, str]:
|
|
91
90
|
# Build category options and maintain a mapping from display text to actual category name
|
|
92
91
|
category_display_to_name: dict[str, str] = {}
|
|
93
92
|
for group_name, group_values in PACKAGE_GROUP2NAMES.items():
|
|
94
93
|
display = f"📦 {group_name:<20}" + " -- " + f"{'|'.join(group_values):<60}"
|
|
95
94
|
category_display_to_name[display] = group_name
|
|
96
|
-
options_system = dynamically_extract_installers_system_groups_from_scripts()
|
|
97
|
-
for item in options_system:
|
|
98
|
-
display = f"📦 {item['appName']:<20} -- {item['doc']:<60}"
|
|
99
|
-
category_display_to_name[display] = item['appName']
|
|
100
95
|
return category_display_to_name
|
|
101
96
|
|
|
102
97
|
|
|
@@ -110,9 +105,9 @@ def install_interactively():
|
|
|
110
105
|
for x in installers:
|
|
111
106
|
installer_options.append(Installer(installer_data=x).get_description())
|
|
112
107
|
|
|
113
|
-
category_display_to_name =
|
|
108
|
+
category_display_to_name = get_group_name_to_repr()
|
|
114
109
|
options = list(category_display_to_name.keys()) + ["─" * 50] + installer_options
|
|
115
|
-
program_names = choose_from_options(multi=True, msg="Categories are prefixed with 📦", options=options, header="🚀 CHOOSE DEV APP OR CATEGORY", default="📦
|
|
110
|
+
program_names = choose_from_options(multi=True, msg="Categories are prefixed with 📦", options=options, header="🚀 CHOOSE DEV APP OR CATEGORY", default="📦 termabc", fzf=True)
|
|
116
111
|
installation_messages: list[str] = []
|
|
117
112
|
for _an_idx, a_program_name in enumerate(program_names):
|
|
118
113
|
if a_program_name.startswith("─"): # 50 dashes separator
|
|
@@ -120,7 +115,7 @@ def install_interactively():
|
|
|
120
115
|
if a_program_name.startswith("📦 "):
|
|
121
116
|
category_name = category_display_to_name.get(a_program_name)
|
|
122
117
|
if category_name:
|
|
123
|
-
install_group(package_group=
|
|
118
|
+
install_group(package_group=category_name)
|
|
124
119
|
else:
|
|
125
120
|
installer_idx = installer_options.index(a_program_name)
|
|
126
121
|
an_installer_data = installers[installer_idx]
|
|
@@ -140,43 +135,7 @@ def install_group(package_group: str):
|
|
|
140
135
|
installers_ = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=[package_group])
|
|
141
136
|
install_bulk(installers_data=installers_)
|
|
142
137
|
return
|
|
143
|
-
|
|
144
|
-
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
145
|
-
from machineconfig.utils.code import run_shell_script
|
|
146
|
-
for an_item in options_system:
|
|
147
|
-
if an_item["appName"] == package_group:
|
|
148
|
-
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))
|
|
149
|
-
console.print(panel)
|
|
150
|
-
program = an_item["fileNamePattern"][get_normalized_arch()][get_os_name()]
|
|
151
|
-
if program is not None:
|
|
152
|
-
run_shell_script(program)
|
|
153
|
-
break
|
|
154
|
-
else:
|
|
155
|
-
console.print(f"❌ [red]Group '{package_group}' not found.[/red]", style="bold")
|
|
156
|
-
_handle_installer_not_found(package_group, all_names=list(PACKAGE_GROUP2NAMES.keys()) + [item['appName'] for item in options_system])
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
def choose_from_system_package_groups(options_system: dict[str, tuple[str, str]]) -> str:
|
|
160
|
-
from machineconfig.utils.options import choose_from_options
|
|
161
|
-
display_options = []
|
|
162
|
-
for group_name, (description, _) in options_system.items():
|
|
163
|
-
if description:
|
|
164
|
-
display_options.append(f"{group_name:<20} - {description}")
|
|
165
|
-
else:
|
|
166
|
-
display_options.append(group_name)
|
|
167
|
-
program_names = choose_from_options(multi=True, msg="", options=sorted(display_options), header="🚀 CHOOSE DEV APP", fzf=True)
|
|
168
|
-
program = ""
|
|
169
|
-
for display_name in program_names:
|
|
170
|
-
# Extract the actual group name (everything before " - " if present)
|
|
171
|
-
group_name = display_name.split(" - ")[0].strip() if " - " in display_name else display_name.strip()
|
|
172
|
-
console.print(f"\n[bold cyan]⚙️ Installing: [yellow]{group_name}[/yellow][/bold cyan]", style="bold")
|
|
173
|
-
_, sub_program = options_system[group_name] # Extract content from tuple
|
|
174
|
-
if sub_program.startswith("#winget"):
|
|
175
|
-
sub_program = sub_program[1:]
|
|
176
|
-
program += "\n" + sub_program
|
|
177
|
-
return program
|
|
178
|
-
|
|
179
|
-
|
|
138
|
+
print(f"❌ ERROR: Unknown package group: {package_group}. Available groups are: {list(PACKAGE_GROUP2NAMES.keys())}")
|
|
180
139
|
def install_clis(clis_names: list[str]):
|
|
181
140
|
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
182
141
|
from machineconfig.utils.installer import get_installers
|
|
@@ -191,71 +191,3 @@ def check_if_installed_already(exe_name: str, version: Optional[str], use_cache:
|
|
|
191
191
|
return ("⚠️ NotInstalled", "None", version or "unknown")
|
|
192
192
|
|
|
193
193
|
|
|
194
|
-
def parse_apps_installer_linux(txt: str) -> dict[str, tuple[str, str]]:
|
|
195
|
-
"""Parse Linux shell installation scripts into logical chunks.
|
|
196
|
-
|
|
197
|
-
Splits scripts by # --GROUP:<name>:<description> comment signatures into a dictionary
|
|
198
|
-
mapping block names to (description, shell script content) tuples.
|
|
199
|
-
|
|
200
|
-
Returns:
|
|
201
|
-
dict[str, tuple[str, str]]: Dictionary mapping block/section names to (description, installation_script) tuples
|
|
202
|
-
"""
|
|
203
|
-
chunks = txt.split('# --GROUP:')
|
|
204
|
-
res: dict[str, tuple[str, str]] = {}
|
|
205
|
-
|
|
206
|
-
for chunk in chunks[1:]: # Skip first empty chunk before first group
|
|
207
|
-
lines = chunk.split('\n')
|
|
208
|
-
# First line contains the group name and description in format "NAME:DESCRIPTION"
|
|
209
|
-
group_line = lines[0].strip()
|
|
210
|
-
|
|
211
|
-
# Extract group name and description
|
|
212
|
-
if ':' in group_line:
|
|
213
|
-
parts = group_line.split(':', 1) # Split only on first colon
|
|
214
|
-
group_name = parts[0].strip()
|
|
215
|
-
group_description = parts[1].strip() if len(parts) > 1 else ""
|
|
216
|
-
else:
|
|
217
|
-
group_name = group_line
|
|
218
|
-
group_description = ""
|
|
219
|
-
|
|
220
|
-
# Rest is the content
|
|
221
|
-
content = '\n'.join(lines[1:]).strip()
|
|
222
|
-
|
|
223
|
-
if group_name and content:
|
|
224
|
-
res[group_name] = (group_description, content)
|
|
225
|
-
|
|
226
|
-
return res
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
def parse_apps_installer_windows(txt: str) -> dict[str, tuple[str, str]]:
|
|
230
|
-
"""Parse Windows PowerShell installation scripts into logical chunks.
|
|
231
|
-
|
|
232
|
-
Splits scripts by # --GROUP:<name>:<description> comment signatures into a dictionary
|
|
233
|
-
mapping block names to (description, PowerShell script content) tuples.
|
|
234
|
-
|
|
235
|
-
Returns:
|
|
236
|
-
dict[str, tuple[str, str]]: Dictionary mapping block/section names to (description, installation_script) tuples
|
|
237
|
-
"""
|
|
238
|
-
chunks = txt.split('# --GROUP:')
|
|
239
|
-
res: dict[str, tuple[str, str]] = {}
|
|
240
|
-
|
|
241
|
-
for chunk in chunks[1:]: # Skip first chunk before first group
|
|
242
|
-
lines = chunk.split('\n')
|
|
243
|
-
# First line contains the group name and description in format "NAME:DESCRIPTION"
|
|
244
|
-
group_line = lines[0].strip()
|
|
245
|
-
|
|
246
|
-
# Extract group name and description
|
|
247
|
-
if ':' in group_line:
|
|
248
|
-
parts = group_line.split(':', 1) # Split only on first colon
|
|
249
|
-
group_name = parts[0].strip()
|
|
250
|
-
group_description = parts[1].strip() if len(parts) > 1 else ""
|
|
251
|
-
else:
|
|
252
|
-
group_name = group_line
|
|
253
|
-
group_description = ""
|
|
254
|
-
|
|
255
|
-
# Rest is the content
|
|
256
|
-
content = '\n'.join(lines[1:]).strip()
|
|
257
|
-
|
|
258
|
-
if group_name and content:
|
|
259
|
-
res[group_name] = (group_description, content)
|
|
260
|
-
|
|
261
|
-
return res
|
machineconfig/utils/io.py
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
from machineconfig.utils.path_extended import PathExtended
|
|
2
|
-
from machineconfig.utils.options import choose_from_options
|
|
3
2
|
from machineconfig.utils.source_of_truth import EXCLUDE_DIRS
|
|
4
3
|
from rich.console import Console
|
|
5
4
|
from rich.panel import Panel
|
|
6
5
|
import platform
|
|
7
6
|
import subprocess
|
|
8
7
|
from pathlib import Path
|
|
9
|
-
|
|
8
|
+
from typing import Optional
|
|
10
9
|
|
|
11
10
|
console = Console()
|
|
12
11
|
|
|
@@ -83,6 +82,7 @@ def match_file_name(sub_string: str, search_root: PathExtended, suffixes: set[st
|
|
|
83
82
|
if len(reduced_scripts) == 1:
|
|
84
83
|
return PathExtended(reduced_scripts[0])
|
|
85
84
|
elif len(reduced_scripts) > 1:
|
|
85
|
+
from machineconfig.utils.options import choose_from_options
|
|
86
86
|
choice = choose_from_options(multi=False, msg="Multiple matches found", options=reduced_scripts, fzf=True)
|
|
87
87
|
return PathExtended(choice)
|
|
88
88
|
print(f"Result: This still generated {len(reduced_scripts)} results.")
|
|
@@ -97,19 +97,27 @@ def match_file_name(sub_string: str, search_root: PathExtended, suffixes: set[st
|
|
|
97
97
|
reduced_scripts = [a_potential_match for a_potential_match in partial_path_matches if sub_string in a_potential_match.as_posix()]
|
|
98
98
|
if len(reduced_scripts) == 1:
|
|
99
99
|
return PathExtended(reduced_scripts[0])
|
|
100
|
-
print(f"Result: This still generated {len(reduced_scripts)} results.")
|
|
100
|
+
print(f"Result: This still generated {len(reduced_scripts)} results.")
|
|
101
|
+
|
|
101
102
|
try:
|
|
102
|
-
|
|
103
|
+
|
|
104
|
+
if len(partial_path_matches) == 0:
|
|
105
|
+
print("No partial path matches found, trying to do fd with --no-ignore ...")
|
|
106
|
+
fzf_cmd = f"cd '{search_root_obj}'; fd --no-ignore --type file --strip-cwd-prefix | fzf --ignore-case --exact --query={sub_string}"
|
|
107
|
+
else:
|
|
108
|
+
fzf_cmd = f"cd '{search_root_obj}'; fd --type file --strip-cwd-prefix | fzf --ignore-case --exact --query={sub_string}"
|
|
103
109
|
console.print(Panel(f"🔍 Second attempt: SEARCH STRATEGY | Using fd to search for '{sub_string}' in '{search_root_obj}' ...\n{fzf_cmd}", title="Search Strategy", expand=False))
|
|
104
110
|
search_res_raw = subprocess.run(fzf_cmd, stdout=subprocess.PIPE, text=True, check=True, shell=True).stdout
|
|
105
|
-
search_res = search_res_raw.strip().split("
|
|
111
|
+
search_res = search_res_raw.strip().split("\n")
|
|
106
112
|
except subprocess.CalledProcessError as cpe:
|
|
107
113
|
console.print(Panel(f"❌ ERROR | FZF search failed with '{sub_string}' in '{search_root_obj}'.\n{cpe}", title="Error", expand=False))
|
|
108
114
|
import sys
|
|
109
|
-
|
|
110
115
|
sys.exit(f"💥 FILE NOT FOUND | Path {sub_string} does not exist @ root {search_root_obj}. No search results.")
|
|
111
116
|
if len(search_res) == 1:
|
|
112
117
|
return search_root_obj.joinpath(search_res_raw)
|
|
118
|
+
elif len(search_res) == 0:
|
|
119
|
+
msg = Panel(f"💥 FILE NOT FOUND | Path {sub_string} does not exist @ root {search_root_obj}. No search results", title="File Not Found", expand=False)
|
|
120
|
+
raise FileNotFoundError(msg)
|
|
113
121
|
|
|
114
122
|
print(f"⚠️ WARNING | Multiple search results found for `{sub_string}`:\n'{search_res}'")
|
|
115
123
|
cmd = f"cd '{search_root_obj}'; fd --type file | fzf --select-1 --query={sub_string}"
|
|
@@ -121,3 +129,46 @@ def match_file_name(sub_string: str, search_root: PathExtended, suffixes: set[st
|
|
|
121
129
|
msg = Panel(f"💥 FILE NOT FOUND | Path {sub_string} does not exist @ root {search_root_obj}. No search results", title="File Not Found", expand=False)
|
|
122
130
|
raise FileNotFoundError(msg) from cpe
|
|
123
131
|
return search_root_obj.joinpath(res)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def search_for_files_of_interest(path_obj: PathExtended, suffixes: set[str]):
|
|
135
|
+
if path_obj.joinpath(".venv").exists():
|
|
136
|
+
path_objects = path_obj.search("*", not_in=[".venv"])
|
|
137
|
+
files: list[PathExtended] = []
|
|
138
|
+
for a_path_obj in path_objects:
|
|
139
|
+
files += search_for_files_of_interest(path_obj=a_path_obj, suffixes=suffixes)
|
|
140
|
+
return files
|
|
141
|
+
if path_obj.is_file():
|
|
142
|
+
return [path_obj]
|
|
143
|
+
files: list[PathExtended] = []
|
|
144
|
+
for a_suffix in suffixes:
|
|
145
|
+
if a_suffix == ".py":
|
|
146
|
+
files += path_obj.search(pattern="*.py", r=True, not_in=["__init__.py"])
|
|
147
|
+
else:
|
|
148
|
+
files += path_obj.search(pattern=f"*{a_suffix}", r=True)
|
|
149
|
+
return files
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def get_choice_file(path: str, suffixes: Optional[set[str]]):
|
|
153
|
+
path_obj = sanitize_path(path)
|
|
154
|
+
if suffixes is None:
|
|
155
|
+
import platform
|
|
156
|
+
if platform.system() == "Windows":
|
|
157
|
+
suffixes = {".py", ".ps1", ".sh"}
|
|
158
|
+
elif platform.system() in ["Linux", "Darwin"]:
|
|
159
|
+
suffixes = {".py", ".sh"}
|
|
160
|
+
else:
|
|
161
|
+
suffixes = {".py"}
|
|
162
|
+
if not path_obj.exists():
|
|
163
|
+
print(f"🔍 Searching for file matching `{path}` under `{PathExtended.cwd()}`, but only if suffix matches {suffixes}")
|
|
164
|
+
choice_file = match_file_name(sub_string=path, search_root=PathExtended.cwd(), suffixes=suffixes)
|
|
165
|
+
elif path_obj.is_dir():
|
|
166
|
+
print(f"🔍 Searching recursively for Python, PowerShell and Shell scripts in directory `{path_obj}`")
|
|
167
|
+
files = search_for_files_of_interest(path_obj, suffixes=suffixes)
|
|
168
|
+
print(f"🔍 Got #{len(files)} results.")
|
|
169
|
+
from machineconfig.utils.options import choose_from_options
|
|
170
|
+
choice_file = choose_from_options(multi=False, options=files, fzf=True, msg="Choose one option")
|
|
171
|
+
choice_file = PathExtended(choice_file)
|
|
172
|
+
else:
|
|
173
|
+
choice_file = path_obj
|
|
174
|
+
return choice_file
|
machineconfig/utils/ssh.py
CHANGED
|
@@ -2,13 +2,13 @@ from typing import Callable, Optional, Any, Union, cast
|
|
|
2
2
|
import os
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
import platform
|
|
5
|
-
from machineconfig.scripts.python.
|
|
5
|
+
from machineconfig.scripts.python.helpers_utils.path import MachineSpecs
|
|
6
6
|
import rich.console
|
|
7
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>=7.
|
|
11
|
+
MACHINECONFIG_VERSION = "machineconfig>=7.52"
|
|
12
12
|
DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
|
|
13
13
|
|
|
14
14
|
class SSH:
|
|
@@ -113,7 +113,7 @@ class SSH:
|
|
|
113
113
|
if self.progress and self.task is not None:
|
|
114
114
|
self.progress.update(self.task, completed=transferred, total=total)
|
|
115
115
|
self.tqdm_wrap = RichProgressWrapper
|
|
116
|
-
from machineconfig.scripts.python.
|
|
116
|
+
from machineconfig.scripts.python.helpers_utils.path import get_machine_specs
|
|
117
117
|
self.local_specs: MachineSpecs = get_machine_specs()
|
|
118
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: machineconfig
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.52
|
|
4
4
|
Summary: Dotfiles management package
|
|
5
5
|
Author-email: Alex Al-Saffar <programmer@usa.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -65,7 +65,9 @@ iex (iwr bit.ly/cfgwindows).Content
|
|
|
65
65
|
iex (uvx machineconfig define)
|
|
66
66
|
# Permanent install:
|
|
67
67
|
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Skip if UV is already installed
|
|
68
|
-
|
|
68
|
+
uv tool install --upgrade --python 3.14 machineconfig both
|
|
69
|
+
devops config copy-assets
|
|
70
|
+
|
|
69
71
|
```
|
|
70
72
|
|
|
71
73
|
# Install On Linux and MacOS
|
|
@@ -77,7 +79,7 @@ uvx install --upgrade machineconfig
|
|
|
77
79
|
. <(uvx machineconfig define)
|
|
78
80
|
# Permanent install:
|
|
79
81
|
curl -LsSf https://astral.sh/uv/install.sh | sh # Skip if UV is already installed
|
|
80
|
-
|
|
82
|
+
uv tool install --upgrade --upgrade 3.14 machineconfig
|
|
81
83
|
```
|
|
82
84
|
|
|
83
85
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
machineconfig/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
2
|
-
machineconfig/logger.py,sha256=
|
|
2
|
+
machineconfig/logger.py,sha256=4LrXsRpU6O8Wa9CLhWBJdJusSh9IrJoWIEzTbRr3IwY,1380
|
|
3
3
|
machineconfig/cluster/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
machineconfig/cluster/remote/cloud_manager.py,sha256=8f5mIkAnXNjhVswlv49bEgAGLJIv_e_tNbI_wgPBo0Q,26041
|
|
5
5
|
machineconfig/cluster/remote/data_transfer.py,sha256=1QxIUetqlhmyl67icBx0nFZEZ7Z2DRjygXofKLMOz-0,4385
|
|
@@ -51,25 +51,26 @@ machineconfig/cluster/templates/cli_trogon.py,sha256=PFWGy8SFYIhT9r3ZV4oIEYfImsQ
|
|
|
51
51
|
machineconfig/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
52
|
machineconfig/jobs/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
53
|
machineconfig/jobs/installer/check_installations.py,sha256=hkHmmT7Bx3_QWRn2v8dCKOzAapFzqHRzbe-Q08GLnKE,10743
|
|
54
|
-
machineconfig/jobs/installer/installer_data.json,sha256=
|
|
55
|
-
machineconfig/jobs/installer/package_groups.py,sha256=
|
|
54
|
+
machineconfig/jobs/installer/installer_data.json,sha256=luCTMa15H3FIWO9cSc5Z2VTVud5lzV6wnk6oJKLPVm4,110054
|
|
55
|
+
machineconfig/jobs/installer/package_groups.py,sha256=QZ9Baup-CjWOc29uBGL-fFfXMzUTy_Gyy-pQit-ST7k,4642
|
|
56
56
|
machineconfig/jobs/installer/custom/boxes.py,sha256=ws8QRbDn48oKhbQntr54I0nSfkwINbprjTy0HOpuX40,1974
|
|
57
57
|
machineconfig/jobs/installer/custom/gh.py,sha256=gn7TUSrsLx7uqFqj1Z-iYglS0EYBSgtJ9jWHxaJIfXM,4119
|
|
58
58
|
machineconfig/jobs/installer/custom/hx.py,sha256=8Vy7NNCiXsyG_xl78TAYPYpiISNCDFiVJJRSZceq1Fk,8729
|
|
59
59
|
machineconfig/jobs/installer/custom_dev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
60
|
machineconfig/jobs/installer/custom_dev/alacritty.py,sha256=STXertp5pE6VVhcjAfZSKBxAC94S2HAzas646jwd4ow,2754
|
|
61
|
-
machineconfig/jobs/installer/custom_dev/brave.py,sha256=
|
|
61
|
+
machineconfig/jobs/installer/custom_dev/brave.py,sha256=1WTUgEHlpzA9POK6hMeL4-ZxDs_PvLm9q_l19edI_K8,2887
|
|
62
62
|
machineconfig/jobs/installer/custom_dev/bypass_paywall.py,sha256=ZF8yF2srljLChe1tOw_fEsalOkts4RpNwlzX9GtWh2g,1888
|
|
63
|
-
machineconfig/jobs/installer/custom_dev/code.py,sha256=
|
|
63
|
+
machineconfig/jobs/installer/custom_dev/code.py,sha256=YSmLCh4nxK9CHqeE5mOBAVkNRDRZVT8FAWggraHsiPA,2483
|
|
64
64
|
machineconfig/jobs/installer/custom_dev/cursor.py,sha256=3xoFAYFdZqurSHXeEG-vbG0KU1TNQpBMaMgL1eW6X4k,4326
|
|
65
65
|
machineconfig/jobs/installer/custom_dev/dubdb_adbc.py,sha256=okeKEVhgijS_iG-53StyzUJkPcSfIuI7HddJ0u4flds,829
|
|
66
66
|
machineconfig/jobs/installer/custom_dev/espanso.py,sha256=H1rZb4xnjs72lL0_mB0M4d7NrDyVv1sAG3NOkOrCB64,4137
|
|
67
67
|
machineconfig/jobs/installer/custom_dev/goes.py,sha256=SIRkpzkCeWMof0BnPuoEJy3KHNkVZs8J5DnoZJXb9TY,2130
|
|
68
68
|
machineconfig/jobs/installer/custom_dev/lvim.py,sha256=2-wbh_IClTFcFkSYk9EsRiv88-isSNIVX6dNZ1L5m8Q,2985
|
|
69
69
|
machineconfig/jobs/installer/custom_dev/nerdfont.py,sha256=dsPmiqP9AJCack7mNeJ8Qzo4dSOwC0bsupH0Hn3gqSg,4149
|
|
70
|
-
machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py,sha256=
|
|
70
|
+
machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py,sha256=bVUPigzov1v87tgKY-lWz3HDEHMI8dSTNDgB7--0o80,5620
|
|
71
71
|
machineconfig/jobs/installer/custom_dev/redis.py,sha256=bReDLsgy37eJyTU4TXE7FQpKFi-_usQC7bwhfXvZuBU,3259
|
|
72
|
-
machineconfig/jobs/installer/custom_dev/
|
|
72
|
+
machineconfig/jobs/installer/custom_dev/sysabc.py,sha256=XbktwRZjIb0lNEuVoxiCUprMnHTKJZgmCWydxwZYRSk,6458
|
|
73
|
+
machineconfig/jobs/installer/custom_dev/wezterm.py,sha256=GWVz4xJ419T2yT_uK7eH1lQjfu1db3CDKrD0Pd1ExYc,3190
|
|
73
74
|
machineconfig/jobs/installer/custom_dev/winget.py,sha256=gLdwM20jKMf2bMV3BAcOg4MkuzwF09CU5OhXvLkPoHo,5738
|
|
74
75
|
machineconfig/jobs/installer/linux_scripts/brave.sh,sha256=_al_D5iZSwtlDRTeqjjK37nEWai8mrHFk-cZeVws9MY,1389
|
|
75
76
|
machineconfig/jobs/installer/linux_scripts/docker.sh,sha256=4NYWXCdvh6qlggVVH7FGe6jWkYuWoaJoDwLJvI4oRNQ,4471
|
|
@@ -81,23 +82,19 @@ machineconfig/jobs/installer/linux_scripts/network.sh,sha256=j3kRV2mFEZK05XL2UdR
|
|
|
81
82
|
machineconfig/jobs/installer/linux_scripts/ngrok.sh,sha256=K-t62nhnAHxhppTmqjubIJRHozkNHfBxXGbn1Oz3w-A,287
|
|
82
83
|
machineconfig/jobs/installer/linux_scripts/pgsql.sh,sha256=FbIteF6RVCcDdHl8seFFO7FuAX9siZpkwr9WVeKn5NA,1655
|
|
83
84
|
machineconfig/jobs/installer/linux_scripts/q.sh,sha256=lPSHBeZm4z6xv5K3cYPiOkK0A-LaNSNJN2ysVb1Qa9Y,261
|
|
84
|
-
machineconfig/jobs/installer/linux_scripts/redis.sh,sha256
|
|
85
|
-
machineconfig/jobs/installer/linux_scripts/timescaledb.sh,sha256=PTvo7KBpyxmWdpVoBK4cuPJ5slxJIPlVTfGQYnvKEQg,2508
|
|
85
|
+
machineconfig/jobs/installer/linux_scripts/redis.sh,sha256=-Ur541bMwjq6TKrmvy-S5c_qoR8GlRpE6923USDylm8,2097
|
|
86
86
|
machineconfig/jobs/installer/linux_scripts/vscode.sh,sha256=fI6lNCWUjlstNE319Y-rUtimvLLb9GcNh3z9t1KRaaE,4541
|
|
87
87
|
machineconfig/jobs/installer/linux_scripts/warp-cli.sh,sha256=dnMHZjyyYARwKFa1XZbIonLntIHTRGROyr2v4Eodd6s,2157
|
|
88
88
|
machineconfig/jobs/installer/linux_scripts/wezterm.sh,sha256=hZBS0CopWr-VrGhFSVjoWATFzHqCt6V41_N8bImAQRc,1294
|
|
89
|
-
machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1,sha256=UbOApUB0UiAHANOnGFHIP3zY_UCtWBhT5I6vqPhwqgE,618
|
|
90
89
|
machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1,sha256=JsQfGAMkvirhiUmBNOifMlbum2PfHSs0-Akgj-J-WZw,3177
|
|
91
|
-
machineconfig/jobs/installer/powershell_scripts/openssh-server_add_key.ps1,sha256=91cL3K4H2saAuzOS1GxGicpc64ZDpgvPY39YPBWyxZI,269
|
|
92
|
-
machineconfig/jobs/installer/powershell_scripts/openssh-server_copy-ssh-id.ps1,sha256=-7pElYiGFXUvO4dp6rW0LXmNo65h3hFTHJWyHbmO3Xc,745
|
|
93
90
|
machineconfig/profile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
91
|
machineconfig/profile/backup.toml,sha256=Hb25sIdKVvLqOF62NgiOpGZxd45I6IhsNHu623RtfQQ,766
|
|
95
92
|
machineconfig/profile/bash_shell_profiles.md,sha256=mio0xkMTwO-F3fikWIfgcdQaPCmQrmkxJMNtZsTe9TI,514
|
|
96
93
|
machineconfig/profile/create_helper.py,sha256=jBwgf2r6Wid9LNXw_O8JpVmm7Vk5sZJWlN0qeIkQhjE,2986
|
|
97
94
|
machineconfig/profile/create_links.py,sha256=42U5dEu7fMnGBAqyhQ1VspFaZg3VssMMQSdpGEmpHnE,14199
|
|
98
|
-
machineconfig/profile/create_links_export.py,sha256=
|
|
95
|
+
machineconfig/profile/create_links_export.py,sha256=ha2M_QOTeloEOdZ1OoQb8eWWMm-d2VOKNIKgYbI6ezg,4963
|
|
99
96
|
machineconfig/profile/create_shell_profile.py,sha256=jjCwH3rNxVOcb9sgbZQsjYlKGfqhDvPxBDrkFLThT3c,7221
|
|
100
|
-
machineconfig/profile/mapper.toml,sha256=
|
|
97
|
+
machineconfig/profile/mapper.toml,sha256=9SOHwHbFCI6J9nGVk72RZZhSPBI2OWtfyTXcGz3cSaA,12701
|
|
101
98
|
machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
|
|
102
99
|
machineconfig/profile/records/linux/apps_summary_report.csv,sha256=pw9djvaRUPalKDLn2sl3odcbD2_Zx3aEupsQ8UPfaaY,2738
|
|
103
100
|
machineconfig/profile/records/linux/apps_summary_report.md,sha256=l77oofA6Rliql0ZgKGIZi8bstFoGyyGTxeS8p2PtOj0,5634
|
|
@@ -114,19 +111,19 @@ machineconfig/scripts/nu/wrap_mcfg.nu,sha256=9heiUHVkHjI_AMXT5QJJixk7ZK_hJNV_A8l
|
|
|
114
111
|
machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
112
|
machineconfig/scripts/python/agents.py,sha256=aVbLQDgpngXZm4taHcED4sAxyHvV2_Dz5VW3apPcQcY,10651
|
|
116
113
|
machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yyeehw_cU8,1263
|
|
117
|
-
machineconfig/scripts/python/croshell.py,sha256=
|
|
114
|
+
machineconfig/scripts/python/croshell.py,sha256=SE8UQuZRCuQ4HkHuGYpmmSKS78guMOJFmgTdJ7UViW8,7104
|
|
118
115
|
machineconfig/scripts/python/define.py,sha256=AtuVac6tJeDMcxtbWmQh1TH3dYAPSGFdO51b75zJVeI,717
|
|
119
|
-
machineconfig/scripts/python/devops.py,sha256=
|
|
116
|
+
machineconfig/scripts/python/devops.py,sha256=x7CnxOnZPSrCwjflnJ6sht1M7g0nzY2SxyPtmNputSA,2212
|
|
120
117
|
machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
|
|
121
118
|
machineconfig/scripts/python/explore.py,sha256=3kNglM1KYp57U8yrbWeHEslN458-xieRuFYsJAhrpIs,1247
|
|
122
|
-
machineconfig/scripts/python/fire_jobs.py,sha256=
|
|
119
|
+
machineconfig/scripts/python/fire_jobs.py,sha256=zLLgPfqCSpXBeU5kC4XEcojscZFy-K0K3dbbGqkTczU,13135
|
|
123
120
|
machineconfig/scripts/python/ftpx.py,sha256=8tmhKBZgSuhFZZYaT4JAIgeXMKmxJhxg5aJQFbbdtDg,9857
|
|
124
|
-
machineconfig/scripts/python/interactive.py,sha256=
|
|
121
|
+
machineconfig/scripts/python/interactive.py,sha256=2ETE45Ww9HHc6rudG-L9I2-N_mdOv9qMEdJ_05mhCz4,11268
|
|
125
122
|
machineconfig/scripts/python/machineconfig.py,sha256=l211lxHRcQ6BH7x3FwQHSJCYbYs6RJL5e0POjyWAW9A,3048
|
|
126
123
|
machineconfig/scripts/python/msearch.py,sha256=3NbwJFJtrvPSVyOfa6ogPjD-NVuRJHeAQ1WriDXCduU,737
|
|
127
|
-
machineconfig/scripts/python/sessions.py,sha256=
|
|
124
|
+
machineconfig/scripts/python/sessions.py,sha256=Mex8Y2NM0Z3JiO7-qEKew9lA29FfUDo_tB3-1jJ79bs,9532
|
|
128
125
|
machineconfig/scripts/python/terminal.py,sha256=PQ2C2flC2UngfeTNYhHLBiwj__kmE12gxZu2ivtr4Kg,5978
|
|
129
|
-
machineconfig/scripts/python/utils.py,sha256=
|
|
126
|
+
machineconfig/scripts/python/utils.py,sha256=9_-hCbLDrWMSCIfpHWcywG3lwN-hQeoa_OGOr5x_1WQ,3460
|
|
130
127
|
machineconfig/scripts/python/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
128
|
machineconfig/scripts/python/ai/generate_files.py,sha256=VfjKdwgF8O6E4oiRtfWNliibLmmwGe7f9ld6wpOsXTw,14498
|
|
132
129
|
machineconfig/scripts/python/ai/initai.py,sha256=P4-NCLJPWeNef_k-l4TQ92AB1Xm1k3xzdqSBIjmevnQ,1573
|
|
@@ -159,7 +156,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
|
|
|
159
156
|
machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
160
157
|
machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
|
|
161
158
|
machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
|
|
162
|
-
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=
|
|
159
|
+
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=VJjbAodVQZJZG0dIN7gBNioNy7NDKxn0W6My_Bl69YU,6932
|
|
163
160
|
machineconfig/scripts/python/helpers_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
164
161
|
machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py,sha256=YD6-rtudHNip8tx85amSmOZZIHBP9khq4az3dF41j6U,5934
|
|
165
162
|
machineconfig/scripts/python/helpers_agents/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
|
|
@@ -182,23 +179,23 @@ machineconfig/scripts/python/helpers_cloud/cloud_sync.py,sha256=ThfI4rvKG6IPzAo3
|
|
|
182
179
|
machineconfig/scripts/python/helpers_cloud/helpers2.py,sha256=3fXDiDlz5EDk_04YtPd-bjZcjUjmGTpgiQ1YMaGbD8g,7310
|
|
183
180
|
machineconfig/scripts/python/helpers_cloud/helpers5.py,sha256=dPBvA9Tcyx9TMgM6On49A1CueGMhBdRzikDnlJGf3J0,1123
|
|
184
181
|
machineconfig/scripts/python/helpers_croshell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
185
|
-
machineconfig/scripts/python/helpers_croshell/crosh.py,sha256=
|
|
182
|
+
machineconfig/scripts/python/helpers_croshell/crosh.py,sha256=enw3JpKQyYS7AzT6Ovap_7BLfNum9E_MKCGXK3AvUyQ,1643
|
|
186
183
|
machineconfig/scripts/python/helpers_croshell/pomodoro.py,sha256=SPkfeoZGv8rylGiOyzQ7UK3aXZ3G2FIOuGkSuBUggOI,2019
|
|
187
184
|
machineconfig/scripts/python/helpers_croshell/scheduler.py,sha256=rKhssuxkD697EY6qaV6CSdNhxpAQLDWO4fE8GMCQ9FA,3061
|
|
188
185
|
machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPhwcbAvCyJyTBd2iumJB5wmPdcTXz_Yvh8,4897
|
|
189
186
|
machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
190
187
|
machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
|
|
191
188
|
machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
192
|
-
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=
|
|
189
|
+
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=VLR7tH1SdR3ftWSNjyt0LHc1gRssYJXYvkLjtydxVOM,5007
|
|
193
190
|
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=SL6P3Ioib3P9OWG1GmULb5-l4ySYZ1RuuIDCHY4lCyU,3502
|
|
194
191
|
machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
|
|
195
192
|
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=u_2l5Cc3dFnh0seKrbH9j-Z0bUCrgy45MOM6HCjgkQg,7562
|
|
196
193
|
machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=mFrhosIFCCT70d82NYUxp9ta6BYeAHQNhsx7CEmWcg4,12478
|
|
197
|
-
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=
|
|
194
|
+
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=tnSFKRNc3nwreNqknK_g4BEBKCVWASlSMPoqoHHVkdE,6993
|
|
198
195
|
machineconfig/scripts/python/helpers_devops/cli_share_file.py,sha256=AL04784ncdP9ue5bKyqJfXrMksxjFKtuv_w353kQQsI,6298
|
|
199
196
|
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=S2xQ7sDVvfvGKcJNlquXj9Gc0ofk2EXnfvpRx2AWVD8,6278
|
|
200
197
|
machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
|
|
201
|
-
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=
|
|
198
|
+
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=711D0xntW9zKJne1YIIwjpuk_6mM90wfvBGlsxxVG44,8020
|
|
202
199
|
machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Dn8luB6QJzxKiiFSC-NMqiYddWZoca3A8eOjMYZDzTc,5598
|
|
203
200
|
machineconfig/scripts/python/helpers_devops/devops_status.py,sha256=PJVPhfhXq8der6Xd-_fjZfnizfM-RGfJApkRGhGBmNo,20525
|
|
204
201
|
machineconfig/scripts/python/helpers_devops/devops_update_repos.py,sha256=kSln8_-Wn7Qu0NaKdt-QTN_bBVyTIAWHH8xVYKK-vCM,10133
|
|
@@ -209,13 +206,13 @@ machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.ps1,sha
|
|
|
209
206
|
machineconfig/scripts/python/helpers_devops/themes/choose_wezterm_theme.py,sha256=pRXAGe2IpysYshsaF8CKEwHI8EGPtLcM8PtiAqM7vmM,3425
|
|
210
207
|
machineconfig/scripts/python/helpers_fire_command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
211
208
|
machineconfig/scripts/python/helpers_fire_command/cloud_manager.py,sha256=YN0DYLzPKtMBaks-EAVwFmkCu3XeHWMr1D21uqX5dDk,3429
|
|
212
|
-
machineconfig/scripts/python/helpers_fire_command/file_wrangler.py,sha256=
|
|
209
|
+
machineconfig/scripts/python/helpers_fire_command/file_wrangler.py,sha256=wiUtzjNzxChYNqwiYnR8lixxpYG72q21VxT0MocqJNY,6305
|
|
213
210
|
machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py,sha256=teioVhLI-skNpbYOJGo7WJEnz_FHzyidHff174CZSg8,4359
|
|
214
211
|
machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py,sha256=0aqH_ShEvmrzMC2oyWDds-CwtUqJNniNjp39-0wTpvQ,5391
|
|
215
212
|
machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
216
213
|
machineconfig/scripts/python/helpers_msearch/__init__.py,sha256=eZSLmDDBtML_JRn1BjU8IyzXEqjZ9-u3TYY6_hYsEKA,183
|
|
217
214
|
machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfag,sha256=u3EYNQ_WT8jP11V0DPXWWXmFj1rzgNBnRokVBdVZpmc,677
|
|
218
|
-
machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfg,sha256=
|
|
215
|
+
machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfg,sha256=Lqk5pMH1JiGeNzhUwdrz_zbWetOHeMp-m1wP0Ful3DE,1201
|
|
219
216
|
machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfrga,sha256=9K84gLZbxar19FE2bjbgdTztmyFyyCH7lELr6S9PwyA,454
|
|
220
217
|
machineconfig/scripts/python/helpers_msearch/scripts_linux/skrg,sha256=JgQJGwxaChr148bDnpTB0rrqZMe2o2zGSDA9x_oUhWM,133
|
|
221
218
|
machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfb.ps1,sha256=Bmngm2aY8hnPa3iKAOK6EPDYdKzGLUc81wYOnJhNoqg,149
|
|
@@ -230,17 +227,18 @@ machineconfig/scripts/python/helpers_navigator/main_app.py,sha256=R1vOBMUKaiFHOg
|
|
|
230
227
|
machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wdm7YpDBtfhwcPnSqDPFrV2LqbcSBWMT4,414
|
|
231
228
|
machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
|
|
232
229
|
machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
|
|
233
|
-
machineconfig/scripts/python/helpers_repos/clone.py,sha256=
|
|
234
|
-
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=
|
|
230
|
+
machineconfig/scripts/python/helpers_repos/clone.py,sha256=9RZgs2OD2RUH6UiZKCuUvRyweDBomAm2lDG2qJmhry0,5436
|
|
231
|
+
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=rdEhSET7wk-ykNa4RVAXksvveedqPpqy_9BkWY9UVh4,11271
|
|
235
232
|
machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
|
|
236
|
-
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=
|
|
233
|
+
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=DN3QabwQQFwy0tx4QxL6hb3lSVrd2_NjjK6yZ-2qltM,607
|
|
237
234
|
machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
|
|
238
235
|
machineconfig/scripts/python/helpers_repos/grource.py,sha256=lHxyfsIQr4pbu71Ekqu-9nohR7LXbN2wufw7LPTyOgM,14639
|
|
239
236
|
machineconfig/scripts/python/helpers_repos/record.py,sha256=FQo0swuJZOp0I2XGK-t1OQU4zJHmQ2z9zTpDD30Tmg4,11001
|
|
240
237
|
machineconfig/scripts/python/helpers_repos/sync.py,sha256=P0P7Dog2uFDvwxcLP3YHPwm6AtvCm6QOz1BLqw53xOo,3259
|
|
241
238
|
machineconfig/scripts/python/helpers_repos/update.py,sha256=cUIMUMm-50HrY6fzxSMZnFplhToVjVPZMm1j_otTha4,11060
|
|
242
239
|
machineconfig/scripts/python/helpers_sessions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
243
|
-
machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py,sha256=
|
|
240
|
+
machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py,sha256=F6D-e0v405UFy-aj_pNWudxZkstPvjYR0UXLx-PR8Ms,3136
|
|
241
|
+
machineconfig/scripts/python/helpers_utils/path.py,sha256=lqMciHZ_YURnT6L8ygrIS01fDSlylM8xUu0JU4iNaKE,3982
|
|
244
242
|
machineconfig/scripts/python/nw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
245
243
|
machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdCR90LwY6_9P7gKQzEE,9373
|
|
246
244
|
machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
|
|
@@ -261,7 +259,7 @@ machineconfig/scripts/windows/wrap_mcfg.ps1,sha256=tFCj4wK7B35Uf6kdGCRV7EIr1xZFT
|
|
|
261
259
|
machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
|
|
262
260
|
machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
|
|
263
261
|
machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
|
|
264
|
-
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=
|
|
262
|
+
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=LBQ-Qx0pqy36a-IDFE7ZLcntzdZN1b-sXo1lKQcpTJ8,322
|
|
265
263
|
machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
|
|
266
264
|
machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
|
|
267
265
|
machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
|
|
@@ -375,8 +373,7 @@ machineconfig/settings/zellij/layouts/panes.kdl,sha256=KlhKtelBy4Z2ENV_pix4xE7NH
|
|
|
375
373
|
machineconfig/settings/zellij/layouts/st.kdl,sha256=QXLRK7Wx05aKbKRHVmm4RspLYzPmEa44JMK1TwXQk58,523
|
|
376
374
|
machineconfig/settings/zellij/layouts/st2.kdl,sha256=1FKTH3qQWYMWp_wPMreP7fKOTlVd4cfBy3J8fv4zCBc,1489
|
|
377
375
|
machineconfig/settings/zellij/layouts/stacked_panes.kdl,sha256=usY8kKKwX1KUMXnWDivPg0i0drpM1Biw-tOnNZVjiZU,163
|
|
378
|
-
machineconfig/setup_linux/__init__.py,sha256=
|
|
379
|
-
machineconfig/setup_linux/apps.sh,sha256=XOEzhuwYNat83ybamUdnVhDaGf2wlQiT5wVNvz2aJYM,3262
|
|
376
|
+
machineconfig/setup_linux/__init__.py,sha256=Yx5W_0BHyt1iaibneHzEo27jd1DsfDl74j6mUJFn544,342
|
|
380
377
|
machineconfig/setup_linux/apps_desktop.sh,sha256=L2b_pcw3GiQdoAaoMO7J4bVvUoG5Pnuy9kDhV8JqprU,3325
|
|
381
378
|
machineconfig/setup_linux/apps_gui.sh,sha256=lFPYq7H2bRogPwW6QoEuSr9GnTjHS-jRM_eYg2rjOmM,2301
|
|
382
379
|
machineconfig/setup_linux/uv.sh,sha256=cyegPmMMB7B3OnVx9KxZiU1JQU3Z_oqboUgwzmW2W40,487
|
|
@@ -385,14 +382,12 @@ machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE3
|
|
|
385
382
|
machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
|
|
386
383
|
machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
|
|
387
384
|
machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
|
|
388
|
-
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=
|
|
389
|
-
machineconfig/setup_mac/__init__.py,sha256=
|
|
390
|
-
machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
|
|
385
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=7CU9mOFL1ynFTGqOuZtcHYJPiBL86HVNKyEob7PsM64,1593
|
|
386
|
+
machineconfig/setup_mac/__init__.py,sha256=PfdhwY4Ss-rfP7b4-9fvKwxCDtNAd-u1JdhFYnE7CwI,518
|
|
391
387
|
machineconfig/setup_mac/apps_gui.sh,sha256=3alvddg918oMlJB2aUWJWpGGoaq5atlxcaOwhnyXlRI,9517
|
|
392
388
|
machineconfig/setup_mac/uv.sh,sha256=CSN8oCBKS-LK1vJJqYOhAMcrouTf4Q_F3cpplc_ddMA,1157
|
|
393
389
|
machineconfig/setup_mac/ssh/openssh_setup.sh,sha256=TxfySnwFYg1UQLXmJbEQ2gfEWIT084F5JvNZI9ncpc0,3537
|
|
394
|
-
machineconfig/setup_windows/__init__.py,sha256=
|
|
395
|
-
machineconfig/setup_windows/apps.ps1,sha256=rc9M0T6pXK7QunucyF4o9KTULu5xUFOhWRC9uQJH8ho,11020
|
|
390
|
+
machineconfig/setup_windows/__init__.py,sha256=vBFYK6J3-N7tmbB5wqnJoHK7uMnCtI3Ln3BFHygxK9w,334
|
|
396
391
|
machineconfig/setup_windows/uv.ps1,sha256=ukk1Abh-q-RfpoEqI2XTE2dcQJmHk0VFF6WqkK3TW8Q,350
|
|
397
392
|
machineconfig/setup_windows/others/docker.ps1,sha256=M8NfsSxH8YlmY92J4rSe1xWOwTW8IFrdgb8cI8Riu2E,311
|
|
398
393
|
machineconfig/setup_windows/others/obs.ps1,sha256=2andchcXpxS3rqZjGaMpY5VShxTAKWvw6eCrayjuaLo,30
|
|
@@ -400,25 +395,28 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
|
|
|
400
395
|
machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
|
|
401
396
|
machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
|
|
402
397
|
machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
|
|
403
|
-
machineconfig/setup_windows/
|
|
398
|
+
machineconfig/setup_windows/ssh/openssh-server_add_key.ps1,sha256=91cL3K4H2saAuzOS1GxGicpc64ZDpgvPY39YPBWyxZI,269
|
|
399
|
+
machineconfig/setup_windows/ssh/openssh-server_copy-ssh-id.ps1,sha256=-7pElYiGFXUvO4dp6rW0LXmNo65h3hFTHJWyHbmO3Xc,745
|
|
400
|
+
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=hxyXqZjknqGMy5VxEg9ilWa34vwCSt9n4IssNMNFn9A,1926
|
|
401
|
+
machineconfig/setup_windows/web_shortcuts/quick_init.ps1,sha256=8a5O6sFHkPxNpQxYn8hTqyS5otUZXDWLuMB0AJhJSgA,628
|
|
404
402
|
machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
405
403
|
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
|
|
406
404
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
407
405
|
machineconfig/utils/accessories.py,sha256=Rs8R0GUb2Ub6YimkgXHnI02CShS5BKlrZdCigVxfPlk,4339
|
|
408
406
|
machineconfig/utils/code.py,sha256=oI5x0lZFj7MoGc32v-POhs1h20PGZnyCS5KUWRzYQZI,7825
|
|
409
|
-
machineconfig/utils/installer.py,sha256=
|
|
410
|
-
machineconfig/utils/io.py,sha256=
|
|
407
|
+
machineconfig/utils/installer.py,sha256=cXR0AWVuhAl1th37GlS7qBmEdKIqAaCIXAEiBYUu2as,9476
|
|
408
|
+
machineconfig/utils/io.py,sha256=6kXNd3t6FCHxZzmPOIKTCdXDRnSdHoy4IqcthwBbYGY,6456
|
|
411
409
|
machineconfig/utils/links.py,sha256=m5-MfendBa8YiPPyS-lWiuu6Ru1-jU3hg3BYQgIaWg8,25012
|
|
412
410
|
machineconfig/utils/meta.py,sha256=4ocYH3Zi6bVN6FVgXoGIfoasV6oxi67I9rQ8hvyYinc,9892
|
|
413
411
|
machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
|
|
414
412
|
machineconfig/utils/options.py,sha256=VWYx3EKJxIp-CJ8gDGYdjclKSc1tMUhyrC8v3seeneo,7447
|
|
415
413
|
machineconfig/utils/path_extended.py,sha256=F9xjmuJ4JMqI6Ap2Hypvfz81BlBe-VsN0CfBaHWGEnQ,49293
|
|
416
|
-
machineconfig/utils/path_helper.py,sha256=
|
|
414
|
+
machineconfig/utils/path_helper.py,sha256=VnsWxAKSniw-GZ5zUie56463vTjaFDyoMnH2Xf88HO8,10557
|
|
417
415
|
machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,10957
|
|
418
416
|
machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
|
|
419
417
|
machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
|
|
420
418
|
machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
|
|
421
|
-
machineconfig/utils/ssh.py,sha256=
|
|
419
|
+
machineconfig/utils/ssh.py,sha256=OAdG1v2P4vcdrnip287J5Lx_FPCWa8tgJkmczpdRO5Y,39262
|
|
422
420
|
machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
|
|
423
421
|
machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
|
|
424
422
|
machineconfig/utils/upgrade_packages.py,sha256=e4iJn_9vL2zCJxAR2dhKJjM0__ALKgI5yB1uBRxSjhQ,6994
|
|
@@ -439,16 +437,16 @@ machineconfig/utils/files/ouch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
|
439
437
|
machineconfig/utils/files/ouch/decompress.py,sha256=7qPaEkMerBBXzeZyFn8hLODHZJv1aty-yGgwBxLgVys,1413
|
|
440
438
|
machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
441
439
|
machineconfig/utils/installer_utils/github_release_bulk.py,sha256=WJf_qZlF02SmIc6C7o1h4Gy4gAaJAfeAS8O9s2Itj-k,6535
|
|
442
|
-
machineconfig/utils/installer_utils/installer.py,sha256=
|
|
443
|
-
machineconfig/utils/installer_utils/installer_abc.py,sha256=
|
|
440
|
+
machineconfig/utils/installer_utils/installer.py,sha256=2xhzgAyifm5sHsb0y6d94UMWwRpGWMmsCCalsrnRHKA,9023
|
|
441
|
+
machineconfig/utils/installer_utils/installer_abc.py,sha256=_QihkKgi7-IGrQQoy8muD0iL_n65ebvqDgiv43sCudI,8984
|
|
444
442
|
machineconfig/utils/installer_utils/installer_class.py,sha256=t9OlHF3br7zuYuLuO75voedRPrDmo9YOXSDxRNXe3Jk,17188
|
|
445
443
|
machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=d3pwhmE-EuHPxaIoTTZeUdDUEK9QqtimV8zO3vV-7N4,2052
|
|
446
444
|
machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoSpdmTIdgS9LS-RvE-QZ-D260tD3o,1214
|
|
447
445
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
448
446
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
449
447
|
machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
450
|
-
machineconfig-7.
|
|
451
|
-
machineconfig-7.
|
|
452
|
-
machineconfig-7.
|
|
453
|
-
machineconfig-7.
|
|
454
|
-
machineconfig-7.
|
|
448
|
+
machineconfig-7.52.dist-info/METADATA,sha256=5EP7Tav_IS2J8azuDWuksYZ4we1zrvkCxTbwbYFdrN4,3466
|
|
449
|
+
machineconfig-7.52.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
450
|
+
machineconfig-7.52.dist-info/entry_points.txt,sha256=_JNgkzaa_gVAWyZ6UwPwXXQqURRSvAGhrVQ1RiU2sHc,746
|
|
451
|
+
machineconfig-7.52.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
452
|
+
machineconfig-7.52.dist-info/RECORD,,
|