machineconfig 7.79__py3-none-any.whl → 7.83__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/yazi.py +120 -0
- machineconfig/jobs/installer/custom_dev/nerdfont.py +1 -1
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +26 -12
- machineconfig/jobs/installer/custom_dev/sysabc.py +0 -5
- machineconfig/jobs/installer/installer_data.json +162 -94
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/profile/create_helper.py +0 -12
- machineconfig/profile/mapper.toml +2 -2
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +1 -0
- machineconfig/scripts/python/croshell.py +4 -4
- machineconfig/scripts/python/env_manager/env_manager_tui.py +204 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_config.py +10 -0
- machineconfig/scripts/python/helpers_devops/cli_nw.py +15 -16
- machineconfig/scripts/python/helpers_devops/cli_self.py +4 -4
- machineconfig/scripts/python/helpers_devops/cli_terminal.py +2 -5
- machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfg +2 -2
- machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfg.ps1 +58 -1
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +1 -1
- machineconfig/scripts/python/helpers_repos/count_lines.py +40 -11
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +1 -1
- machineconfig/scripts/python/helpers_utils/path.py +7 -4
- machineconfig/scripts/python/msearch.py +37 -7
- machineconfig/scripts/python/utils.py +3 -3
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
- machineconfig/settings/yazi/init.lua +4 -0
- machineconfig/settings/yazi/keymap_linux.toml +11 -4
- machineconfig/settings/yazi/theme.toml +4 -0
- machineconfig/settings/yazi/yazi_linux.toml +84 -0
- machineconfig/settings/yazi/yazi_windows.toml +58 -0
- machineconfig/setup_linux/web_shortcuts/interactive.sh +10 -10
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +10 -10
- machineconfig/utils/installer_utils/github_release_bulk.py +104 -62
- machineconfig/utils/installer_utils/install_from_url.py +122 -102
- machineconfig/utils/installer_utils/installer_class.py +15 -72
- machineconfig/utils/installer_utils/installer_cli.py +29 -44
- machineconfig/utils/installer_utils/installer_helper.py +100 -0
- machineconfig/utils/installer_utils/installer_runner.py +5 -8
- machineconfig/utils/ssh_utils/abc.py +2 -2
- machineconfig/utils/ssh_utils/wsl.py +44 -2
- {machineconfig-7.79.dist-info → machineconfig-7.83.dist-info}/METADATA +2 -2
- {machineconfig-7.79.dist-info → machineconfig-7.83.dist-info}/RECORD +45 -47
- machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfag +0 -17
- machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfrga +0 -21
- machineconfig/scripts/python/helpers_msearch/scripts_linux/skrg +0 -4
- machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfb.ps1 +0 -3
- machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfrga.bat +0 -20
- machineconfig/settings/yazi/yazi.toml +0 -17
- machineconfig/setup_linux/others/cli_installation.sh +0 -137
- {machineconfig-7.79.dist-info → machineconfig-7.83.dist-info}/WHEEL +0 -0
- {machineconfig-7.79.dist-info → machineconfig-7.83.dist-info}/entry_points.txt +0 -0
- {machineconfig-7.79.dist-info → machineconfig-7.83.dist-info}/top_level.txt +0 -0
|
@@ -1,9 +1,23 @@
|
|
|
1
|
-
"""Devops Devapps Install
|
|
1
|
+
"""Devops Devapps Install
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
sudo apt update && sudo apt install -y \
|
|
5
|
+
git gcc g++ clang \
|
|
6
|
+
yasm nasm pkg-config \
|
|
7
|
+
meson ninja-build \
|
|
8
|
+
autoconf automake libtool \
|
|
9
|
+
libx11-dev libxext-dev libxrandr-dev libxrender-dev libxss-dev \
|
|
10
|
+
libvdpau-dev libgl1-mesa-dev libegl1-mesa-dev libxv-dev \
|
|
11
|
+
libasound2-dev libpulse-dev \
|
|
12
|
+
libfribidi-dev libfreetype-dev libfontconfig1-dev libharfbuzz-dev \
|
|
13
|
+
libjpeg-dev libssl-dev zlib1g-dev python3-pip
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from machineconfig.utils.installer_utils.installer_helper import get_group_name_to_repr
|
|
3
19
|
import typer
|
|
4
20
|
from typing import Annotated, Optional
|
|
5
|
-
from machineconfig.jobs.installer.package_groups import PACKAGE_GROUP2NAMES
|
|
6
|
-
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
7
21
|
|
|
8
22
|
|
|
9
23
|
|
|
@@ -27,6 +41,7 @@ def main_installer_cli(
|
|
|
27
41
|
console = Console()
|
|
28
42
|
|
|
29
43
|
typer.echo("❌ You must provide a group name when using the --group/-g option.")
|
|
44
|
+
from machineconfig.utils.installer_utils.installer_helper import get_group_name_to_repr
|
|
30
45
|
res = get_group_name_to_repr()
|
|
31
46
|
console.print("[bold blue]Here are the available groups:[/bold blue]")
|
|
32
47
|
table = Table(show_header=True, header_style="bold magenta")
|
|
@@ -51,13 +66,7 @@ def main_installer_cli(
|
|
|
51
66
|
raise typer.Exit(1)
|
|
52
67
|
|
|
53
68
|
|
|
54
|
-
|
|
55
|
-
# Build category options and maintain a mapping from display text to actual category name
|
|
56
|
-
category_display_to_name: dict[str, str] = {}
|
|
57
|
-
for group_name, group_values in PACKAGE_GROUP2NAMES.items():
|
|
58
|
-
display = f"📦 {group_name:<20}" + " -- " + f"{'|'.join(group_values):<60}"
|
|
59
|
-
category_display_to_name[display] = group_name
|
|
60
|
-
return category_display_to_name
|
|
69
|
+
|
|
61
70
|
|
|
62
71
|
|
|
63
72
|
def install_interactively():
|
|
@@ -97,6 +106,7 @@ def install_group(package_group: str):
|
|
|
97
106
|
from rich.console import Console
|
|
98
107
|
from rich.panel import Panel
|
|
99
108
|
# from rich.table import Table
|
|
109
|
+
from machineconfig.jobs.installer.package_groups import PACKAGE_GROUP2NAMES
|
|
100
110
|
if package_group in PACKAGE_GROUP2NAMES:
|
|
101
111
|
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))
|
|
102
112
|
console = Console()
|
|
@@ -106,59 +116,34 @@ def install_group(package_group: str):
|
|
|
106
116
|
return
|
|
107
117
|
console = Console()
|
|
108
118
|
console.print(f"❌ ERROR: Unknown package group: {package_group}. Available groups are: {list(PACKAGE_GROUP2NAMES.keys())}")
|
|
109
|
-
def _handle_installer_not_found(search_term: str, all_names: list[str]) -> None: # type: ignore
|
|
110
|
-
"""Handle installer not found with friendly suggestions using fuzzy matching."""
|
|
111
|
-
from difflib import get_close_matches
|
|
112
|
-
from rich.console import Console
|
|
113
|
-
from rich.panel import Panel
|
|
114
|
-
from rich.table import Table
|
|
115
|
-
close_matches = get_close_matches(search_term, all_names, n=5, cutoff=0.4)
|
|
116
|
-
console = Console()
|
|
117
|
-
|
|
118
|
-
console.print(f"\n❌ '[red]{search_term}[/red]' was not found.", style="bold")
|
|
119
|
-
if close_matches:
|
|
120
|
-
console.print("🤔 Did you mean one of these?", style="yellow")
|
|
121
|
-
table = Table(show_header=False, box=None, pad_edge=False)
|
|
122
|
-
for i, match in enumerate(close_matches, 1):
|
|
123
|
-
table.add_row(f"[cyan]{i}.[/cyan]", f"[green]{match}[/green]")
|
|
124
|
-
console.print(table)
|
|
125
|
-
else:
|
|
126
|
-
console.print("📋 Here are some available options:", style="blue")
|
|
127
|
-
# Show first 10 installers as examples
|
|
128
|
-
if len(all_names) > 10:
|
|
129
|
-
sample_names = all_names[:10]
|
|
130
|
-
else:
|
|
131
|
-
sample_names = all_names
|
|
132
|
-
table = Table(show_header=False, box=None, pad_edge=False)
|
|
133
|
-
for i, name in enumerate(sample_names, 1):
|
|
134
|
-
table.add_row(f"[cyan]{i}.[/cyan]", f"[green]{name}[/green]")
|
|
135
|
-
console.print(table)
|
|
136
|
-
if len(all_names) > 10:
|
|
137
|
-
console.print(f" [dim]... and {len(all_names) - 10} more[/dim]")
|
|
138
119
|
|
|
139
|
-
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")
|
|
140
|
-
console.print(panel)
|
|
141
120
|
|
|
142
121
|
def install_clis(clis_names: list[str]):
|
|
143
122
|
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
144
123
|
from machineconfig.utils.installer_utils.installer_runner import get_installers
|
|
145
124
|
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
146
125
|
from rich.console import Console
|
|
147
|
-
|
|
126
|
+
all_installers_data = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=None)
|
|
148
127
|
total_messages: list[str] = []
|
|
149
128
|
for a_cli_name in clis_names:
|
|
150
129
|
if "github.com" in a_cli_name.lower():
|
|
151
130
|
from machineconfig.utils.installer_utils.install_from_url import install_from_github_url
|
|
152
131
|
install_from_github_url(github_url=a_cli_name)
|
|
153
132
|
continue
|
|
133
|
+
elif a_cli_name.startswith("https://") or a_cli_name.startswith("http://"):
|
|
134
|
+
print(f"⏳ Installing from binary URL: {a_cli_name} ...")
|
|
135
|
+
from machineconfig.utils.installer_utils.install_from_url import install_from_binary_url
|
|
136
|
+
install_from_binary_url(a_cli_name)
|
|
137
|
+
continue
|
|
154
138
|
selected_installer = None
|
|
155
|
-
for installer in
|
|
139
|
+
for installer in all_installers_data:
|
|
156
140
|
app_name = installer["appName"]
|
|
157
141
|
if app_name.lower() == a_cli_name.lower():
|
|
158
142
|
selected_installer = installer
|
|
159
143
|
break
|
|
160
144
|
if selected_installer is None:
|
|
161
|
-
|
|
145
|
+
from machineconfig.utils.installer_utils.installer_helper import handle_installer_not_found
|
|
146
|
+
handle_installer_not_found(a_cli_name, all_installers_data)
|
|
162
147
|
return None
|
|
163
148
|
message = Installer(selected_installer).install_robust(version=None) # finish the task
|
|
164
149
|
total_messages.append(message)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
from machineconfig.jobs.installer.package_groups import PACKAGE_GROUP2NAMES
|
|
2
|
+
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def get_group_name_to_repr() -> dict[str, str]:
|
|
7
|
+
# Build category options and maintain a mapping from display text to actual category name
|
|
8
|
+
category_display_to_name: dict[str, str] = {}
|
|
9
|
+
for group_name, group_values in PACKAGE_GROUP2NAMES.items():
|
|
10
|
+
display = f"📦 {group_name:<20}" + " -- " + f"{'|'.join(group_values):<60}"
|
|
11
|
+
category_display_to_name[display] = group_name
|
|
12
|
+
return category_display_to_name
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def handle_installer_not_found(search_term: str, app_apps: list[InstallerData]) -> None: # type: ignore
|
|
16
|
+
"""Handle installer not found with friendly suggestions using fuzzy matching."""
|
|
17
|
+
from difflib import get_close_matches
|
|
18
|
+
from rich.console import Console
|
|
19
|
+
from rich.panel import Panel
|
|
20
|
+
from rich.table import Table
|
|
21
|
+
all_names = sorted([inst["appName"] for inst in app_apps])
|
|
22
|
+
name_to_doc = {inst["appName"]: inst["doc"] for inst in app_apps}
|
|
23
|
+
all_descriptions = {f"{inst['appName']}: {inst['doc']}": inst["appName"] for inst in app_apps}
|
|
24
|
+
|
|
25
|
+
close_name_matches = get_close_matches(search_term, all_names, n=5, cutoff=0.4)
|
|
26
|
+
close_description_matches = get_close_matches(search_term, list(all_descriptions.keys()), n=5, cutoff=0.4)
|
|
27
|
+
|
|
28
|
+
search_lower = search_term.lower()
|
|
29
|
+
substring_matches = [
|
|
30
|
+
inst["appName"]
|
|
31
|
+
for inst in app_apps
|
|
32
|
+
if search_lower in inst["appName"].lower() or search_lower in inst["doc"].lower()
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
ordered_matches: list[str] = list(
|
|
36
|
+
dict.fromkeys(
|
|
37
|
+
close_name_matches
|
|
38
|
+
+ [all_descriptions[desc] for desc in close_description_matches]
|
|
39
|
+
+ substring_matches
|
|
40
|
+
)
|
|
41
|
+
)
|
|
42
|
+
top_matches = ordered_matches[:10]
|
|
43
|
+
console = Console()
|
|
44
|
+
|
|
45
|
+
console.print(f"\n❌ '[red]{search_term}[/red]' was not found.", style="bold")
|
|
46
|
+
if top_matches:
|
|
47
|
+
console.print("🤔 Did you mean one of these?", style="yellow")
|
|
48
|
+
table = Table(show_header=True, header_style="bold", box=None, pad_edge=False)
|
|
49
|
+
table.add_column("#", justify="right", width=3)
|
|
50
|
+
table.add_column("Installer", style="green")
|
|
51
|
+
table.add_column("Description", style="dim", overflow="fold")
|
|
52
|
+
for i, match in enumerate(top_matches, 1):
|
|
53
|
+
table.add_row(f"[cyan]{i}[/cyan]", match, name_to_doc.get(match, ""))
|
|
54
|
+
console.print(table)
|
|
55
|
+
else:
|
|
56
|
+
console.print("📋 Here are some available options:", style="blue")
|
|
57
|
+
# Show first 10 installers as examples
|
|
58
|
+
if len(all_names) > 10:
|
|
59
|
+
sample_names = all_names[:10]
|
|
60
|
+
else:
|
|
61
|
+
sample_names = all_names
|
|
62
|
+
table = Table(show_header=True, header_style="bold", box=None, pad_edge=False)
|
|
63
|
+
table.add_column("#", justify="right", width=3)
|
|
64
|
+
table.add_column("Installer", style="green")
|
|
65
|
+
table.add_column("Description", style="dim", overflow="fold")
|
|
66
|
+
for i, name in enumerate(sample_names, 1):
|
|
67
|
+
table.add_row(f"[cyan]{i}[/cyan]", name, name_to_doc.get(name, ""))
|
|
68
|
+
console.print(table)
|
|
69
|
+
if len(all_names) > 10:
|
|
70
|
+
console.print(f" [dim]... and {len(all_names) - 10} more[/dim]")
|
|
71
|
+
|
|
72
|
+
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")
|
|
73
|
+
console.print(panel)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def install_deb_package(downloaded: Path) -> None:
|
|
77
|
+
from rich import print as rprint
|
|
78
|
+
from rich.panel import Panel
|
|
79
|
+
print(f"📦 Installing .deb package: {downloaded}")
|
|
80
|
+
import platform
|
|
81
|
+
import subprocess
|
|
82
|
+
assert platform.system() == "Linux"
|
|
83
|
+
result = subprocess.run(f"sudo nala install -y {downloaded}", shell=True, capture_output=True, text=True)
|
|
84
|
+
success = result.returncode == 0 and result.stderr == ""
|
|
85
|
+
if not success:
|
|
86
|
+
from rich.console import Group
|
|
87
|
+
desc = "Installing .deb"
|
|
88
|
+
sub_panels = []
|
|
89
|
+
if result.stdout:
|
|
90
|
+
sub_panels.append(Panel(result.stdout, title="STDOUT", style="blue"))
|
|
91
|
+
if result.stderr:
|
|
92
|
+
sub_panels.append(Panel(result.stderr, title="STDERR", style="red"))
|
|
93
|
+
group_content = Group(f"❌ {desc} failed\nReturn code: {result.returncode}", *sub_panels)
|
|
94
|
+
rprint(Panel(group_content, title=desc, style="red"))
|
|
95
|
+
print("🗑️ Cleaning up .deb package...")
|
|
96
|
+
if downloaded.is_file():
|
|
97
|
+
downloaded.unlink(missing_ok=True)
|
|
98
|
+
elif downloaded.is_dir():
|
|
99
|
+
import shutil
|
|
100
|
+
shutil.rmtree(downloaded, ignore_errors=True)
|
|
@@ -92,7 +92,11 @@ def get_installed_cli_apps():
|
|
|
92
92
|
|
|
93
93
|
|
|
94
94
|
def get_installers(os: OPERATING_SYSTEMS, arch: CPU_ARCHITECTURES, which_cats: Optional[list[str]]) -> list[InstallerData]:
|
|
95
|
-
|
|
95
|
+
import machineconfig.jobs.installer as module
|
|
96
|
+
from pathlib import Path
|
|
97
|
+
res_raw: InstallerDataFiles = read_json(Path(module.__file__).parent.joinpath("installer_data.json"))
|
|
98
|
+
res_all: list[InstallerData] = res_raw["installers"]
|
|
99
|
+
|
|
96
100
|
acceptable_apps_names: list[str] | None = None
|
|
97
101
|
if which_cats is not None:
|
|
98
102
|
acceptable_apps_names = []
|
|
@@ -116,13 +120,6 @@ def get_installers(os: OPERATING_SYSTEMS, arch: CPU_ARCHITECTURES, which_cats: O
|
|
|
116
120
|
return all_installers
|
|
117
121
|
|
|
118
122
|
|
|
119
|
-
def get_all_installer_data_files() -> list[InstallerData]:
|
|
120
|
-
import machineconfig.jobs.installer as module
|
|
121
|
-
from pathlib import Path
|
|
122
|
-
res_raw: InstallerDataFiles = read_json(Path(module.__file__).parent.joinpath("installer_data.json"))
|
|
123
|
-
res_final: list[InstallerData] = res_raw["installers"]
|
|
124
|
-
return res_final
|
|
125
|
-
|
|
126
123
|
|
|
127
124
|
def install_bulk(installers_data: list[InstallerData], safe: bool = False, jobs: int = 10, fresh: bool = False):
|
|
128
125
|
print("🚀 BULK INSTALLATION PROCESS 🚀")
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import platform
|
|
4
4
|
|
|
5
|
-
UV_RUN_CMD = "$HOME/.local/bin/uv run" if platform.system() != "Windows" else """& "$env:USERPROFILE/.local/bin/uv" run"""
|
|
6
|
-
MACHINECONFIG_VERSION = "machineconfig>=7.
|
|
5
|
+
UV_RUN_CMD = """ "$HOME/.local/bin/uv" run """ if platform.system() != "Windows" else """& "$env:USERPROFILE/.local/bin/uv" run"""
|
|
6
|
+
MACHINECONFIG_VERSION = "machineconfig>=7.83"
|
|
7
7
|
DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
|
|
8
8
|
|
|
@@ -75,10 +75,18 @@ def _resolve_windows_home_from_wsl() -> Path:
|
|
|
75
75
|
return _infer_windows_home_from_permissions()
|
|
76
76
|
|
|
77
77
|
|
|
78
|
+
def _decode_wsl_output(raw_bytes: bytes) -> str:
|
|
79
|
+
try:
|
|
80
|
+
return raw_bytes.decode("utf-16-le")
|
|
81
|
+
except UnicodeDecodeError:
|
|
82
|
+
return raw_bytes.decode()
|
|
83
|
+
|
|
84
|
+
|
|
78
85
|
def _get_single_wsl_distribution() -> str:
|
|
79
|
-
process = subprocess.run(["wsl.exe", "-l"], capture_output=True, text=
|
|
86
|
+
process = subprocess.run(["wsl.exe", "-l"], capture_output=True, text=False, check=True)
|
|
87
|
+
stdout = _decode_wsl_output(process.stdout).replace("\ufeff", "")
|
|
80
88
|
distributions: list[str] = []
|
|
81
|
-
for raw_line in
|
|
89
|
+
for raw_line in stdout.splitlines():
|
|
82
90
|
line = raw_line.strip()
|
|
83
91
|
if not line or line.lower().startswith("windows subsystem for linux"):
|
|
84
92
|
continue
|
|
@@ -128,6 +136,20 @@ def _run_windows_copy_command(source_path: Path, target_path: Path) -> None:
|
|
|
128
136
|
)
|
|
129
137
|
|
|
130
138
|
|
|
139
|
+
def _ensure_symlink(link_path: Path, target_path: Path) -> None:
|
|
140
|
+
if not target_path.exists():
|
|
141
|
+
raise FileNotFoundError(target_path)
|
|
142
|
+
if link_path.is_symlink():
|
|
143
|
+
existing_target = Path(os.path.realpath(link_path))
|
|
144
|
+
desired_target = Path(os.path.realpath(target_path))
|
|
145
|
+
if os.path.normcase(str(existing_target)) == os.path.normcase(str(desired_target)):
|
|
146
|
+
return
|
|
147
|
+
link_path.unlink()
|
|
148
|
+
elif link_path.exists():
|
|
149
|
+
raise FileExistsError(link_path)
|
|
150
|
+
link_path.symlink_to(target_path, target_is_directory=True)
|
|
151
|
+
|
|
152
|
+
|
|
131
153
|
def copy_when_inside_wsl(source: Path | str, target: Path | str, overwrite: bool) -> None:
|
|
132
154
|
_ensure_wsl_environment()
|
|
133
155
|
source_relative = _ensure_relative_path(source)
|
|
@@ -163,6 +185,26 @@ def copy_when_inside_windows(source: Path | str, target: Path | str, overwrite:
|
|
|
163
185
|
_run_windows_copy_command(source_path, target_path)
|
|
164
186
|
|
|
165
187
|
|
|
188
|
+
def link_wsl_and_windows() -> None:
|
|
189
|
+
system = platform.system()
|
|
190
|
+
if system == "Darwin":
|
|
191
|
+
raise RuntimeError("link_wsl_and_windows is not designed for macOS")
|
|
192
|
+
try:
|
|
193
|
+
_ensure_wsl_environment()
|
|
194
|
+
except RuntimeError:
|
|
195
|
+
try:
|
|
196
|
+
_ensure_windows_environment()
|
|
197
|
+
except RuntimeError as exc:
|
|
198
|
+
raise RuntimeError("link_wsl_and_windows must run inside Windows or WSL") from exc
|
|
199
|
+
target_path = _resolve_wsl_home_on_windows()
|
|
200
|
+
link_path = Path.home() / "wsl"
|
|
201
|
+
_ensure_symlink(link_path, target_path)
|
|
202
|
+
return
|
|
203
|
+
target_path = _resolve_windows_home_from_wsl()
|
|
204
|
+
link_path = Path.home() / "win"
|
|
205
|
+
_ensure_symlink(link_path, target_path)
|
|
206
|
+
|
|
207
|
+
|
|
166
208
|
if __name__ == "__main__":
|
|
167
209
|
copy_when_inside_wsl(Path("projects/source.txt"), Path("windows_projects/source.txt"), True)
|
|
168
210
|
copy_when_inside_windows(Path("documents/example.txt"), Path("linux_documents/example.txt"), True)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: machineconfig
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.83
|
|
4
4
|
Summary: Dotfiles management package
|
|
5
5
|
Author-email: Alex Al-Saffar <programmer@usa.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -53,7 +53,7 @@ Requires-Dist: python-magic>=0.4.27; extra == "plot"
|
|
|
53
53
|
|
|
54
54
|
# 🧠 Welcome to **Machineconfig**
|
|
55
55
|
|
|
56
|
-
**Machineconfig** is a cli-based **
|
|
56
|
+
**Machineconfig** is a cli-based **Stack Manager** — It is a *Package Manager*, *Configuration Manager*, *Automation Tool*, *Dotfiles Manager*, *Data Solution*, and *Code Manager*, among other functionalities covered, all rolled into one seamless experience, that is consistent across different platforms.
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
## 💡 Motivation
|
|
@@ -51,11 +51,12 @@ 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=
|
|
54
|
+
machineconfig/jobs/installer/installer_data.json,sha256=XxDM-PfzyaOiKExqystdDy1_pJtetSCTj46MleSPwP0,117456
|
|
55
55
|
machineconfig/jobs/installer/package_groups.py,sha256=AE1sPeEI6i7uLE_rMavA2m1skb27aYZIfjH0ukeGDYc,4938
|
|
56
56
|
machineconfig/jobs/installer/custom/boxes.py,sha256=C6R5T1INjBUKwaYPOnpx13N1VrNxHsbJ-j-llujuujY,1991
|
|
57
57
|
machineconfig/jobs/installer/custom/gh.py,sha256=gn7TUSrsLx7uqFqj1Z-iYglS0EYBSgtJ9jWHxaJIfXM,4119
|
|
58
58
|
machineconfig/jobs/installer/custom/hx.py,sha256=nI8g49zsmksx5ZZOcvcaM_gqWesOjobcG8wTzhrIA64,9021
|
|
59
|
+
machineconfig/jobs/installer/custom/yazi.py,sha256=CP--J6mQWCssbUFo633Uoar5_tdY6orM1U0g5miAXJM,4201
|
|
59
60
|
machineconfig/jobs/installer/custom_dev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
61
|
machineconfig/jobs/installer/custom_dev/alacritty.py,sha256=STXertp5pE6VVhcjAfZSKBxAC94S2HAzas646jwd4ow,2754
|
|
61
62
|
machineconfig/jobs/installer/custom_dev/brave.py,sha256=1WTUgEHlpzA9POK6hMeL4-ZxDs_PvLm9q_l19edI_K8,2887
|
|
@@ -67,10 +68,10 @@ machineconfig/jobs/installer/custom_dev/dubdb_adbc.py,sha256=FsE0q9Vx1M2BFtLNiKg
|
|
|
67
68
|
machineconfig/jobs/installer/custom_dev/espanso.py,sha256=H1rZb4xnjs72lL0_mB0M4d7NrDyVv1sAG3NOkOrCB64,4137
|
|
68
69
|
machineconfig/jobs/installer/custom_dev/goes.py,sha256=SIRkpzkCeWMof0BnPuoEJy3KHNkVZs8J5DnoZJXb9TY,2130
|
|
69
70
|
machineconfig/jobs/installer/custom_dev/lvim.py,sha256=2-wbh_IClTFcFkSYk9EsRiv88-isSNIVX6dNZ1L5m8Q,2985
|
|
70
|
-
machineconfig/jobs/installer/custom_dev/nerdfont.py,sha256=
|
|
71
|
-
machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py,sha256=
|
|
71
|
+
machineconfig/jobs/installer/custom_dev/nerdfont.py,sha256=FdBM2jhfx0Lktdppt-7wBeERfgFXMlTAieTHIh5XKxA,4174
|
|
72
|
+
machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py,sha256=EQrooSjtqw3YvOfD9z8JaVrQShZbzGh3QPLiHPrKSEs,6017
|
|
72
73
|
machineconfig/jobs/installer/custom_dev/redis.py,sha256=bReDLsgy37eJyTU4TXE7FQpKFi-_usQC7bwhfXvZuBU,3259
|
|
73
|
-
machineconfig/jobs/installer/custom_dev/sysabc.py,sha256=
|
|
74
|
+
machineconfig/jobs/installer/custom_dev/sysabc.py,sha256=EPZEfCPj1s5cfjQ4lulw1_5YFtsv7q932WXsXoeN0TQ,5976
|
|
74
75
|
machineconfig/jobs/installer/custom_dev/wezterm.py,sha256=yQqRpnaj7I_2q-Ge9HX0leK5-ntUCWpkqgH09cgmh-Q,3063
|
|
75
76
|
machineconfig/jobs/installer/custom_dev/winget.py,sha256=gLdwM20jKMf2bMV3BAcOg4MkuzwF09CU5OhXvLkPoHo,5738
|
|
76
77
|
machineconfig/jobs/installer/linux_scripts/brave.sh,sha256=_al_D5iZSwtlDRTeqjjK37nEWai8mrHFk-cZeVws9MY,1389
|
|
@@ -86,15 +87,15 @@ machineconfig/jobs/installer/linux_scripts/q.sh,sha256=lPSHBeZm4z6xv5K3cYPiOkK0A
|
|
|
86
87
|
machineconfig/jobs/installer/linux_scripts/redis.sh,sha256=-Ur541bMwjq6TKrmvy-S5c_qoR8GlRpE6923USDylm8,2097
|
|
87
88
|
machineconfig/jobs/installer/linux_scripts/vscode.sh,sha256=fI6lNCWUjlstNE319Y-rUtimvLLb9GcNh3z9t1KRaaE,4541
|
|
88
89
|
machineconfig/jobs/installer/linux_scripts/wezterm.sh,sha256=hZBS0CopWr-VrGhFSVjoWATFzHqCt6V41_N8bImAQRc,1294
|
|
89
|
-
machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1,sha256=
|
|
90
|
+
machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1,sha256=Y7uof8naGBNv79heNXJ4KyH5sXDjDm0KwCKnshpprR4,6494
|
|
90
91
|
machineconfig/profile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
92
|
machineconfig/profile/backup.toml,sha256=Hb25sIdKVvLqOF62NgiOpGZxd45I6IhsNHu623RtfQQ,766
|
|
92
93
|
machineconfig/profile/bash_shell_profiles.md,sha256=mio0xkMTwO-F3fikWIfgcdQaPCmQrmkxJMNtZsTe9TI,514
|
|
93
|
-
machineconfig/profile/create_helper.py,sha256=
|
|
94
|
+
machineconfig/profile/create_helper.py,sha256=Y67lB_KBBKoI8aLvJyW7JiI4hFMeDxSGtqclT7jdzGA,2497
|
|
94
95
|
machineconfig/profile/create_links.py,sha256=42U5dEu7fMnGBAqyhQ1VspFaZg3VssMMQSdpGEmpHnE,14199
|
|
95
96
|
machineconfig/profile/create_links_export.py,sha256=WfswDxxp7yXkAIDC-7wwc0skdivrCQNRJUS3rqUZMq8,5251
|
|
96
97
|
machineconfig/profile/create_shell_profile.py,sha256=jjCwH3rNxVOcb9sgbZQsjYlKGfqhDvPxBDrkFLThT3c,7221
|
|
97
|
-
machineconfig/profile/mapper.toml,sha256=
|
|
98
|
+
machineconfig/profile/mapper.toml,sha256=tW2DPZ4sH-W9DSJ29AqBxR1WvubHY6BVyr9orQ_EboE,12715
|
|
98
99
|
machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
|
|
99
100
|
machineconfig/profile/records/linux/apps_summary_report.csv,sha256=pw9djvaRUPalKDLn2sl3odcbD2_Zx3aEupsQ8UPfaaY,2738
|
|
100
101
|
machineconfig/profile/records/linux/apps_summary_report.md,sha256=l77oofA6Rliql0ZgKGIZi8bstFoGyyGTxeS8p2PtOj0,5634
|
|
@@ -110,7 +111,7 @@ machineconfig/scripts/nu/wrap_mcfg.nu,sha256=9heiUHVkHjI_AMXT5QJJixk7ZK_hJNV_A8l
|
|
|
110
111
|
machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
112
|
machineconfig/scripts/python/agents.py,sha256=lW0Cx8xB84qqon5G4LUFPxqMnXu6rkDVqYjhzVhkq8M,10858
|
|
112
113
|
machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yyeehw_cU8,1263
|
|
113
|
-
machineconfig/scripts/python/croshell.py,sha256=
|
|
114
|
+
machineconfig/scripts/python/croshell.py,sha256=tufNeedizT_U4h8KsuXsSR7uWhOiDoDFcU-VKl9N90s,7570
|
|
114
115
|
machineconfig/scripts/python/define.py,sha256=AtuVac6tJeDMcxtbWmQh1TH3dYAPSGFdO51b75zJVeI,717
|
|
115
116
|
machineconfig/scripts/python/devops.py,sha256=O7o44lUcdAs5R3th2d3xjLPSjJk7sOTLOJUyBF-yHtQ,2213
|
|
116
117
|
machineconfig/scripts/python/devops_navigator.py,sha256=UeqkY9_c22Ce9b1ksFGq-lNwaGCMMHL1LikPhP-QDt8,154
|
|
@@ -118,10 +119,10 @@ machineconfig/scripts/python/fire_jobs.py,sha256=7S5tn6Y_Dov94ZRha6mqJMRAsf3en2O
|
|
|
118
119
|
machineconfig/scripts/python/ftpx.py,sha256=ncFvM4p-ohBB0Pez-0zSI6NQBN1T_tfltN-dB09yPzQ,11087
|
|
119
120
|
machineconfig/scripts/python/interactive.py,sha256=cD9wYKPKtbVZfYuDQh6GDTd7fqgVtEs8B2kNM_WavyA,11546
|
|
120
121
|
machineconfig/scripts/python/mcfg_entry.py,sha256=FKVnSR1mlZutQfmHu7fz2in0m-QntiIJE2L_bDVJ7BY,3088
|
|
121
|
-
machineconfig/scripts/python/msearch.py,sha256=
|
|
122
|
+
machineconfig/scripts/python/msearch.py,sha256=3Xr0cOTcSu3YjmQslreggHOMs5nwTsIxsCbgWOjrVt8,3523
|
|
122
123
|
machineconfig/scripts/python/sessions.py,sha256=uypWqdBpzYtyCzPPXQJdQgZlgyplHtQPDh69rV1DFBQ,10270
|
|
123
124
|
machineconfig/scripts/python/terminal.py,sha256=3333ZxOwPhAOPj9KmKO24NrK7afVTD7Hb5bTf35dcfc,5928
|
|
124
|
-
machineconfig/scripts/python/utils.py,sha256=
|
|
125
|
+
machineconfig/scripts/python/utils.py,sha256=m2OBshQ1v6Ehf1eXGkCQB-MH0c1dQQ7IiZNEuqVTtiw,3595
|
|
125
126
|
machineconfig/scripts/python/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
127
|
machineconfig/scripts/python/ai/generate_files.py,sha256=VfjKdwgF8O6E4oiRtfWNliibLmmwGe7f9ld6wpOsXTw,14498
|
|
127
128
|
machineconfig/scripts/python/ai/initai.py,sha256=P4-NCLJPWeNef_k-l4TQ92AB1Xm1k3xzdqSBIjmevnQ,1573
|
|
@@ -140,7 +141,7 @@ machineconfig/scripts/python/ai/solutions/copilot/privacy.md,sha256=QeEU3P1tVBeG
|
|
|
140
141
|
machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Thinking-Beast-Mode.chatmode.md,sha256=Tu-fWxX_FLiIBRdgOndMhewK41kIHDoYxuGZ1kF6dYA,17947
|
|
141
142
|
machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md,sha256=kB8u_QAZar9StuywXcbPTUCbAVHKin0s0brssOroK5o,29019
|
|
142
143
|
machineconfig/scripts/python/ai/solutions/copilot/chatmodes/deepResearch.chatmode.md,sha256=WRbZXkdOPw5pVAFjR51n9IRTtqw3TE7jUt4BNyN5Z8k,5165
|
|
143
|
-
machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md,sha256=
|
|
144
|
+
machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md,sha256=Evz3iDmrJQxl5CBO6CLdmO-Xc6HpzCsVBcZAMI95TnY,4635
|
|
144
145
|
machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md,sha256=a3tMb-t0jmC02OAQZSRBEuiccB-osBvgAIOSBXqC5JQ,544
|
|
145
146
|
machineconfig/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md,sha256=VJboe6_ynLAcxml8tgOQCN-6ecJY3hraEneKILQkNis,668
|
|
146
147
|
machineconfig/scripts/python/ai/solutions/crush/crush.json,sha256=2hhWLBtAroKO0dboksWIIV6s5XISDgzSMkPg8L9hSK4,5652
|
|
@@ -153,8 +154,9 @@ machineconfig/scripts/python/ai/solutions/kilocode/privacy.md,sha256=oKOXnfFOdUu
|
|
|
153
154
|
machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1dNzkUCS_vCX_fy2TisRtfg8DXH-D4N1iUVU,99
|
|
154
155
|
machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
155
156
|
machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
|
|
157
|
+
machineconfig/scripts/python/env_manager/env_manager_tui.py,sha256=yrIQ6WDFtQgqFH3_IA1mzaAz_mCjXI8BDqmSpll-u6E,7055
|
|
156
158
|
machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
|
|
157
|
-
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=
|
|
159
|
+
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=O-4QOm72VPADP0kMKcHaC94SKz8uLzv68RyLMPuCfXY,6932
|
|
158
160
|
machineconfig/scripts/python/helpers/ast_search.py,sha256=-BFLZfJpYyj2CjUVrRigWf6xdfdorBfScJ33S2j9O2I,2515
|
|
159
161
|
machineconfig/scripts/python/helpers/qr_code.py,sha256=DLZwRI9j8g6qV6XngHEoiStqVYKmXhPjuA_sSTgvf88,5150
|
|
160
162
|
machineconfig/scripts/python/helpers/repo_rag.py,sha256=WxSLC99SBpnbUyIQjKiuraGgFk0qGzQ1dC9zSUc88hc,13702
|
|
@@ -188,15 +190,15 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=hpLSRENN8zB
|
|
|
188
190
|
machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
189
191
|
machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
|
|
190
192
|
machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
|
-
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=
|
|
193
|
+
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=dMvN99_iXjotmUYd9JuejEhLrxsmmiV5HNSGLuN_Pc4,5512
|
|
192
194
|
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=KFIBpAaBtRn-nP1ILXZmyGlgCi4olKRohoF-HdHORaQ,4034
|
|
193
195
|
machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
|
|
194
|
-
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=
|
|
196
|
+
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=V88k38wdOFaR401jCZfY7eCp3rcRQ5Mmd2kwqq07p3s,10795
|
|
195
197
|
machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=mFrhosIFCCT70d82NYUxp9ta6BYeAHQNhsx7CEmWcg4,12478
|
|
196
|
-
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=
|
|
198
|
+
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=fsnVAn3T6GSvIcj2tvWYh17G3dLHPvrQwiAnXCXLUFY,7064
|
|
197
199
|
machineconfig/scripts/python/helpers_devops/cli_share_file.py,sha256=BPHC-M4OjILY130iL4QcRcjBZNbYwzuSc7clSpr9oUo,6404
|
|
198
200
|
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=IDed7qI-LM9kCd4XI-5El_xFtqGZCqDyF8chQJKLdsg,6493
|
|
199
|
-
machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=
|
|
201
|
+
machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=e9eSqy0e70YlUDkCM3KdbfGn1Gv0oR_TQEzLm5p3f-s,6148
|
|
200
202
|
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=RHYuEJn_xUMj8jMDx0Gi0Xr1yjA_7BLnStGU4N1qV7M,5003
|
|
201
203
|
machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Tyfz5S1QfY_nOhg-ROTp9eILNqYx_i1ootth34frbv0,5540
|
|
202
204
|
machineconfig/scripts/python/helpers_devops/devops_status.py,sha256=IKDd0fD8qINFoxC3Ajk0GtXiDfXgiL6shrUMubx_yx4,20312
|
|
@@ -214,13 +216,8 @@ machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py,sha25
|
|
|
214
216
|
machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py,sha256=hj81yaj5NBWkxfpZeym99pXfiP_YP_0DRJFbjd7CeRY,5926
|
|
215
217
|
machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
216
218
|
machineconfig/scripts/python/helpers_msearch/__init__.py,sha256=eZSLmDDBtML_JRn1BjU8IyzXEqjZ9-u3TYY6_hYsEKA,183
|
|
217
|
-
machineconfig/scripts/python/helpers_msearch/scripts_linux/
|
|
218
|
-
machineconfig/scripts/python/helpers_msearch/
|
|
219
|
-
machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfrga,sha256=9K84gLZbxar19FE2bjbgdTztmyFyyCH7lELr6S9PwyA,454
|
|
220
|
-
machineconfig/scripts/python/helpers_msearch/scripts_linux/skrg,sha256=JgQJGwxaChr148bDnpTB0rrqZMe2o2zGSDA9x_oUhWM,133
|
|
221
|
-
machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfb.ps1,sha256=Bmngm2aY8hnPa3iKAOK6EPDYdKzGLUc81wYOnJhNoqg,149
|
|
222
|
-
machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfg.ps1,sha256=CHJbMrMuZePd4dxwIwz3g4XWAEmWmckuX-Nrx2xgRkg,27
|
|
223
|
-
machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfrga.bat,sha256=rU_KBMO6ii2EZ0akMnmDk9vpuhKSUZqkV0o8a8ywXcM,488
|
|
219
|
+
machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfg,sha256=1WPQn8nudfOLdpyya4THQgAzTH7LOSnk-YH0e9e8KRE,1201
|
|
220
|
+
machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfg.ps1,sha256=CJbrvZVAAUxDxMFhgPKjq07mtn6V29tBrpodCvCDGT4,1918
|
|
224
221
|
machineconfig/scripts/python/helpers_navigator/__init__.py,sha256=5qPsu5ztoj0gkrioY0Yg0GTZ9JAn6SG2gAk-6DpuQ00,764
|
|
225
222
|
machineconfig/scripts/python/helpers_navigator/command_builder.py,sha256=59ipLYdkWvj_l1xqrC6rz2E2GNCP91BVBsX8vqTRnjQ,4618
|
|
226
223
|
machineconfig/scripts/python/helpers_navigator/command_detail.py,sha256=9cL2wVqa_vzgsSIYg-eVjeuac9f3aQJvrTl0T-SRAOU,1693
|
|
@@ -231,9 +228,9 @@ machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wd
|
|
|
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
230
|
machineconfig/scripts/python/helpers_repos/clone.py,sha256=9RZgs2OD2RUH6UiZKCuUvRyweDBomAm2lDG2qJmhry0,5436
|
|
234
|
-
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=
|
|
235
|
-
machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=
|
|
236
|
-
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=
|
|
231
|
+
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=MuB97xFBdCR2OqgS2KvE9_dJUXGzr33g26ncFbjwLWE,11689
|
|
232
|
+
machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=PTHI5WZd1wsCJLomcq2ON0wqIQ2Q2JFYAwjvddlwhVo,17455
|
|
233
|
+
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=JHbUxvc99xLdkqBu2EfNVCM_bveYJSecCKuOY6SZNSs,607
|
|
237
234
|
machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=eAM-7trZCPTeep0iTU3_HNqCkF0pYKqMMXNq3vLBsP8,2898
|
|
238
235
|
machineconfig/scripts/python/helpers_repos/grource.py,sha256=lHxyfsIQr4pbu71Ekqu-9nohR7LXbN2wufw7LPTyOgM,14639
|
|
239
236
|
machineconfig/scripts/python/helpers_repos/record.py,sha256=1PycYcW7VA-9n9iv1TJXub7qNIQ6I6Z9dEnvbdDm4TU,11099
|
|
@@ -242,7 +239,7 @@ machineconfig/scripts/python/helpers_repos/update.py,sha256=cUIMUMm-50HrY6fzxSMZ
|
|
|
242
239
|
machineconfig/scripts/python/helpers_sessions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
243
240
|
machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py,sha256=wCQPpsOeuNz0V7_SopHWLRgYQcQryDdQSDabikVS3AE,3054
|
|
244
241
|
machineconfig/scripts/python/helpers_utils/download.py,sha256=kGSk17oOPd1soN1JCxYRdnNId0Yux1HNhExwClrPAYk,6654
|
|
245
|
-
machineconfig/scripts/python/helpers_utils/path.py,sha256=
|
|
242
|
+
machineconfig/scripts/python/helpers_utils/path.py,sha256=wPhd5dVWOEigz30Ji01_iORGGpMrtpFIs8IAdsHjUvE,7402
|
|
246
243
|
machineconfig/scripts/python/nw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
247
244
|
machineconfig/scripts/python/nw/address.py,sha256=pKawu1OqoVsLtridVAdwrW7JnXy2jxRA8qKLJekjj2g,4626
|
|
248
245
|
machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
|
|
@@ -264,7 +261,7 @@ machineconfig/scripts/windows/mounts/Restore-ThunderbirdProfile.ps1,sha256=HYIT4
|
|
|
264
261
|
machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
|
|
265
262
|
machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
|
|
266
263
|
machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
|
|
267
|
-
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=
|
|
264
|
+
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=iXtOOKE5M4ajtp59GSmw0JutMNk3J4SQGjxFc_EWbl0,322
|
|
268
265
|
machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
|
|
269
266
|
machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
|
|
270
267
|
machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
|
|
@@ -359,11 +356,12 @@ machineconfig/settings/tere/terecd.sh,sha256=vDKRbldub0aGQwnWtDwkPnSQHKpVQiDg1RT
|
|
|
359
356
|
machineconfig/settings/tmux/.tmate.conf,sha256=dhj8IbNUe_oaBSmnAE-k2rcHJ6_zcd7pHqrmKP19zA0,57
|
|
360
357
|
machineconfig/settings/tmux/.tmux.conf,sha256=55qyCgKHOyg70kJ42GXrHwqAAtRtnsWtdHCuPt-8Hy8,94
|
|
361
358
|
machineconfig/settings/wsl/.wslconfig,sha256=wL4oWxRw_0vLQXheSLNuGUQqypqEKlVqYALosPI9jhY,1279
|
|
362
|
-
machineconfig/settings/yazi/init.lua,sha256=
|
|
363
|
-
machineconfig/settings/yazi/keymap_linux.toml,sha256=
|
|
359
|
+
machineconfig/settings/yazi/init.lua,sha256=5ihDgbs9I1wxLpSUBJMBs4ecZ39P-MvMj25jWPbI0sY,1609
|
|
360
|
+
machineconfig/settings/yazi/keymap_linux.toml,sha256=xnjwPxZ4V_VHuiqJ2RJZRuYlkotT9xTEk7OD7INELVk,2240
|
|
364
361
|
machineconfig/settings/yazi/keymap_windows.toml,sha256=i8tWQwpvA7XE2DAKbjKaaUigsT5hmNqK9OipcgIOZDo,2023
|
|
365
|
-
machineconfig/settings/yazi/theme.toml,sha256=
|
|
366
|
-
machineconfig/settings/yazi/
|
|
362
|
+
machineconfig/settings/yazi/theme.toml,sha256=YIzoyrdGQA-srv41M0z-O1avoQMM5_Mw9lwUCDagFio,56
|
|
363
|
+
machineconfig/settings/yazi/yazi_linux.toml,sha256=vjQUmL8sn6AFaZUMZG1MULXEP7l1e6l4yhI_DkBbTUQ,2589
|
|
364
|
+
machineconfig/settings/yazi/yazi_windows.toml,sha256=kiNr_lFyMLAa9CGeTW3hKcGCttqG76dOGvkK4tzQCLc,1535
|
|
367
365
|
machineconfig/settings/yazi/shell/yazi_cd.ps1,sha256=-H6tPmalGlUEmYybFgk51d_MfA3Q01Emf8lVXzKQsi0,1604
|
|
368
366
|
machineconfig/settings/yazi/shell/yazi_cd.sh,sha256=oC_MSBbnSwCg6qgGe598Qhm0V2B9RD5IcIbKEabn7aE,208
|
|
369
367
|
machineconfig/settings/zed/settings.json,sha256=WYuoJycLVhM1-_Haq2VlERds3W7LZFzJ1qJp7lwhnos,789
|
|
@@ -381,11 +379,10 @@ machineconfig/setup_linux/apps_desktop.sh,sha256=L2b_pcw3GiQdoAaoMO7J4bVvUoG5Pnu
|
|
|
381
379
|
machineconfig/setup_linux/apps_gui.sh,sha256=lFPYq7H2bRogPwW6QoEuSr9GnTjHS-jRM_eYg2rjOmM,2301
|
|
382
380
|
machineconfig/setup_linux/uv.sh,sha256=cyegPmMMB7B3OnVx9KxZiU1JQU3Z_oqboUgwzmW2W40,487
|
|
383
381
|
machineconfig/setup_linux/others/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
|
|
384
|
-
machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE31BXDP0Fmeta4--gpr-zJZlY,4010
|
|
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=
|
|
385
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=DY1aT6mH9Id-7jzntixwDpkuldLcY4-yDqXQkjkHLoY,1606
|
|
389
386
|
machineconfig/setup_mac/__init__.py,sha256=PfdhwY4Ss-rfP7b4-9fvKwxCDtNAd-u1JdhFYnE7CwI,518
|
|
390
387
|
machineconfig/setup_mac/apps_gui.sh,sha256=3alvddg918oMlJB2aUWJWpGGoaq5atlxcaOwhnyXlRI,9517
|
|
391
388
|
machineconfig/setup_mac/uv.sh,sha256=CSN8oCBKS-LK1vJJqYOhAMcrouTf4Q_F3cpplc_ddMA,1157
|
|
@@ -400,7 +397,7 @@ machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdW
|
|
|
400
397
|
machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
|
|
401
398
|
machineconfig/setup_windows/ssh/openssh-server_add_key.ps1,sha256=91cL3K4H2saAuzOS1GxGicpc64ZDpgvPY39YPBWyxZI,269
|
|
402
399
|
machineconfig/setup_windows/ssh/openssh-server_copy-ssh-id.ps1,sha256=-7pElYiGFXUvO4dp6rW0LXmNo65h3hFTHJWyHbmO3Xc,745
|
|
403
|
-
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=
|
|
400
|
+
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=vLx69x4B5Yh2Yn4NeKOHRCGnUjeMYgXn2cLAeF8GtCQ,1939
|
|
404
401
|
machineconfig/setup_windows/web_shortcuts/quick_init.ps1,sha256=bcRWU6QIFv5U4ibXy7jKqO7YfxpI3KvvesZ88aQD49E,652
|
|
405
402
|
machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
406
403
|
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
|
|
@@ -438,23 +435,24 @@ machineconfig/utils/files/art/water_croco.txt,sha256=5SPK6W3TQe6mO9eFbDIZ4n1rNAj
|
|
|
438
435
|
machineconfig/utils/files/ouch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
439
436
|
machineconfig/utils/files/ouch/decompress.py,sha256=7qPaEkMerBBXzeZyFn8hLODHZJv1aty-yGgwBxLgVys,1413
|
|
440
437
|
machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
441
|
-
machineconfig/utils/installer_utils/github_release_bulk.py,sha256=
|
|
442
|
-
machineconfig/utils/installer_utils/install_from_url.py,sha256=
|
|
443
|
-
machineconfig/utils/installer_utils/installer_class.py,sha256=
|
|
444
|
-
machineconfig/utils/installer_utils/installer_cli.py,sha256=
|
|
438
|
+
machineconfig/utils/installer_utils/github_release_bulk.py,sha256=0lbZDOfm0WDcQQutEKiHd7eOzmKWb6pgbUpGDSgcnYo,8198
|
|
439
|
+
machineconfig/utils/installer_utils/install_from_url.py,sha256=qaAdlxSjF9EpNoDaY71m4MRztMHpSalujy979EqLZbI,9402
|
|
440
|
+
machineconfig/utils/installer_utils/installer_class.py,sha256=p54_4bTBAH3DSmO5ftdmOWNrmD6Fcf2djQTNv-tA2YU,15510
|
|
441
|
+
machineconfig/utils/installer_utils/installer_cli.py,sha256=XD7Jn0C3ooriXHGt2ewpwopL0AhAq453BCGBwPyYbPo,8474
|
|
442
|
+
machineconfig/utils/installer_utils/installer_helper.py,sha256=-Tkq2K0-123sgxKDGjzraEHjBSUIWAEoV9IaSRPVD0U,4726
|
|
445
443
|
machineconfig/utils/installer_utils/installer_locator_utils.py,sha256=_QihkKgi7-IGrQQoy8muD0iL_n65ebvqDgiv43sCudI,8984
|
|
446
|
-
machineconfig/utils/installer_utils/installer_runner.py,sha256=
|
|
444
|
+
machineconfig/utils/installer_utils/installer_runner.py,sha256=aISG0kaXV49PvRWz_wBaKJ9-SQ2rp_lMZjmeBZ1si78,7920
|
|
447
445
|
machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=d3pwhmE-EuHPxaIoTTZeUdDUEK9QqtimV8zO3vV-7N4,2052
|
|
448
446
|
machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoSpdmTIdgS9LS-RvE-QZ-D260tD3o,1214
|
|
449
447
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=IV45Z_ZTw8S4V-wiZ_lpAVsUX6rSSfDCG7qm5Dk4Oog,1977
|
|
450
448
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
451
|
-
machineconfig/utils/ssh_utils/abc.py,sha256=
|
|
449
|
+
machineconfig/utils/ssh_utils/abc.py,sha256=WM06yGPx5DbiUgiJPn0IrnOPc5er80yDrpcjPcQ8N08,251
|
|
452
450
|
machineconfig/utils/ssh_utils/copy_from_here.py,sha256=-iQdk2d5S9xDIhU2hsdAWWRmRYjPZX33SxvBSrpKjdY,5322
|
|
453
451
|
machineconfig/utils/ssh_utils/copy_to_here.py,sha256=yM-U7knnOA7IwgXmXEdoeJ4SChsd4aMAyxkeBTkkcYU,13844
|
|
454
452
|
machineconfig/utils/ssh_utils/utils.py,sha256=C5Ht13WlKdXEwaSbs9SE8v09Sw_8Dn0ei4_bAwXQpLE,6198
|
|
455
|
-
machineconfig/utils/ssh_utils/wsl.py,sha256=
|
|
456
|
-
machineconfig-7.
|
|
457
|
-
machineconfig-7.
|
|
458
|
-
machineconfig-7.
|
|
459
|
-
machineconfig-7.
|
|
460
|
-
machineconfig-7.
|
|
453
|
+
machineconfig/utils/ssh_utils/wsl.py,sha256=nSzZnZ7M4d3mfW2z-57OQIwfVpa114bJVOf9tDLheLE,7865
|
|
454
|
+
machineconfig-7.83.dist-info/METADATA,sha256=owkrIN83BTswAk_FGMJn8Mf9DApMVCe2fc5R4BWCwws,5879
|
|
455
|
+
machineconfig-7.83.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
456
|
+
machineconfig-7.83.dist-info/entry_points.txt,sha256=nZv_eHgIxktijrRlv1O4AMwbXXN-pnEUwQF7qZC9lcI,740
|
|
457
|
+
machineconfig-7.83.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
458
|
+
machineconfig-7.83.dist-info/RECORD,,
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
# uses fzf as filter After ripgrep (secondary filter)
|
|
4
|
-
# from https://github.com/junegunn/fzf/blob/master/ADVANCED.md#ripgrep-integration
|
|
5
|
-
# 1. Search for text in files using Ripgrep
|
|
6
|
-
# 2. Interactively narrow down the list using fzf
|
|
7
|
-
# 3. Open the file in Vim
|
|
8
|
-
IFS=: read -ra selected < <(
|
|
9
|
-
rg --color=always --line-number --no-heading --smart-case "${*:-}" |
|
|
10
|
-
fzf --ansi \
|
|
11
|
-
--color "hl:-1:underline,hl+:-1:underline:reverse" \
|
|
12
|
-
--delimiter : \
|
|
13
|
-
--preview 'batcat --color=always {1} --highlight-line {2}' \
|
|
14
|
-
--preview-window 'up,60%,border-bottom,+{2}+3/3,~3'
|
|
15
|
-
)
|
|
16
|
-
[ -n "${selected[0]}" ] && hx "${selected[0]}" "+${selected[1]}"
|
|
17
|
-
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
# From https://github.com/phiresky/ripgrep-all/wiki/fzf-Integration
|
|
4
|
-
|
|
5
|
-
rga-fzf() {
|
|
6
|
-
RG_PREFIX="rga --files-with-matches"
|
|
7
|
-
local file
|
|
8
|
-
file="$(
|
|
9
|
-
FZF_DEFAULT_COMMAND="$RG_PREFIX '$1'" \
|
|
10
|
-
fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
|
|
11
|
-
--phony -q "$1" \
|
|
12
|
-
--bind "change:reload:$RG_PREFIX {q}" \
|
|
13
|
-
--preview-window="70%:wrap"
|
|
14
|
-
)" &&
|
|
15
|
-
echo "opening $file" &&
|
|
16
|
-
hx "$file"
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# run the function
|
|
21
|
-
rga-fzf
|