machineconfig 7.39__py3-none-any.whl → 7.44__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/installer_data.json +34 -0
- machineconfig/profile/create_links_export.py +8 -5
- machineconfig/profile/mapper.toml +4 -0
- machineconfig/scripts/python/croshell.py +4 -4
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/explore.py +49 -0
- machineconfig/scripts/python/helpers_devops/cli_config.py +2 -1
- machineconfig/scripts/python/helpers_devops/cli_nw.py +7 -6
- machineconfig/scripts/python/helpers_devops/cli_self.py +3 -3
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +62 -166
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +1 -1
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +1 -1
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
- machineconfig/settings/helix/config.toml +14 -0
- machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
- machineconfig/settings/lf/linux/exe/previewer.sh +3 -2
- machineconfig/settings/shells/bash/init.sh +2 -1
- machineconfig/settings/yazi/init.lua +36 -0
- machineconfig/settings/yazi/keymap.toml +52 -0
- machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
- machineconfig/settings/yazi/yazi.toml +8 -0
- machineconfig/setup_linux/web_shortcuts/interactive.sh +10 -10
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +10 -10
- machineconfig/utils/ssh.py +1 -1
- {machineconfig-7.39.dist-info → machineconfig-7.44.dist-info}/METADATA +1 -1
- {machineconfig-7.39.dist-info → machineconfig-7.44.dist-info}/RECORD +30 -26
- {machineconfig-7.39.dist-info → machineconfig-7.44.dist-info}/entry_points.txt +1 -0
- {machineconfig-7.39.dist-info → machineconfig-7.44.dist-info}/WHEEL +0 -0
- {machineconfig-7.39.dist-info → machineconfig-7.44.dist-info}/top_level.txt +0 -0
|
@@ -69,6 +69,23 @@
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
|
+
{
|
|
73
|
+
"appName": "timg",
|
|
74
|
+
"repoURL": "CMD",
|
|
75
|
+
"doc": "👁️ terminal image previewer.",
|
|
76
|
+
"fileNamePattern": {
|
|
77
|
+
"amd64": {
|
|
78
|
+
"linux": "sudo apt install timg",
|
|
79
|
+
"windows": null,
|
|
80
|
+
"macos": "brew install timg"
|
|
81
|
+
},
|
|
82
|
+
"arm64": {
|
|
83
|
+
"linux": "sudo apt install timg",
|
|
84
|
+
"windows": null,
|
|
85
|
+
"macos": "brew install timg"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
72
89
|
{
|
|
73
90
|
"appName": "diskonaut",
|
|
74
91
|
"repoURL": "https://github.com/imsnif/diskonaut",
|
|
@@ -1735,6 +1752,23 @@
|
|
|
1735
1752
|
}
|
|
1736
1753
|
}
|
|
1737
1754
|
},
|
|
1755
|
+
{
|
|
1756
|
+
"appName": "miniserve",
|
|
1757
|
+
"repoURL": "https://github.com/svenstaro/miniserve",
|
|
1758
|
+
"doc": "📂 A small, self-contained file server with directory listings",
|
|
1759
|
+
"fileNamePattern": {
|
|
1760
|
+
"amd64": {
|
|
1761
|
+
"linux": "miniserve-{version}-x86_64-unknown-linux-musl",
|
|
1762
|
+
"darwin": "miniserve-{version}-x86_64-apple-darwin",
|
|
1763
|
+
"windows": "miniserve-{version}-x86_64-pc-windows-msvc.exe"
|
|
1764
|
+
},
|
|
1765
|
+
"arm64": {
|
|
1766
|
+
"linux": "miniserve-{version}-aarch64-unknown-linux-musl",
|
|
1767
|
+
"darwin": "miniserve-{version}-aarch64-apple-darwin",
|
|
1768
|
+
"windows": "miniserve-{version}-aarch64-pc-windows-msvc.exe"
|
|
1769
|
+
}
|
|
1770
|
+
}
|
|
1771
|
+
},
|
|
1738
1772
|
{
|
|
1739
1773
|
"appName": "cloudreve",
|
|
1740
1774
|
"repoURL": "https://github.com/cloudreve/Cloudreve",
|
|
@@ -19,10 +19,10 @@ ON_CONFLICT_MAPPER: dict[str, ON_CONFLICT_STRICT] = {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
def main_public_from_parser(method: Annotated[Literal["symlink", "s", "copy", "c"], typer.Option(..., help="Method to use for setting up the config file.")],
|
|
23
|
-
on_conflict: Annotated[ON_CONFLICT_LOOSE, typer.Option(..., help="Action to take on conflict")],
|
|
24
|
-
which: Annotated[Optional[str], typer.Option(..., help="Specific items to process")] = None,
|
|
25
|
-
interactive: Annotated[bool, typer.Option(..., help="Run in interactive mode")] = False):
|
|
22
|
+
def main_public_from_parser(method: Annotated[Literal["symlink", "s", "copy", "c"], typer.Option(..., "--method", "-m", help="Method to use for setting up the config file.")],
|
|
23
|
+
on_conflict: Annotated[ON_CONFLICT_LOOSE, typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
|
|
24
|
+
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process (default: all)")] = None,
|
|
25
|
+
interactive: Annotated[bool, typer.Option(..., "--interactive", "-i", help="Run in interactive mode")] = False):
|
|
26
26
|
"""Terminology:
|
|
27
27
|
SOURCE = Self-Managed-Config-File-Path
|
|
28
28
|
TARGET = Config-File-Default-Path
|
|
@@ -40,7 +40,10 @@ def main_public_from_parser(method: Annotated[Literal["symlink", "s", "copy", "c
|
|
|
40
40
|
else:
|
|
41
41
|
items_chosen = which.split(",")
|
|
42
42
|
items_objections: dict[str, list[ConfigMapper]] = {item: mapper_full[item] for item in items_chosen if item in mapper_full}
|
|
43
|
-
|
|
43
|
+
if len(items_objections) == 0:
|
|
44
|
+
typer.echo("[red]Error:[/] No valid items selected.")
|
|
45
|
+
typer.Exit(code=1)
|
|
46
|
+
return
|
|
44
47
|
from machineconfig.profile.create_links import apply_mapper
|
|
45
48
|
from machineconfig.profile.create_helper import copy_assets_to_machine
|
|
46
49
|
copy_assets_to_machine(which="settings") # config files live here and will be linked to.
|
|
@@ -100,11 +100,15 @@ config = {this = '~/.config/rofi/config.rasi', to_this = 'CONFIG_ROOT/settings/r
|
|
|
100
100
|
yazi = {this = '~/AppData/Roaming/yazi/config/yazi.toml', to_this = 'CONFIG_ROOT/settings/yazi/yazi.toml'}
|
|
101
101
|
keymap = {this = '~/AppData/Roaming/yazi/config/keymap.toml', to_this = 'CONFIG_ROOT/settings/yazi/keymap.toml'}
|
|
102
102
|
theme = {this = '~/AppData/Roaming/yazi/config/theme.toml', to_this = 'CONFIG_ROOT/settings/yazi/theme.toml'}
|
|
103
|
+
init = {this = '~/AppData/Roaming/yazi/config/init.lua', to_this = 'CONFIG_ROOT/settings/yazi/init.lua'}
|
|
104
|
+
|
|
105
|
+
|
|
103
106
|
|
|
104
107
|
[yazi_linux]
|
|
105
108
|
yazi = {this = '~/.config/yazi/yazi.toml', to_this = 'CONFIG_ROOT/settings/yazi/yazi.toml'}
|
|
106
109
|
keymap = {this = '~/.config/yazi/keymap.toml', to_this = 'CONFIG_ROOT/settings/yazi/keymap.toml'}
|
|
107
110
|
theme = {this = '~/.config/yazi/theme.toml', to_this = 'CONFIG_ROOT/settings/yazi/theme.toml'}
|
|
111
|
+
init = {this = '~/.config/yazi/init.lua', to_this = 'CONFIG_ROOT/settings/yazi/init.lua'}
|
|
108
112
|
|
|
109
113
|
[lf_windows]
|
|
110
114
|
config = {this = '~/AppData/Local/lf/lfrc', to_this = 'CONFIG_ROOT/settings/lf/windows/lfrc'}
|
|
@@ -130,7 +130,7 @@ def croshell(
|
|
|
130
130
|
fire_line = f"uv run --python 3.14 --with visidata,pyarrow vd {str(file_obj)}"
|
|
131
131
|
elif marimo:
|
|
132
132
|
if Path.home().joinpath("code/machineconfig").exists(): requirements = f"""--with marimo --project "{str(Path.home().joinpath("code/machineconfig"))}" """
|
|
133
|
-
else: requirements = """--python 3.14 --with "marimo,machineconfig[plot]>=7.
|
|
133
|
+
else: requirements = """--python 3.14 --with "marimo,machineconfig[plot]>=7.40" """
|
|
134
134
|
fire_line = f"""
|
|
135
135
|
cd {str(pyfile.parent)}
|
|
136
136
|
uv run --python 3.14 --with "marimo" marimo convert {pyfile.name} -o marimo_nb.py
|
|
@@ -138,14 +138,14 @@ uv run {requirements} marimo edit --host 0.0.0.0 marimo_nb.py
|
|
|
138
138
|
"""
|
|
139
139
|
elif jupyter:
|
|
140
140
|
if Path.home().joinpath("code/machineconfig").exists(): requirements = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with jupyterlab """
|
|
141
|
-
else: requirements = """--with "machineconfig[plot]>=7.
|
|
141
|
+
else: requirements = """--with "machineconfig[plot]>=7.40" """
|
|
142
142
|
fire_line = f"uv run {requirements} jupyter-lab {str(nb_target)}"
|
|
143
143
|
elif vscode:
|
|
144
144
|
fire_line = f"""
|
|
145
145
|
cd {str(pyfile.parent)}
|
|
146
146
|
uv init --python 3.14
|
|
147
147
|
uv venv
|
|
148
|
-
uv add "machineconfig[plot]>=7.
|
|
148
|
+
uv add "machineconfig[plot]>=7.40"
|
|
149
149
|
# code serve-web
|
|
150
150
|
code --new-window {str(pyfile)}
|
|
151
151
|
"""
|
|
@@ -153,7 +153,7 @@ code --new-window {str(pyfile)}
|
|
|
153
153
|
if interpreter == "ipython": profile = f" --profile {ipython_profile} --no-banner"
|
|
154
154
|
else: profile = ""
|
|
155
155
|
if Path.home().joinpath("code/machineconfig").exists(): ve_line = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" """
|
|
156
|
-
else: ve_line = """--python 3.14 --with "machineconfig[plot]>=7.
|
|
156
|
+
else: ve_line = """--python 3.14 --with "machineconfig[plot]>=7.40" """
|
|
157
157
|
# ve_path_maybe, ipython_profile_maybe = get_ve_path_and_ipython_profile(Path.cwd())
|
|
158
158
|
# --python 3.14
|
|
159
159
|
fire_line = f"uv run {ve_line} {interpreter} {interactivity} {profile} {str(pyfile)}"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
|
|
2
|
+
import typer
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def machineconfig_lf():
|
|
6
|
+
# from machineconfig.scripts.python.helpers_msearch import FZFG_LINUX_PATH, FZFG_WINDOWS_PATH
|
|
7
|
+
import platform
|
|
8
|
+
if platform.system() == "Linux":
|
|
9
|
+
script = """
|
|
10
|
+
tmp="$(mktemp)"
|
|
11
|
+
lf -last-dir-path="$tmp" "$@"
|
|
12
|
+
if [ -f "$tmp" ]; then
|
|
13
|
+
dir="$(cat "$tmp")"
|
|
14
|
+
rm -f "$tmp"
|
|
15
|
+
if [ -d "$dir" ]; then
|
|
16
|
+
if [ "$dir" != "$(pwd)" ]; then
|
|
17
|
+
cd "$dir"
|
|
18
|
+
fi
|
|
19
|
+
fi
|
|
20
|
+
fi
|
|
21
|
+
"""
|
|
22
|
+
elif platform.system() == "Windows":
|
|
23
|
+
script = r"""
|
|
24
|
+
$tmp = [System.IO.Path]::GetTempFileName()
|
|
25
|
+
~\AppData\Local\Microsoft\WindowsApps\lf.exe -last-dir-path="$tmp" $args
|
|
26
|
+
if (Test-Path -PathType Leaf "$tmp")
|
|
27
|
+
{
|
|
28
|
+
$dir = Get-Content "$tmp"
|
|
29
|
+
Remove-Item -Force "$tmp"
|
|
30
|
+
if (Test-Path -PathType Container "$dir")
|
|
31
|
+
{
|
|
32
|
+
if ("$dir" -ne "$pwd")
|
|
33
|
+
{
|
|
34
|
+
Set-Location "$dir"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
"""
|
|
39
|
+
else:
|
|
40
|
+
raise RuntimeError("Unsupported platform")
|
|
41
|
+
|
|
42
|
+
from machineconfig.utils.code import exit_then_run_shell_script
|
|
43
|
+
exit_then_run_shell_script(script=script, strict=False)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def main():
|
|
47
|
+
app = typer.Typer(add_completion=False, no_args_is_help=True)
|
|
48
|
+
app.command(name="lf", help="machineconfig lf wrapper.", no_args_is_help=False)(machineconfig_lf)
|
|
49
|
+
app()
|
|
@@ -6,6 +6,7 @@ import typer
|
|
|
6
6
|
import machineconfig.scripts.python.helpers_devops.cli_config_dotfile as dotfile_module
|
|
7
7
|
import machineconfig.profile.create_links_export as create_links_export
|
|
8
8
|
|
|
9
|
+
|
|
9
10
|
def shell(which: Annotated[Literal["default", "d", "nushell", "n"], typer.Option(..., "--which", "-w", help="Which shell profile to create/configure")]="default"):
|
|
10
11
|
"""🔗 Configure your shell profile."""
|
|
11
12
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile, create_nu_shell_profile
|
|
@@ -28,7 +29,7 @@ def path():
|
|
|
28
29
|
uv_with = ["textual"]
|
|
29
30
|
uv_project_dir = None
|
|
30
31
|
if not Path.home().joinpath("code/machineconfig").exists():
|
|
31
|
-
uv_with.append("machineconfig>=7.
|
|
32
|
+
uv_with.append("machineconfig>=7.40")
|
|
32
33
|
else:
|
|
33
34
|
uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
|
|
34
35
|
run_shell_script(get_uv_command_executing_python_script(python_script=path.read_text(encoding="utf-8"), uv_with=uv_with, uv_project_dir=uv_project_dir)[0])
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
|
|
2
|
+
import machineconfig.scripts.python.helpers_devops.cli_share_file
|
|
2
3
|
import machineconfig.scripts.python.helpers_devops.cli_terminal as cli_terminal
|
|
3
4
|
import machineconfig.scripts.python.helpers_devops.cli_share_server as cli_share_server
|
|
4
5
|
import typer
|
|
@@ -105,16 +106,16 @@ def get_app():
|
|
|
105
106
|
nw_apps.command(name="share-terminal", help="📡 [t] Share terminal via web browser")(cli_terminal.main)
|
|
106
107
|
nw_apps.command(name="t", help="Share terminal via web browser", hidden=True)(cli_terminal.main)
|
|
107
108
|
|
|
108
|
-
nw_apps.command(name="share-server", help="🌐 [s] Start local/global server to share files/folders via web browser", no_args_is_help=True)(cli_share_server.
|
|
109
|
-
nw_apps.command(name="s", help="Start local/global server to share files/folders via web browser", hidden=True, no_args_is_help=True)(cli_share_server.
|
|
109
|
+
nw_apps.command(name="share-server", help="🌐 [s] Start local/global server to share files/folders via web browser", no_args_is_help=True)(cli_share_server.web_file_explorer)
|
|
110
|
+
nw_apps.command(name="s", help="Start local/global server to share files/folders via web browser", hidden=True, no_args_is_help=True)(cli_share_server.web_file_explorer)
|
|
110
111
|
|
|
111
112
|
# app = cli_share_server.get_share_file_app()
|
|
112
113
|
# nw_apps.add_typer(app, name="share-file", help="📁 [f] Share a file via relay server", no_args_is_help=True)
|
|
113
114
|
# nw_apps.add_typer(app, name="f", help="Share a file via relay server", hidden=True, no_args_is_help=True)
|
|
114
|
-
nw_apps.command(name="send", no_args_is_help=True, hidden=False, help="📁 [sx] send files from here.")(
|
|
115
|
-
nw_apps.command(name="sx", no_args_is_help=True, hidden=True, help="📁 [sx] send files from here.")(
|
|
116
|
-
nw_apps.command(name="receive", no_args_is_help=True, hidden=False, help="📁 [rx] receive files to here.")(
|
|
117
|
-
nw_apps.command(name="rx", no_args_is_help=True, hidden=True, help="📁 [rx] receive files to here.")(
|
|
115
|
+
nw_apps.command(name="send", no_args_is_help=True, hidden=False, help="📁 [sx] send files from here.")(machineconfig.scripts.python.helpers_devops.cli_share_file.share_file_send)
|
|
116
|
+
nw_apps.command(name="sx", no_args_is_help=True, hidden=True, help="📁 [sx] send files from here.")(machineconfig.scripts.python.helpers_devops.cli_share_file.share_file_send)
|
|
117
|
+
nw_apps.command(name="receive", no_args_is_help=True, hidden=False, help="📁 [rx] receive files to here.")(machineconfig.scripts.python.helpers_devops.cli_share_file.share_file_receive)
|
|
118
|
+
nw_apps.command(name="rx", no_args_is_help=True, hidden=True, help="📁 [rx] receive files to here.")(machineconfig.scripts.python.helpers_devops.cli_share_file.share_file_receive)
|
|
118
119
|
|
|
119
120
|
nw_apps.command(name="install-ssh-server", help="📡 [i] Install SSH server")(install_ssh_server)
|
|
120
121
|
nw_apps.command(name="i", help="Install SSH server", hidden=True)(install_ssh_server)
|
|
@@ -46,9 +46,9 @@ def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-n
|
|
|
46
46
|
else:
|
|
47
47
|
import platform
|
|
48
48
|
if platform.system() == "Windows":
|
|
49
|
-
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=7.
|
|
49
|
+
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=7.40" """)
|
|
50
50
|
else:
|
|
51
|
-
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=7.
|
|
51
|
+
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=7.40" """)
|
|
52
52
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
53
53
|
if not no_copy_assets:
|
|
54
54
|
create_default_shell_profile() # involves copying assets too
|
|
@@ -73,7 +73,7 @@ def navigate():
|
|
|
73
73
|
path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
|
|
74
74
|
from machineconfig.utils.code import run_shell_script
|
|
75
75
|
if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
|
|
76
|
-
else: executable = """--with "machineconfig>=7.
|
|
76
|
+
else: executable = """--with "machineconfig>=7.40,textual" """
|
|
77
77
|
run_shell_script(f"""uv run {executable} {path}""")
|
|
78
78
|
|
|
79
79
|
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import typer
|
|
2
|
+
# import platform
|
|
3
|
+
# import sys
|
|
4
|
+
from typing import Annotated
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def share_file_receive(code_args: Annotated[list[str], typer.Argument(help="Receive code or relay command. Examples: '7121-donor-olympic-bicycle' or '--relay 10.17.62.206:443 7121-donor-olympic-bicycle'")],
|
|
8
|
+
) -> None:
|
|
9
|
+
"""Receive a file using croc with relay server.
|
|
10
|
+
Usage examples:
|
|
11
|
+
devops network receive 7121-donor-olympic-bicycle
|
|
12
|
+
devops network receive -- --relay 10.17.62.206:443 7121-donor-olympic-bicycle
|
|
13
|
+
devops network receive -- croc --relay 10.17.62.206:443 7121-donor-olympic-bicycle
|
|
14
|
+
"""
|
|
15
|
+
from machineconfig.utils.installer_utils.installer import install_if_missing
|
|
16
|
+
install_if_missing(which="croc")
|
|
17
|
+
import platform
|
|
18
|
+
import sys
|
|
19
|
+
|
|
20
|
+
is_windows = platform.system() == "Windows"
|
|
21
|
+
|
|
22
|
+
# If no args passed via typer, try to get them from sys.argv directly
|
|
23
|
+
# This handles the case where -- was used and arguments weren't parsed by typer
|
|
24
|
+
if not code_args or (len(code_args) == 1 and code_args[0] in ['--relay', 'croc']):
|
|
25
|
+
# Find the index of 'rx' or 'receive' in sys.argv and get everything after it
|
|
26
|
+
try:
|
|
27
|
+
for i, arg in enumerate(sys.argv):
|
|
28
|
+
if arg in ['rx', 'receive', 'r'] and i + 1 < len(sys.argv):
|
|
29
|
+
code_args = sys.argv[i + 1:]
|
|
30
|
+
break
|
|
31
|
+
except Exception:
|
|
32
|
+
pass
|
|
33
|
+
|
|
34
|
+
# Join all arguments
|
|
35
|
+
input_str = " ".join(code_args)
|
|
36
|
+
tokens = input_str.split()
|
|
37
|
+
|
|
38
|
+
# Parse input to extract relay server and secret code
|
|
39
|
+
relay_server: str | None = None
|
|
40
|
+
secret_code: str | None = None
|
|
41
|
+
|
|
42
|
+
# Remove 'croc' and 'export' from tokens if present
|
|
43
|
+
tokens = [t for t in tokens if t not in ['croc', 'export']]
|
|
44
|
+
|
|
45
|
+
# Look for --relay flag and capture next token
|
|
46
|
+
relay_idx = -1
|
|
47
|
+
for i, token in enumerate(tokens):
|
|
48
|
+
if token == '--relay' and i + 1 < len(tokens):
|
|
49
|
+
relay_server = tokens[i + 1]
|
|
50
|
+
relay_idx = i
|
|
51
|
+
break
|
|
52
|
+
|
|
53
|
+
# Look for CROC_SECRET= prefix in any token
|
|
54
|
+
for token in tokens:
|
|
55
|
+
if token.startswith('CROC_SECRET='):
|
|
56
|
+
secret_code = token.split('=', 1)[1].strip('"').strip("'")
|
|
57
|
+
break
|
|
58
|
+
|
|
59
|
+
# If no secret code found yet, look for tokens with dashes (typical pattern: number-word-word-word)
|
|
60
|
+
# Skip relay server and relay flag
|
|
61
|
+
if not secret_code:
|
|
62
|
+
for i, token in enumerate(tokens):
|
|
63
|
+
if '-' in token and not token.startswith('-') and token != relay_server:
|
|
64
|
+
if relay_idx >= 0 and (i == relay_idx or i == relay_idx + 1):
|
|
65
|
+
continue # Skip relay server parts
|
|
66
|
+
secret_code = token
|
|
67
|
+
break
|
|
68
|
+
|
|
69
|
+
if not secret_code and not relay_server:
|
|
70
|
+
typer.echo(f"❌ Error: Could not parse croc receive code from input: {input_str}", err=True)
|
|
71
|
+
typer.echo("Usage:", err=True)
|
|
72
|
+
typer.echo(" devops network receive 7121-donor-olympic-bicycle", err=True)
|
|
73
|
+
typer.echo(" devops network receive -- --relay 10.17.62.206:443 7121-donor-olympic-bicycle", err=True)
|
|
74
|
+
raise typer.Exit(code=1)
|
|
75
|
+
|
|
76
|
+
# Build the appropriate script for current OS
|
|
77
|
+
if is_windows:
|
|
78
|
+
# Windows PowerShell format: croc --relay server:port secret-code --yes
|
|
79
|
+
relay_arg = f"--relay {relay_server}" if relay_server else ""
|
|
80
|
+
code_arg = f"{secret_code}" if secret_code else ""
|
|
81
|
+
script = f"""croc {relay_arg} {code_arg} --yes""".strip()
|
|
82
|
+
else:
|
|
83
|
+
# Linux/macOS Bash format: CROC_SECRET="secret-code" croc --relay server:port --yes
|
|
84
|
+
relay_arg = f"--relay {relay_server}" if relay_server else ""
|
|
85
|
+
if secret_code:
|
|
86
|
+
script = f"""export CROC_SECRET="{secret_code}"
|
|
87
|
+
croc {relay_arg} --yes""".strip()
|
|
88
|
+
else:
|
|
89
|
+
script = f"""croc {relay_arg} --yes""".strip()
|
|
90
|
+
|
|
91
|
+
from machineconfig.utils.code import exit_then_run_shell_script, print_code
|
|
92
|
+
print_code(code=script, desc="🚀 Receiving file with croc", lexer="bash" if platform.system() != "Windows" else "powershell")
|
|
93
|
+
exit_then_run_shell_script(script=script, strict=False)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def share_file_send(path: Annotated[str, typer.Argument(help="Path to the file or directory to send")],
|
|
97
|
+
zip_folder: Annotated[bool, typer.Option("--zip", help="Zip folder before sending")] = False,
|
|
98
|
+
code: Annotated[str | None, typer.Option("--code", "-c", help="Codephrase used to connect to relay")] = None,
|
|
99
|
+
text: Annotated[str | None, typer.Option("--text", "-t", help="Send some text")] = None,
|
|
100
|
+
qrcode: Annotated[bool, typer.Option("--qrcode", "--qr", help="Show receive code as a qrcode")] = False,
|
|
101
|
+
) -> None:
|
|
102
|
+
"""Send a file using croc with relay server."""
|
|
103
|
+
from machineconfig.utils.installer_utils.installer import install_if_missing
|
|
104
|
+
install_if_missing(which="croc")
|
|
105
|
+
# Get relay server IP from environment or use default
|
|
106
|
+
import socket
|
|
107
|
+
import platform
|
|
108
|
+
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
109
|
+
s.connect(('8.8.8.8',80))
|
|
110
|
+
local_ip_v4 = s.getsockname()[0]
|
|
111
|
+
s.close()
|
|
112
|
+
relay_port = "443"
|
|
113
|
+
is_windows = platform.system() == "Windows"
|
|
114
|
+
|
|
115
|
+
# Build command parts
|
|
116
|
+
relay_arg = f"--relay {local_ip_v4}:{relay_port} --ip {local_ip_v4}:{relay_port}"
|
|
117
|
+
zip_arg = "--zip" if zip_folder else ""
|
|
118
|
+
text_arg = f"--text '{text}'" if text else ""
|
|
119
|
+
qrcode_arg = "--qrcode" if qrcode else ""
|
|
120
|
+
path_arg = f"{path}" if not text else ""
|
|
121
|
+
|
|
122
|
+
if is_windows:
|
|
123
|
+
# Windows PowerShell format
|
|
124
|
+
code_arg = f"--code {code}" if code else ""
|
|
125
|
+
script = f"""croc {relay_arg} send {zip_arg} {code_arg} {qrcode_arg} {text_arg} {path_arg}"""
|
|
126
|
+
else:
|
|
127
|
+
# Linux/macOS Bash format
|
|
128
|
+
if code:
|
|
129
|
+
script = f"""export CROC_SECRET="{code}"
|
|
130
|
+
croc {relay_arg} send {zip_arg} {qrcode_arg} {text_arg} {path_arg}"""
|
|
131
|
+
else:
|
|
132
|
+
script = f"""croc {relay_arg} send {zip_arg} {qrcode_arg} {text_arg} {path_arg}"""
|
|
133
|
+
|
|
134
|
+
typer.echo(f"🚀 Sending file: {path}. Use: devops network receive")
|
|
135
|
+
from machineconfig.utils.code import exit_then_run_shell_script, print_code
|
|
136
|
+
print_code(code=script, desc="🚀 sending file with croc", lexer="bash" if platform.system() != "Windows" else "powershell")
|
|
137
|
+
exit_then_run_shell_script(script=script, strict=False)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
from typing import Optional, Annotated
|
|
3
|
+
from machineconfig.scripts.python.helpers_devops.cli_share_file import share_file_receive, share_file_send
|
|
3
4
|
import typer
|
|
4
5
|
|
|
5
6
|
|
|
@@ -31,202 +32,97 @@ def display_share_url(local_ip_v4: str, port: int, protocol: str = "http") -> No
|
|
|
31
32
|
console.print(panel)
|
|
32
33
|
|
|
33
34
|
|
|
34
|
-
def
|
|
35
|
+
def web_file_explorer(
|
|
35
36
|
path: Annotated[str, typer.Argument(help="Path to the file or directory to share")],
|
|
36
37
|
port: Annotated[Optional[int], typer.Option("--port", "-p", help="Port to run the share server on (default: 8080)")] = None,
|
|
37
38
|
username: Annotated[Optional[str], typer.Option("--username", "-u", help="Username for share access (default: current user)")] = None,
|
|
38
39
|
password: Annotated[Optional[str], typer.Option("--password", "-w", help="Password for share access (default: from ~/dotfiles/creds/passwords/quick_password)")] = None,
|
|
39
|
-
over_internet: Annotated[bool, typer.Option("--over-internet", "-i", help="Expose the share server over the internet using ngrok")] = False
|
|
40
|
+
over_internet: Annotated[bool, typer.Option("--over-internet", "-i", help="Expose the share server over the internet using ngrok")] = False,
|
|
41
|
+
backend: Annotated[str, typer.Option("--backend", "-b", help="Backend to use: filebrowser (default), miniserve, or easy-sharing")] = "filebrowser"
|
|
40
42
|
) -> None:
|
|
41
43
|
from machineconfig.utils.installer_utils.installer import install_if_missing
|
|
42
|
-
|
|
43
|
-
if
|
|
44
|
+
|
|
45
|
+
if backend not in ["filebrowser", "miniserve", "easy-sharing"]:
|
|
46
|
+
typer.echo(f"❌ ERROR: Invalid backend '{backend}'. Must be one of: filebrowser, miniserve, easy-sharing", err=True)
|
|
47
|
+
raise typer.Exit(code=1)
|
|
48
|
+
|
|
49
|
+
install_if_missing(which=backend)
|
|
50
|
+
if over_internet:
|
|
51
|
+
install_if_missing(which="ngrok")
|
|
52
|
+
|
|
44
53
|
if username is None:
|
|
45
54
|
import getpass
|
|
46
55
|
username = getpass.getuser()
|
|
56
|
+
|
|
47
57
|
if password is None:
|
|
48
58
|
pwd_path = Path.home().joinpath("dotfiles/creds/passwords/quick_password")
|
|
49
59
|
if pwd_path.exists():
|
|
50
60
|
password = pwd_path.read_text(encoding="utf-8").strip()
|
|
51
61
|
else:
|
|
52
|
-
# raise ValueError("Password not provided and default password file does not exist.")
|
|
53
62
|
typer.echo(f"⚠️ WARNING: Password not provided and default password file does not exist.\nPath: {pwd_path}\nUsing default password: 'quick_password' (insecure!)", err=True)
|
|
54
|
-
typer.Exit(code=1)
|
|
63
|
+
raise typer.Exit(code=1)
|
|
55
64
|
|
|
56
65
|
if port is None:
|
|
57
|
-
port = 8080
|
|
66
|
+
port = 8080
|
|
58
67
|
|
|
59
68
|
import socket
|
|
60
69
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
61
|
-
s.connect(('8.8.8.8',80))
|
|
70
|
+
s.connect(('8.8.8.8', 80))
|
|
62
71
|
local_ip_v4 = s.getsockname()[0]
|
|
63
72
|
s.close()
|
|
64
73
|
|
|
65
|
-
# Display the flashy share announcement
|
|
66
74
|
protocol = "http"
|
|
67
75
|
display_share_url(local_ip_v4, port, protocol)
|
|
68
|
-
import subprocess
|
|
69
|
-
import time
|
|
70
|
-
# Build ezshare command
|
|
71
|
-
ezshare_cmd = f"""easy-sharing --port {port} --username {username} --password "{password}" {path}"""
|
|
72
|
-
ezshare_process = subprocess.Popen(ezshare_cmd, shell=True)
|
|
73
|
-
processes = [ezshare_process]
|
|
74
|
-
|
|
75
|
-
if over_internet:
|
|
76
|
-
ngrok_process = subprocess.Popen(f"ngrok http {port}", shell=True)
|
|
77
|
-
processes.append(ngrok_process)
|
|
78
|
-
time.sleep(3)
|
|
79
|
-
try:
|
|
80
|
-
import requests
|
|
81
|
-
response = requests.get("http://localhost:4040/api/tunnels")
|
|
82
|
-
data = response.json()
|
|
83
|
-
public_url = data['tunnels'][0]['public_url']
|
|
84
|
-
print(f"🌐 Ngrok tunnel ready: {public_url}")
|
|
85
|
-
except Exception as e:
|
|
86
|
-
print(f"Could not retrieve ngrok URL: {e}")
|
|
87
76
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
except KeyboardInterrupt:
|
|
93
|
-
print("\nTerminating processes...")
|
|
94
|
-
for p in processes:
|
|
95
|
-
p.terminate()
|
|
96
|
-
p.wait()
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
def share_file_send(path: Annotated[str, typer.Argument(help="Path to the file or directory to send")],
|
|
100
|
-
zip_folder: Annotated[bool, typer.Option("--zip", help="Zip folder before sending")] = False,
|
|
101
|
-
code: Annotated[str | None, typer.Option("--code", "-c", help="Codephrase used to connect to relay")] = None,
|
|
102
|
-
text: Annotated[str | None, typer.Option("--text", "-t", help="Send some text")] = None,
|
|
103
|
-
qrcode: Annotated[bool, typer.Option("--qrcode", "--qr", help="Show receive code as a qrcode")] = False,
|
|
104
|
-
) -> None:
|
|
105
|
-
"""Send a file using croc with relay server."""
|
|
106
|
-
from machineconfig.utils.installer_utils.installer import install_if_missing
|
|
107
|
-
install_if_missing(which="croc")
|
|
108
|
-
# Get relay server IP from environment or use default
|
|
109
|
-
import socket
|
|
110
|
-
import platform
|
|
111
|
-
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
112
|
-
s.connect(('8.8.8.8',80))
|
|
113
|
-
local_ip_v4 = s.getsockname()[0]
|
|
114
|
-
s.close()
|
|
115
|
-
relay_port = "443"
|
|
116
|
-
is_windows = platform.system() == "Windows"
|
|
117
|
-
|
|
118
|
-
# Build command parts
|
|
119
|
-
relay_arg = f"--relay {local_ip_v4}:{relay_port} --ip {local_ip_v4}:{relay_port}"
|
|
120
|
-
zip_arg = "--zip" if zip_folder else ""
|
|
121
|
-
text_arg = f"--text '{text}'" if text else ""
|
|
122
|
-
qrcode_arg = "--qrcode" if qrcode else ""
|
|
123
|
-
path_arg = f"{path}" if not text else ""
|
|
124
|
-
|
|
125
|
-
if is_windows:
|
|
126
|
-
# Windows PowerShell format
|
|
127
|
-
code_arg = f"--code {code}" if code else ""
|
|
128
|
-
script = f"""croc {relay_arg} send {zip_arg} {code_arg} {qrcode_arg} {text_arg} {path_arg}"""
|
|
129
|
-
else:
|
|
130
|
-
# Linux/macOS Bash format
|
|
131
|
-
if code:
|
|
132
|
-
script = f"""export CROC_SECRET="{code}"
|
|
133
|
-
croc {relay_arg} send {zip_arg} {qrcode_arg} {text_arg} {path_arg}"""
|
|
134
|
-
else:
|
|
135
|
-
script = f"""croc {relay_arg} send {zip_arg} {qrcode_arg} {text_arg} {path_arg}"""
|
|
77
|
+
path_obj = Path(path).resolve()
|
|
78
|
+
if not path_obj.exists():
|
|
79
|
+
typer.echo(f"❌ ERROR: Path does not exist: {path}", err=True)
|
|
80
|
+
raise typer.Exit(code=1)
|
|
136
81
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
def share_file_receive(code_args: Annotated[list[str], typer.Argument(help="Receive code or relay command. Examples: '7121-donor-olympic-bicycle' or '--relay 10.17.62.206:443 7121-donor-olympic-bicycle'")],
|
|
144
|
-
) -> None:
|
|
145
|
-
"""Receive a file using croc with relay server.
|
|
146
|
-
Usage examples:
|
|
147
|
-
devops network receive 7121-donor-olympic-bicycle
|
|
148
|
-
devops network receive -- --relay 10.17.62.206:443 7121-donor-olympic-bicycle
|
|
149
|
-
devops network receive -- croc --relay 10.17.62.206:443 7121-donor-olympic-bicycle
|
|
82
|
+
if backend == "filebrowser":
|
|
83
|
+
db_path = Path.home().joinpath(".config/filebrowser/filebrowser.db")
|
|
84
|
+
db_path.parent.mkdir(parents=True, exist_ok=True)
|
|
85
|
+
command = f"""
|
|
86
|
+
filebrowser users add {username} "{password}" --database {db_path}
|
|
87
|
+
filebrowser --address 0.0.0.0 --port {port} --root "{path_obj}" --database {db_path}
|
|
150
88
|
"""
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
# If no args passed via typer, try to get them from sys.argv directly
|
|
159
|
-
# This handles the case where -- was used and arguments weren't parsed by typer
|
|
160
|
-
if not code_args or (len(code_args) == 1 and code_args[0] in ['--relay', 'croc']):
|
|
161
|
-
# Find the index of 'rx' or 'receive' in sys.argv and get everything after it
|
|
162
|
-
try:
|
|
163
|
-
for i, arg in enumerate(sys.argv):
|
|
164
|
-
if arg in ['rx', 'receive', 'r'] and i + 1 < len(sys.argv):
|
|
165
|
-
code_args = sys.argv[i + 1:]
|
|
166
|
-
break
|
|
167
|
-
except Exception:
|
|
168
|
-
pass
|
|
169
|
-
|
|
170
|
-
# Join all arguments
|
|
171
|
-
input_str = " ".join(code_args)
|
|
172
|
-
tokens = input_str.split()
|
|
173
|
-
|
|
174
|
-
# Parse input to extract relay server and secret code
|
|
175
|
-
relay_server: str | None = None
|
|
176
|
-
secret_code: str | None = None
|
|
177
|
-
|
|
178
|
-
# Remove 'croc' and 'export' from tokens if present
|
|
179
|
-
tokens = [t for t in tokens if t not in ['croc', 'export']]
|
|
180
|
-
|
|
181
|
-
# Look for --relay flag and capture next token
|
|
182
|
-
relay_idx = -1
|
|
183
|
-
for i, token in enumerate(tokens):
|
|
184
|
-
if token == '--relay' and i + 1 < len(tokens):
|
|
185
|
-
relay_server = tokens[i + 1]
|
|
186
|
-
relay_idx = i
|
|
187
|
-
break
|
|
188
|
-
|
|
189
|
-
# Look for CROC_SECRET= prefix in any token
|
|
190
|
-
for token in tokens:
|
|
191
|
-
if token.startswith('CROC_SECRET='):
|
|
192
|
-
secret_code = token.split('=', 1)[1].strip('"').strip("'")
|
|
193
|
-
break
|
|
194
|
-
|
|
195
|
-
# If no secret code found yet, look for tokens with dashes (typical pattern: number-word-word-word)
|
|
196
|
-
# Skip relay server and relay flag
|
|
197
|
-
if not secret_code:
|
|
198
|
-
for i, token in enumerate(tokens):
|
|
199
|
-
if '-' in token and not token.startswith('-') and token != relay_server:
|
|
200
|
-
if relay_idx >= 0 and (i == relay_idx or i == relay_idx + 1):
|
|
201
|
-
continue # Skip relay server parts
|
|
202
|
-
secret_code = token
|
|
203
|
-
break
|
|
204
|
-
|
|
205
|
-
if not secret_code and not relay_server:
|
|
206
|
-
typer.echo(f"❌ Error: Could not parse croc receive code from input: {input_str}", err=True)
|
|
207
|
-
typer.echo("Usage:", err=True)
|
|
208
|
-
typer.echo(" devops network receive 7121-donor-olympic-bicycle", err=True)
|
|
209
|
-
typer.echo(" devops network receive -- --relay 10.17.62.206:443 7121-donor-olympic-bicycle", err=True)
|
|
89
|
+
elif backend == "miniserve":
|
|
90
|
+
command = f"""miniserve --port {port} --interfaces 0.0.0.0 --auth {username}:{password} --upload-files --mkdir --enable-tar --enable-tar-gz --enable-zip --qrcode "{path_obj}" """
|
|
91
|
+
elif backend == "easy-sharing":
|
|
92
|
+
command = f"""easy-sharing --port {port} --username {username} --password "{password}" "{path_obj}" """
|
|
93
|
+
else:
|
|
94
|
+
typer.echo(f"❌ ERROR: Unknown backend '{backend}'", err=True)
|
|
210
95
|
raise typer.Exit(code=1)
|
|
211
96
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
97
|
+
from machineconfig.utils.code import exit_then_run_shell_script
|
|
98
|
+
exit_then_run_shell_script(script=command, strict=False)
|
|
99
|
+
# import subprocess
|
|
100
|
+
# import time
|
|
101
|
+
# server_process: subprocess.Popen[bytes]
|
|
102
|
+
# server_process = subprocess.Popen(command, shell=True)
|
|
103
|
+
# processes = [server_process]
|
|
104
|
+
# if over_internet:
|
|
105
|
+
# ngrok_process = subprocess.Popen(f"ngrok http {port}", shell=True)
|
|
106
|
+
# processes.append(ngrok_process)
|
|
107
|
+
# time.sleep(3)
|
|
108
|
+
# try:
|
|
109
|
+
# import requests
|
|
110
|
+
# response = requests.get("http://localhost:4040/api/tunnels")
|
|
111
|
+
# data = response.json()
|
|
112
|
+
# public_url = data['tunnels'][0]['public_url']
|
|
113
|
+
# print(f"🌐 Ngrok tunnel ready: {public_url}")
|
|
114
|
+
# except Exception as e:
|
|
115
|
+
# print(f"Could not retrieve ngrok URL: {e}")
|
|
226
116
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
117
|
+
# try:
|
|
118
|
+
# while True:
|
|
119
|
+
# print(f"Share server ({backend}) is running. Press Ctrl+C to stop.")
|
|
120
|
+
# time.sleep(2)
|
|
121
|
+
# except KeyboardInterrupt:
|
|
122
|
+
# print("\nTerminating processes...")
|
|
123
|
+
# for p in processes:
|
|
124
|
+
# p.terminate()
|
|
125
|
+
# p.wait()
|
|
230
126
|
|
|
231
127
|
|
|
232
128
|
def get_share_file_app():
|
|
@@ -238,7 +134,7 @@ def get_share_file_app():
|
|
|
238
134
|
return app
|
|
239
135
|
|
|
240
136
|
def main_with_parser():
|
|
241
|
-
typer.run(
|
|
137
|
+
typer.run(web_file_explorer)
|
|
242
138
|
|
|
243
139
|
|
|
244
140
|
if __name__ == "__main__":
|
|
@@ -99,7 +99,7 @@ git pull originEnc master
|
|
|
99
99
|
uv_project_dir = f"""{str(Path.home().joinpath("code/machineconfig"))}"""
|
|
100
100
|
uv_with = None
|
|
101
101
|
else:
|
|
102
|
-
uv_with = ["machineconfig>=7.
|
|
102
|
+
uv_with = ["machineconfig>=7.40"]
|
|
103
103
|
uv_project_dir = None
|
|
104
104
|
|
|
105
105
|
import tempfile
|
|
@@ -8,7 +8,7 @@ def analyze_repo_development(repo_path: Annotated[str, typer.Argument(..., help=
|
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
count_lines_path = Path(count_lines.__file__)
|
|
10
10
|
# --project $HOME/code/ machineconfig --group plot
|
|
11
|
-
cmd = f"""uv run --python 3.14 --with "machineconfig[plot]>=7.
|
|
11
|
+
cmd = f"""uv run --python 3.14 --with "machineconfig[plot]>=7.40" {count_lines_path} analyze-over-time {repo_path}"""
|
|
12
12
|
from machineconfig.utils.code import run_shell_script
|
|
13
13
|
run_shell_script(cmd)
|
|
14
14
|
|
|
@@ -7,7 +7,7 @@ $user = ''
|
|
|
7
7
|
$sharePath = ''
|
|
8
8
|
$driveLetter = ''
|
|
9
9
|
|
|
10
|
-
uv run --python 3.14 --with "machineconfig>=7.
|
|
10
|
+
uv run --python 3.14 --with "machineconfig>=7.40" python -m machineconfig.scripts.python.mount_ssh
|
|
11
11
|
|
|
12
12
|
net use T: \\sshfs.kr\$user@$host.local
|
|
13
13
|
# this worked: net use T: \\sshfs\alex@alex-p51s-5.local
|
|
@@ -25,3 +25,17 @@ enable = true
|
|
|
25
25
|
max-wrap = 25 # increase value to reduce forced mid-word wrapping
|
|
26
26
|
max-indent-retain = 0
|
|
27
27
|
wrap-indicator = "" # set wrap-indicator to "" to hide it
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# https://yazi-rs.github.io/docs/tips#helix-with-zellij
|
|
31
|
+
# ~/.config/helix/config.toml
|
|
32
|
+
[keys.normal]
|
|
33
|
+
C-y = ":sh zellij run -n Yazi -c -f -x 10%% -y 10%% --width 80%% --height 80%% -- bash ~/.config/helix/yazi-picker.sh open %{buffer_name}"
|
|
34
|
+
# ~/.config/helix/config.toml
|
|
35
|
+
[keys.normal.C-y]
|
|
36
|
+
# Open the file(s) in the current window
|
|
37
|
+
y = ":sh zellij run -n Yazi -c -f -x 10%% -y 10%% --width 80%% --height 80%% -- bash ~/.config/helix/yazi-picker.sh open %{buffer_name}"
|
|
38
|
+
# Open the file(s) in a vertical split
|
|
39
|
+
v = ":sh zellij run -n Yazi -c -f -x 10%% -y 10%% --width 80%% --height 80%% -- bash ~/.config/helix/yazi-picker.sh vsplit %{buffer_name}"
|
|
40
|
+
# Open the file(s) in a horizontal split
|
|
41
|
+
h = ":sh zellij run -n Yazi -c -f -x 10%% -y 10%% --width 80%% --height 80%% -- bash ~/.config/helix/yazi-picker.sh hsplit %{buffer_name}"
|
|
@@ -20,8 +20,9 @@ case "$file" in
|
|
|
20
20
|
echo "x: $x, y: $y, width: $width, height: $height"
|
|
21
21
|
|
|
22
22
|
if [ -n "$x" ]; then
|
|
23
|
-
echo "📐 Dimensions provided by caller, passing to viu"
|
|
24
|
-
viu "$file" -x "$x" -y "$y" -w "$width" -h "$height"
|
|
23
|
+
# echo "📐 Dimensions provided by caller, passing to viu"
|
|
24
|
+
# viu "$file" -x "$x" -y "$y" -w "$width" -h "$height"
|
|
25
|
+
# chafa --fit-width -f sixel "$file"
|
|
25
26
|
echo "✅ Finished viu"
|
|
26
27
|
chafa "$file"
|
|
27
28
|
echo "✅ Finished chafa"
|
|
@@ -37,6 +37,7 @@ add_to_path_if_not_already \
|
|
|
37
37
|
. $CONFIG_ROOT/settings/broot/br.sh
|
|
38
38
|
. $CONFIG_ROOT/settings/lf/linux/exe/lfcd.sh
|
|
39
39
|
. $CONFIG_ROOT/settings/tere/terecd.sh
|
|
40
|
+
. $CONFIG_ROOT/settings/yazi/shell/yazi_cd.sh
|
|
40
41
|
. $CONFIG_ROOT/scripts/linux/wrap_mcfg
|
|
41
42
|
|
|
42
43
|
# check if file in ~/dotfiles/machineconfig/init_linux.sh exists and source it
|
|
@@ -56,7 +57,7 @@ alias r='wrap_in_shell_script croshell'
|
|
|
56
57
|
alias u='wrap_in_shell_script utils'
|
|
57
58
|
alias t='wrap_in_shell_script terminal'
|
|
58
59
|
alias ms='wrap_in_shell_script msearch'
|
|
59
|
-
|
|
60
|
+
alias x='. $CONFIG_ROOT/scripts/linux/wrap_mcfg explore'
|
|
60
61
|
|
|
61
62
|
# alias gcs='gh copilot suggest -t shell'
|
|
62
63
|
# alias gcg='gh copilot suggest -t git'
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
-- https://yazi-rs.github.io/docs/tips#symlink-in-status
|
|
4
|
+
-- Status:children_add(function(self)
|
|
5
|
+
-- local h = self._current.hovered
|
|
6
|
+
-- if h and h.link_to then
|
|
7
|
+
-- return " -> " .. tostring(h.link_to)
|
|
8
|
+
-- else
|
|
9
|
+
-- return ""
|
|
10
|
+
-- end
|
|
11
|
+
-- end, 3300, Status.LEFT)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
-- https://yazi-rs.github.io/docs/tips#user-group-in-status
|
|
15
|
+
-- Status:children_add(function()
|
|
16
|
+
-- local h = cx.active.current.hovered
|
|
17
|
+
-- if not h or ya.target_family() ~= "unix" then
|
|
18
|
+
-- return ""
|
|
19
|
+
-- end
|
|
20
|
+
|
|
21
|
+
-- return ui.Line {
|
|
22
|
+
-- ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
|
|
23
|
+
-- ":",
|
|
24
|
+
-- ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
|
|
25
|
+
-- " ",
|
|
26
|
+
-- }
|
|
27
|
+
-- end, 500, Status.RIGHT)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
-- https://yazi-rs.github.io/docs/tips#username-hostname-in-header
|
|
31
|
+
-- Header:children_add(function()
|
|
32
|
+
-- if ya.target_family() ~= "unix" then
|
|
33
|
+
-- return ""
|
|
34
|
+
-- end
|
|
35
|
+
-- return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
|
|
36
|
+
-- end, 500, Header.LEFT)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
|
|
2
|
+
[[mgr.prepend_keymap]]
|
|
3
|
+
on = "!"
|
|
4
|
+
for = "unix"
|
|
5
|
+
run = 'shell "$SHELL" --block'
|
|
6
|
+
desc = "Open $SHELL here"
|
|
7
|
+
|
|
8
|
+
# If you also using Yazi on Windows:
|
|
9
|
+
[[mgr.prepend_keymap]]
|
|
10
|
+
on = "!"
|
|
11
|
+
for = "windows"
|
|
12
|
+
run = 'shell "powershell.exe" --block'
|
|
13
|
+
desc = "Open PowerShell here"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# FROM https://github.com/yazi-rs/plugins/tree/main/toggle-pane.yazi
|
|
17
|
+
# keymap.toml
|
|
18
|
+
[[mgr.prepend_keymap]]
|
|
19
|
+
on = "T"
|
|
20
|
+
run = "plugin toggle-pane min-preview"
|
|
21
|
+
desc = "Show or hide the preview pane"
|
|
22
|
+
# keymap.toml
|
|
23
|
+
[[mgr.prepend_keymap]]
|
|
24
|
+
on = "T"
|
|
25
|
+
run = "plugin toggle-pane max-preview"
|
|
26
|
+
desc = "Maximize or restore the preview pane"
|
|
27
|
+
|
|
28
|
+
[[mgr.prepend_keymap]]
|
|
29
|
+
on = "M" # whatever key you choose
|
|
30
|
+
run = "plugin toggle-pane"
|
|
31
|
+
desc = "Toggle preview pane / maximize pane"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# https://yazi-rs.github.io/docs/tips#macos-quick-look
|
|
35
|
+
[[mgr.prepend_keymap]]
|
|
36
|
+
on = "<C-p>"
|
|
37
|
+
run = 'shell -- qlmanage -p "$@"'
|
|
38
|
+
|
|
39
|
+
[[mgr.prepend_keymap]]
|
|
40
|
+
on = "F"
|
|
41
|
+
run = 'shell -- ~/.config/machineconfig/scripts/linux/wrap_mcfg fire "$0"'
|
|
42
|
+
desc = "Run fire on hovered file"
|
|
43
|
+
|
|
44
|
+
[[mgr.prepend_keymap]]
|
|
45
|
+
on = "R"
|
|
46
|
+
run = 'shell -- ~/.config/machineconfig/scripts/linux/wrap_mcfg croshell "$0"'
|
|
47
|
+
desc = "Run croshell on hovered file"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
[[mgr.prepend_keymap]]
|
|
51
|
+
on = [ "g", "r" ]
|
|
52
|
+
run = 'shell -- ya emit cd "$(git rev-parse --show-toplevel)"'
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
. <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
|
|
3
3
|
. <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/linux/wrap_mcfg")
|
|
4
4
|
|
|
5
|
-
alias devops='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
6
|
-
alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
7
|
-
alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
8
|
-
alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
9
|
-
alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
10
|
-
alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
11
|
-
alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
12
|
-
alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
13
|
-
alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
14
|
-
alias msearch='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.
|
|
5
|
+
alias devops='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" devops'
|
|
6
|
+
alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" cloud'
|
|
7
|
+
alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" agents'
|
|
8
|
+
alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" sessions'
|
|
9
|
+
alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" ftpx'
|
|
10
|
+
alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" fire'
|
|
11
|
+
alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" croshell'
|
|
12
|
+
alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" utils'
|
|
13
|
+
alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" terminal'
|
|
14
|
+
alias msearch='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.40" msearch'
|
|
15
15
|
|
|
16
16
|
alias d='wrap_in_shell_script devops'
|
|
17
17
|
alias c='wrap_in_shell_script cloud'
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
|
|
4
4
|
iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/windows/wrap_mcfg.ps1").Content
|
|
5
5
|
|
|
6
|
-
function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
7
|
-
function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
8
|
-
function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
9
|
-
function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
10
|
-
function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
11
|
-
function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
12
|
-
function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
13
|
-
function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
14
|
-
function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
15
|
-
function msearch { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.
|
|
6
|
+
function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" devops $args }
|
|
7
|
+
function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" cloud $args }
|
|
8
|
+
function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" agents $args }
|
|
9
|
+
function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" sessions $args }
|
|
10
|
+
function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" ftpx $args }
|
|
11
|
+
function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" fire $args }
|
|
12
|
+
function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" croshell $args }
|
|
13
|
+
function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" utils $args }
|
|
14
|
+
function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" terminal $args }
|
|
15
|
+
function msearch { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.40" msearch $args }
|
|
16
16
|
|
|
17
17
|
function d { wrap_in_shell_script devops @args }
|
|
18
18
|
function c { wrap_in_shell_script cloud @args }
|
machineconfig/utils/ssh.py
CHANGED
|
@@ -8,7 +8,7 @@ from machineconfig.utils.terminal import Response
|
|
|
8
8
|
from machineconfig.utils.accessories import pprint, randstr
|
|
9
9
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
10
10
|
UV_RUN_CMD = "$HOME/.local/bin/uv run" if platform.system() != "Windows" else """& "$env:USERPROFILE/.local/bin/uv" run"""
|
|
11
|
-
MACHINECONFIG_VERSION = "machineconfig>=7.
|
|
11
|
+
MACHINECONFIG_VERSION = "machineconfig>=7.40"
|
|
12
12
|
DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
|
|
13
13
|
|
|
14
14
|
class SSH:
|
|
@@ -51,7 +51,7 @@ 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=IVOjJv4TXTf_laFr9OwwDtjmkssFvTbsTB8M-CpxAus,82754
|
|
55
55
|
machineconfig/jobs/installer/package_groups.py,sha256=VvnRCAi_Xf3x6HuhtiSIcBqcgwcQ7A58V4Ed5M4P-ww,5271
|
|
56
56
|
machineconfig/jobs/installer/custom/boxes.py,sha256=ws8QRbDn48oKhbQntr54I0nSfkwINbprjTy0HOpuX40,1974
|
|
57
57
|
machineconfig/jobs/installer/custom/gh.py,sha256=gn7TUSrsLx7uqFqj1Z-iYglS0EYBSgtJ9jWHxaJIfXM,4119
|
|
@@ -95,9 +95,9 @@ machineconfig/profile/backup.toml,sha256=Hb25sIdKVvLqOF62NgiOpGZxd45I6IhsNHu623R
|
|
|
95
95
|
machineconfig/profile/bash_shell_profiles.md,sha256=mio0xkMTwO-F3fikWIfgcdQaPCmQrmkxJMNtZsTe9TI,514
|
|
96
96
|
machineconfig/profile/create_helper.py,sha256=JLBryJ192Gk0ztbNhv9PFlsMVB6ZQH_2GVWHFeRylH8,1663
|
|
97
97
|
machineconfig/profile/create_links.py,sha256=42U5dEu7fMnGBAqyhQ1VspFaZg3VssMMQSdpGEmpHnE,14199
|
|
98
|
-
machineconfig/profile/create_links_export.py,sha256=
|
|
98
|
+
machineconfig/profile/create_links_export.py,sha256=DNBdylSzDdBq_wAduIYbscpOWoTx_QVynOP27y0mklA,4444
|
|
99
99
|
machineconfig/profile/create_shell_profile.py,sha256=jjCwH3rNxVOcb9sgbZQsjYlKGfqhDvPxBDrkFLThT3c,7221
|
|
100
|
-
machineconfig/profile/mapper.toml,sha256=
|
|
100
|
+
machineconfig/profile/mapper.toml,sha256=pSL6gDHJwkJps0-qqw3ApZBnamADVSH2OuJmrK2jBzU,12666
|
|
101
101
|
machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
|
|
102
102
|
machineconfig/profile/records/linux/apps_summary_report.csv,sha256=pw9djvaRUPalKDLn2sl3odcbD2_Zx3aEupsQ8UPfaaY,2738
|
|
103
103
|
machineconfig/profile/records/linux/apps_summary_report.md,sha256=l77oofA6Rliql0ZgKGIZi8bstFoGyyGTxeS8p2PtOj0,5634
|
|
@@ -114,10 +114,11 @@ machineconfig/scripts/nu/wrap_mcfg.nu,sha256=9heiUHVkHjI_AMXT5QJJixk7ZK_hJNV_A8l
|
|
|
114
114
|
machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
115
|
machineconfig/scripts/python/agents.py,sha256=aVbLQDgpngXZm4taHcED4sAxyHvV2_Dz5VW3apPcQcY,10651
|
|
116
116
|
machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yyeehw_cU8,1263
|
|
117
|
-
machineconfig/scripts/python/croshell.py,sha256=
|
|
117
|
+
machineconfig/scripts/python/croshell.py,sha256=lpi77ZnKWOirT8Vkb_6bUg7G82XBZhqRgOVcvC_wMG8,8379
|
|
118
118
|
machineconfig/scripts/python/define.py,sha256=AtuVac6tJeDMcxtbWmQh1TH3dYAPSGFdO51b75zJVeI,717
|
|
119
119
|
machineconfig/scripts/python/devops.py,sha256=Lv4d-UlyOREj4VTcu_pxswYo54Mawe3XGeKjreGQDYg,2222
|
|
120
120
|
machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
|
|
121
|
+
machineconfig/scripts/python/explore.py,sha256=3kNglM1KYp57U8yrbWeHEslN458-xieRuFYsJAhrpIs,1247
|
|
121
122
|
machineconfig/scripts/python/fire_jobs.py,sha256=r_V5ZpZhE2-Hn_f5pvzbulUTl7_2S4AI_M71WlD4Vlw,13701
|
|
122
123
|
machineconfig/scripts/python/ftpx.py,sha256=A13hL_tDYfcsaK9PkshK-0lrUS6KPhPCtwqWtLSo6IM,9764
|
|
123
124
|
machineconfig/scripts/python/interactive.py,sha256=jFHpiQq_lisa51BS4-qUlWPJ1-pmHmPAfA6dixdsOzY,11745
|
|
@@ -158,7 +159,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
|
|
|
158
159
|
machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
159
160
|
machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
|
|
160
161
|
machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
|
|
161
|
-
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=
|
|
162
|
+
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=iyjWG20F4pNlecrWR-3NaH_IFE6YnMVqo73kc3W-5qg,6932
|
|
162
163
|
machineconfig/scripts/python/helpers_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
163
164
|
machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py,sha256=YD6-rtudHNip8tx85amSmOZZIHBP9khq4az3dF41j6U,5934
|
|
164
165
|
machineconfig/scripts/python/helpers_agents/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
|
|
@@ -188,13 +189,14 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
|
|
|
188
189
|
machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
189
190
|
machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
|
|
190
191
|
machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
|
-
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=
|
|
192
|
+
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=8RU2EC6cDgqSZXVARlkzhkLd1MtLkkDmyTBl68-nZE8,5922
|
|
192
193
|
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=SL6P3Ioib3P9OWG1GmULb5-l4ySYZ1RuuIDCHY4lCyU,3502
|
|
193
194
|
machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
|
|
194
|
-
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=
|
|
195
|
+
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=u_2l5Cc3dFnh0seKrbH9j-Z0bUCrgy45MOM6HCjgkQg,7562
|
|
195
196
|
machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=g6qDJ_da6BquSmNUUHY-xK6BY4MlAE4wZQaZXYthfho,12495
|
|
196
|
-
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=
|
|
197
|
-
machineconfig/scripts/python/helpers_devops/
|
|
197
|
+
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=b_3sHYEXb8OOdXEN2iprOvI73tEkHH9pfFbOFlUvxnE,6515
|
|
198
|
+
machineconfig/scripts/python/helpers_devops/cli_share_file.py,sha256=AL04784ncdP9ue5bKyqJfXrMksxjFKtuv_w353kQQsI,6298
|
|
199
|
+
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=S2xQ7sDVvfvGKcJNlquXj9Gc0ofk2EXnfvpRx2AWVD8,6278
|
|
198
200
|
machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
|
|
199
201
|
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=bLUhBkv7KwG7BQ-j83OLHkfYkRyTLhq3SdwtbEflLY4,11882
|
|
200
202
|
machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Dn8luB6QJzxKiiFSC-NMqiYddWZoca3A8eOjMYZDzTc,5598
|
|
@@ -229,9 +231,9 @@ machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wd
|
|
|
229
231
|
machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
|
|
230
232
|
machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
|
|
231
233
|
machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
|
|
232
|
-
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=
|
|
234
|
+
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=zOztyXfM9kFBZVxlAQLGd86dLltQ9AF46a-WH4OwFxE,11271
|
|
233
235
|
machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
|
|
234
|
-
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=
|
|
236
|
+
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=hqRyPC3lON22FC-nUUt8U2Hrnpdujfw8zOWUpNxmhK4,607
|
|
235
237
|
machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
|
|
236
238
|
machineconfig/scripts/python/helpers_repos/grource.py,sha256=oJj1-gqlkV3Z_BrIOXRmtzoXcuBl0xTYfulJ5D0srOc,14656
|
|
237
239
|
machineconfig/scripts/python/helpers_repos/record.py,sha256=FQo0swuJZOp0I2XGK-t1OQU4zJHmQ2z9zTpDD30Tmg4,11001
|
|
@@ -259,7 +261,7 @@ machineconfig/scripts/windows/wrap_mcfg.ps1,sha256=tFCj4wK7B35Uf6kdGCRV7EIr1xZFT
|
|
|
259
261
|
machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
|
|
260
262
|
machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
|
|
261
263
|
machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
|
|
262
|
-
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=
|
|
264
|
+
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=ZUy6_oLtUvVAGlqsKnuZTndcLCL9fUPMzSBfYcWzZVM,322
|
|
263
265
|
machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
|
|
264
266
|
machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
|
|
265
267
|
machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
|
|
@@ -269,7 +271,7 @@ machineconfig/settings/broot/brootcd.ps1,sha256=BB8uGnoVywxFWSgwsHxlbS8V4W_Qom3L
|
|
|
269
271
|
machineconfig/settings/broot/conf.toml,sha256=2C2ggpFR0Z-Sceu0iwHW0LFz45AjwyeCBD0PSP0VIoo,55
|
|
270
272
|
machineconfig/settings/glow/glow.yml,sha256=59eFsIPBXRgJSVb6kcA7XHkWuLe0_wNandhc9KGykmE,245
|
|
271
273
|
machineconfig/settings/gromit-mpx/gromit-mpx.cfg,sha256=NW7a4OmGPpMCiFkQNNFNdUf5VqL1DN8Tkiz2oVRt7Gw,1067
|
|
272
|
-
machineconfig/settings/helix/config.toml,sha256=
|
|
274
|
+
machineconfig/settings/helix/config.toml,sha256=RxQG1rtcqI9ZduT5dxqyHeAJy0UXc_3POuuW4XVPsqU,1338
|
|
273
275
|
machineconfig/settings/helix/languages.toml,sha256=d6zOu9PjmGhOyvYKHD6LMeUXtVF5vR6IqxQ-jpRpRz4,725
|
|
274
276
|
machineconfig/settings/keras/keras.json,sha256=uSJa-eCun6xl6xvlVP-totLgWDw7etCMzxZT5jS2mgw,115
|
|
275
277
|
machineconfig/settings/keyboard/espanso/config/default.yml,sha256=RBIuA4AsAWB8BoRojQhbkVV0LtjL0sYFPaLtgbWookM,1685
|
|
@@ -288,8 +290,8 @@ machineconfig/settings/lf/linux/autocall/rename.sh,sha256=47DEQpj8HBSa-_TImW-5JC
|
|
|
288
290
|
machineconfig/settings/lf/linux/exe/cleaner.sh,sha256=NKK30rUcrHXnwy8srylyaWL-XJdDWJIjF4a3mfbdEsA,209
|
|
289
291
|
machineconfig/settings/lf/linux/exe/fzf_nano.sh,sha256=aqYZ2mb-gLu4C6Ct-Tntfb9Xz6LcIYu3hVjQ_EmTXoI,599
|
|
290
292
|
machineconfig/settings/lf/linux/exe/leftpane_previewer.sh,sha256=KXMq81hIvU9uzOuanluVcxVgJmEOYy-5sUbzcuc9b6U,200
|
|
291
|
-
machineconfig/settings/lf/linux/exe/lfcd.sh,sha256=
|
|
292
|
-
machineconfig/settings/lf/linux/exe/previewer.sh,sha256=
|
|
293
|
+
machineconfig/settings/lf/linux/exe/lfcd.sh,sha256=qU2AtGR22UWR3Isw5UkJ4OZdxW2VFR3FOaIEJDVjYTg,771
|
|
294
|
+
machineconfig/settings/lf/linux/exe/previewer.sh,sha256=sjiU6S_P8ExSmCPGz-Uwmrrn075rBmj_-3H4Cvr-ROI,1259
|
|
293
295
|
machineconfig/settings/lf/linux/exe/previewer_archive.sh,sha256=MGAlXrso-RSrvBbkFnmBHSGoPB54ZHtY_s5Qd1-fNZM,3536
|
|
294
296
|
machineconfig/settings/lf/windows/cd_tere.ps1,sha256=kiW7LiE0Pe2Pjq_4CO2N36wHx_0N-9fXXUDUvHWCOuc,203
|
|
295
297
|
machineconfig/settings/lf/windows/cd_zoxide.ps1,sha256=gQKJPa_YDmp5BiCKeYYHkZB_p7py8EXIhXtZi6vnN8o,159
|
|
@@ -331,7 +333,7 @@ machineconfig/settings/rofi/config.rasi,sha256=nDX5B8wdXQYF1fwiOTBRJUI4l_gQbYaLa
|
|
|
331
333
|
machineconfig/settings/rofi/config_default.rasi,sha256=rTfKnC-bZuWX1l-lWQACCUOE1ShhkfykAxtXX9PlQHE,4694
|
|
332
334
|
machineconfig/settings/shells/alacritty/alacritty.toml,sha256=EbL-2Y4QunW1pvRWB2yuLCw8MMPONheJr5LFoWRieUQ,871
|
|
333
335
|
machineconfig/settings/shells/alacritty/alacritty.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
334
|
-
machineconfig/settings/shells/bash/init.sh,sha256=
|
|
336
|
+
machineconfig/settings/shells/bash/init.sh,sha256=PrBMBWwQM_gqY5Q9kCQ0oOTaeiuCWn0TSOvjbzPaRhk,3077
|
|
335
337
|
machineconfig/settings/shells/hyper/.hyper.js,sha256=h-HqeYlvPvPD4Ee7828Cxo87uVkzbMGJFqXTZIWoegw,8884
|
|
336
338
|
machineconfig/settings/shells/ipy/profiles/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
337
339
|
machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -355,9 +357,11 @@ machineconfig/settings/tere/terecd.sh,sha256=vDKRbldub0aGQwnWtDwkPnSQHKpVQiDg1RT
|
|
|
355
357
|
machineconfig/settings/tmux/.tmate.conf,sha256=dhj8IbNUe_oaBSmnAE-k2rcHJ6_zcd7pHqrmKP19zA0,57
|
|
356
358
|
machineconfig/settings/tmux/.tmux.conf,sha256=55qyCgKHOyg70kJ42GXrHwqAAtRtnsWtdHCuPt-8Hy8,94
|
|
357
359
|
machineconfig/settings/wsl/.wslconfig,sha256=wL4oWxRw_0vLQXheSLNuGUQqypqEKlVqYALosPI9jhY,1279
|
|
358
|
-
machineconfig/settings/yazi/
|
|
360
|
+
machineconfig/settings/yazi/init.lua,sha256=6ed3Ao_Q32DyMB8YvN9huH3SQe70eOIQ0pJ23hXymCE,970
|
|
361
|
+
machineconfig/settings/yazi/keymap.toml,sha256=mlYE3PPdIYaT3xQYkR3imDurbr1y93xy1Fkj6OYmW7s,1274
|
|
359
362
|
machineconfig/settings/yazi/theme.toml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
360
|
-
machineconfig/settings/yazi/yazi.toml,sha256=
|
|
363
|
+
machineconfig/settings/yazi/yazi.toml,sha256=Qs2AbcrdFpbp_c8vFR3eSE_Ue3uPRjckj4hYvfwaEnw,150
|
|
364
|
+
machineconfig/settings/yazi/shell/yazi_cd.sh,sha256=oC_MSBbnSwCg6qgGe598Qhm0V2B9RD5IcIbKEabn7aE,208
|
|
361
365
|
machineconfig/settings/zed/settings.json,sha256=WYuoJycLVhM1-_Haq2VlERds3W7LZFzJ1qJp7lwhnos,789
|
|
362
366
|
machineconfig/settings/zellij/config.kdl,sha256=J1FOE2hSinVG26LPlvMhTBWKjZAw_2wcoSEZrwKgn5M,10329
|
|
363
367
|
machineconfig/settings/zellij/config.orig.kdl,sha256=0KyYigBGUD5GdTmH9pE8f66LIFnll44Xz7s9EYD1z8c,10349
|
|
@@ -378,7 +382,7 @@ machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE3
|
|
|
378
382
|
machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
|
|
379
383
|
machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
|
|
380
384
|
machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
|
|
381
|
-
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=
|
|
385
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=ZJ1hofuXlW7cTzh3D-tEnbQyivBid2nIDZx_pvsvwgo,1581
|
|
382
386
|
machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
|
|
383
387
|
machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
|
|
384
388
|
machineconfig/setup_mac/apps_gui.sh,sha256=3alvddg918oMlJB2aUWJWpGGoaq5atlxcaOwhnyXlRI,9517
|
|
@@ -393,7 +397,7 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
|
|
|
393
397
|
machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
|
|
394
398
|
machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
|
|
395
399
|
machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
|
|
396
|
-
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=
|
|
400
|
+
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=ptqDuvaIG7Zm2-2iinHY7BMI75nIbXgGNOQ75r1KTCg,1916
|
|
397
401
|
machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
398
402
|
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
|
|
399
403
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -411,7 +415,7 @@ machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,
|
|
|
411
415
|
machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
|
|
412
416
|
machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
|
|
413
417
|
machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
|
|
414
|
-
machineconfig/utils/ssh.py,sha256=
|
|
418
|
+
machineconfig/utils/ssh.py,sha256=MLHbiZzVvn0QbNfhL4CbXBDNSjyTIAwqqhQMX4-0GsM,39274
|
|
415
419
|
machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
|
|
416
420
|
machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
|
|
417
421
|
machineconfig/utils/upgrade_packages.py,sha256=e4iJn_9vL2zCJxAR2dhKJjM0__ALKgI5yB1uBRxSjhQ,6994
|
|
@@ -440,8 +444,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
|
|
|
440
444
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
441
445
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
442
446
|
machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
443
|
-
machineconfig-7.
|
|
444
|
-
machineconfig-7.
|
|
445
|
-
machineconfig-7.
|
|
446
|
-
machineconfig-7.
|
|
447
|
-
machineconfig-7.
|
|
447
|
+
machineconfig-7.44.dist-info/METADATA,sha256=0ykBKVEj443dNz7Ty8d27kDuZ-6sT5jTdfaS1jvr3Tg,3396
|
|
448
|
+
machineconfig-7.44.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
449
|
+
machineconfig-7.44.dist-info/entry_points.txt,sha256=_JNgkzaa_gVAWyZ6UwPwXXQqURRSvAGhrVQ1RiU2sHc,746
|
|
450
|
+
machineconfig-7.44.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
451
|
+
machineconfig-7.44.dist-info/RECORD,,
|
|
@@ -4,6 +4,7 @@ cloud = machineconfig.scripts.python.cloud:main
|
|
|
4
4
|
croshell = machineconfig.scripts.python.croshell:main
|
|
5
5
|
define = machineconfig.scripts.python.define:main
|
|
6
6
|
devops = machineconfig.scripts.python.devops:main
|
|
7
|
+
explore = machineconfig.scripts.python.explore:main
|
|
7
8
|
fire = machineconfig.scripts.python.fire_jobs:main
|
|
8
9
|
ftpx = machineconfig.scripts.python.ftpx:main
|
|
9
10
|
machineconfig = machineconfig.scripts.python.machineconfig:main
|
|
File without changes
|
|
File without changes
|