machineconfig 5.86__py3-none-any.whl → 5.88__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 +6 -6
- machineconfig/profile/create_links_export.py +9 -9
- machineconfig/scripts/python/agents.py +17 -17
- machineconfig/scripts/python/croshell.py +1 -1
- machineconfig/scripts/python/devops.py +8 -6
- machineconfig/scripts/python/devops_helpers/cli_config.py +10 -10
- machineconfig/scripts/python/devops_helpers/cli_nw.py +5 -5
- machineconfig/scripts/python/devops_helpers/cli_repos.py +20 -20
- machineconfig/scripts/python/devops_helpers/cli_self.py +6 -6
- machineconfig/scripts/python/devops_helpers/cli_share_server.py +6 -11
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +8 -8
- machineconfig/scripts/python/helpers_repos/grource.py +1 -1
- machineconfig/scripts/python/helpers_repos/secure_repo.py +6 -6
- machineconfig/scripts/python/interactive.py +2 -2
- machineconfig/scripts/python/nw/add_ssh_key.py +5 -5
- machineconfig/scripts/python/nw/devops_add_ssh_key.py +5 -5
- machineconfig/scripts/python/nw/mount_nfs +1 -1
- machineconfig/scripts/python/repos_helpers/count_lines.py +4 -4
- machineconfig/scripts/python/repos_helpers/count_lines_frontend.py +3 -2
- machineconfig/scripts/python/sessions.py +15 -15
- machineconfig/scripts/python/sessions_helpers/sessions_multiprocess.py +4 -4
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
- machineconfig/settings/shells/bash/init.sh +3 -3
- machineconfig/settings/shells/pwsh/init.ps1 +1 -1
- machineconfig/setup_linux/web_shortcuts/interactive.sh +1 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +1 -1
- machineconfig/utils/installer_utils/installer.py +5 -5
- machineconfig/utils/ssh.py +1 -1
- {machineconfig-5.86.dist-info → machineconfig-5.88.dist-info}/METADATA +2 -2
- {machineconfig-5.86.dist-info → machineconfig-5.88.dist-info}/RECORD +33 -33
- {machineconfig-5.86.dist-info → machineconfig-5.88.dist-info}/WHEEL +0 -0
- {machineconfig-5.86.dist-info → machineconfig-5.88.dist-info}/entry_points.txt +0 -0
- {machineconfig-5.86.dist-info → machineconfig-5.88.dist-info}/top_level.txt +0 -0
|
@@ -245,14 +245,14 @@
|
|
|
245
245
|
"doc": "🔗 Easy file sharing tool",
|
|
246
246
|
"fileNamePattern": {
|
|
247
247
|
"amd64": {
|
|
248
|
-
"linux": "npm
|
|
249
|
-
"windows": "npm
|
|
250
|
-
"macos": "npm
|
|
248
|
+
"linux": "npm i -g @ezshare/cli",
|
|
249
|
+
"windows": "npm i -g @ezshare/cli",
|
|
250
|
+
"macos": "npm i -g @ezshare/cli"
|
|
251
251
|
},
|
|
252
252
|
"arm64": {
|
|
253
|
-
"linux": "npm
|
|
254
|
-
"windows": "npm
|
|
255
|
-
"macos": "npm
|
|
253
|
+
"linux": "npm i -g @ezshare/cli",
|
|
254
|
+
"windows": "npm i -g @ezshare/cli",
|
|
255
|
+
"macos": "npm i -g @ezshare/cli"
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
},
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
import typer
|
|
3
|
-
from typing import Optional, Literal
|
|
3
|
+
from typing import Optional, Literal, Annotated
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def main_public_from_parser(method: Literal["symlink", "copy"]
|
|
7
|
-
on_conflict: Literal["throwError", "overwriteDefaultPath", "backupDefaultPath"]
|
|
8
|
-
which: Optional[str]
|
|
9
|
-
interactive: bool
|
|
6
|
+
def main_public_from_parser(method: Annotated[Literal["symlink", "copy"], typer.Option(..., help="Method to use for setting up the config file.")],
|
|
7
|
+
on_conflict: Annotated[Literal["throwError", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., help="Action to take on conflict")],
|
|
8
|
+
which: Annotated[Optional[str], typer.Option(..., help="Specific items to process")] = None,
|
|
9
|
+
interactive: Annotated[bool, typer.Option(..., help="Run in interactive mode")] = False):
|
|
10
10
|
"""Terminology:
|
|
11
11
|
SOURCE = Self-Managed-Config-File-Path
|
|
12
12
|
TARGET = Config-File-Default-Path
|
|
@@ -31,10 +31,10 @@ def main_public_from_parser(method: Literal["symlink", "copy"] = typer.Option(..
|
|
|
31
31
|
apply_mapper(mapper_data=items_objections, on_conflict=on_conflict, method=method)
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
def main_private_from_parser(method: Literal["symlink", "copy"]
|
|
35
|
-
on_conflict: Literal["throwError", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"]
|
|
36
|
-
which: Optional[str]
|
|
37
|
-
interactive: bool
|
|
34
|
+
def main_private_from_parser(method: Annotated[Literal["symlink", "copy"], typer.Option(..., help="Method to use for linking files")],
|
|
35
|
+
on_conflict: Annotated[Literal["throwError", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., help="Action to take on conflict")] = "throwError",
|
|
36
|
+
which: Annotated[Optional[str], typer.Option(..., help="Specific items to process")] = None,
|
|
37
|
+
interactive: Annotated[bool, typer.Option(..., help="Run in interactive mode")] = False):
|
|
38
38
|
from machineconfig.profile.create_links import ConfigMapper, read_mapper
|
|
39
39
|
|
|
40
40
|
mapper_full = read_mapper()["private"]
|
|
@@ -3,25 +3,25 @@
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import cast, Optional, get_args
|
|
6
|
+
from typing import cast, Optional, get_args, Annotated
|
|
7
7
|
import typer
|
|
8
8
|
from machineconfig.scripts.python.helpers_fire.fire_agents_helper_types import AGENTS, HOST, MODEL, PROVIDER
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def create(
|
|
12
|
-
agent: AGENTS
|
|
13
|
-
host: HOST
|
|
14
|
-
model: MODEL
|
|
15
|
-
provider: PROVIDER
|
|
16
|
-
context_path: Optional[Path]
|
|
17
|
-
separator: str
|
|
18
|
-
agent_load: int
|
|
19
|
-
prompt: Optional[str]
|
|
20
|
-
prompt_path: Optional[Path]
|
|
21
|
-
job_name: str
|
|
22
|
-
separate: bool
|
|
23
|
-
output_path: Optional[Path]
|
|
24
|
-
agents_dir: Optional[Path]
|
|
12
|
+
agent: Annotated[AGENTS, typer.Option(..., "--agents", "-a", help=f"Agent type. One of {', '.join(get_args(AGENTS)[:3])}")],
|
|
13
|
+
host: Annotated[HOST, typer.Option(..., "--host", "-h", help=f"Machine to run agents on. One of {', '.join(get_args(HOST))}")],
|
|
14
|
+
model: Annotated[MODEL, typer.Option(..., "--model", "-m", help=f"Model to use (for crush agent). One of {', '.join(get_args(MODEL)[:3])}")],
|
|
15
|
+
provider: Annotated[PROVIDER, typer.Option(..., "--provider", "-p", help=f"Provider to use (for crush agent). One of {', '.join(get_args(PROVIDER)[:3])}")],
|
|
16
|
+
context_path: Annotated[Optional[Path], typer.Option(..., "--context-path", "-c", help="Path to the context file/folder, defaults to .ai/todo/")] = None,
|
|
17
|
+
separator: Annotated[str, typer.Option(..., "--separator", "-s", help="Separator for context")] = "\n",
|
|
18
|
+
agent_load: Annotated[int, typer.Option(..., "--agent-load", "-al", help="Number of tasks per prompt")] = 13,
|
|
19
|
+
prompt: Annotated[Optional[str], typer.Option(..., "--prompt", "-P", help="Prompt prefix as string")] = None,
|
|
20
|
+
prompt_path: Annotated[Optional[Path], typer.Option(..., "--prompt-path", "-pp", help="Path to prompt file")] = None,
|
|
21
|
+
job_name: Annotated[str, typer.Option(..., "--job-name", "-j", help="Job name")] = "AI_Agents",
|
|
22
|
+
separate: Annotated[bool, typer.Option(..., "--separate", "-S", help="Keep prompt material in separate file to the context.")] = True,
|
|
23
|
+
output_path: Annotated[Optional[Path], typer.Option(..., "--output-path", "-o", help="Path to write the layout.json file")] = None,
|
|
24
|
+
agents_dir: Annotated[Optional[Path], typer.Option(..., "--agents-dir", "-ad", help="Directory to store agent files. If not provided, will be constructed automatically.")] = None,
|
|
25
25
|
):
|
|
26
26
|
|
|
27
27
|
from machineconfig.scripts.python.helpers_fire.fire_agents_help_launch import prep_agent_launch, get_agents_launch_layout
|
|
@@ -94,9 +94,9 @@ agents create "{context_path_resolved}" \\
|
|
|
94
94
|
|
|
95
95
|
|
|
96
96
|
def collect(
|
|
97
|
-
agent_dir: str
|
|
98
|
-
output_path: str
|
|
99
|
-
separator: str
|
|
97
|
+
agent_dir: Annotated[str, typer.Argument(..., help="Path to the agent directory containing the prompts folder")],
|
|
98
|
+
output_path: Annotated[str, typer.Argument(..., help="Path to write the concatenated material files")],
|
|
99
|
+
separator: Annotated[str, typer.Option(..., help="Separator to use when concatenating material files")] = "\n",
|
|
100
100
|
) -> None:
|
|
101
101
|
"""Collect all material files from an agent directory and concatenate them."""
|
|
102
102
|
if not Path(agent_dir).exists() or not Path(agent_dir).is_dir():
|
|
@@ -149,7 +149,7 @@ from pathlib import Path
|
|
|
149
149
|
else:
|
|
150
150
|
console.print(Panel("❌ Could not determine the local machineconfig repo root. Please ensure the `REPO_ROOT` in `source_of_truth.py` is correctly set to the local path of the machineconfig repo, or do not use the `--local` flag.", title="Error", border_style="red"))
|
|
151
151
|
return
|
|
152
|
-
else: ve_line = """--with "machineconfig[plot]>=5.
|
|
152
|
+
else: ve_line = """--with "machineconfig[plot]>=5.87" """
|
|
153
153
|
fire_line = f"uv run --python 3.14 {ve_line} {interpreter} {interactivity} {profile} {str(pyfile)}"
|
|
154
154
|
|
|
155
155
|
from machineconfig.utils.code import run_shell_script
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""devops with emojis"""
|
|
2
2
|
|
|
3
3
|
import typer
|
|
4
|
-
from typing import Optional
|
|
4
|
+
from typing import Optional, Annotated
|
|
5
5
|
|
|
6
6
|
import machineconfig.scripts.python.devops_helpers.cli_repos as cli_repos
|
|
7
7
|
import machineconfig.scripts.python.devops_helpers.cli_config as cli_config
|
|
@@ -10,15 +10,17 @@ import machineconfig.scripts.python.devops_helpers.cli_data as cli_data
|
|
|
10
10
|
import machineconfig.scripts.python.devops_helpers.cli_nw as cli_network
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
def
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
group: bool = typer.Option(False, "--group", "-g", help="Treat 'which' as a group name. A group is bundle of apps."),
|
|
17
|
-
interactive: bool = typer.Option(False, "--interactive", "-ia", help="Interactive selection of programs to install."),
|
|
13
|
+
def install(which: Annotated[Optional[str], typer.Argument(..., help="Comma-separated list of program names to install, or group name if --group flag is set.")],
|
|
14
|
+
group: Annotated[bool, typer.Option(..., "--group", "-g", help="Treat 'which' as a group name. A group is bundle of apps.")] = False,
|
|
15
|
+
interactive: Annotated[bool, typer.Option(..., "--interactive", "-ia", help="Interactive selection of programs to install.")] = False,
|
|
18
16
|
) -> None:
|
|
19
17
|
"""📦 Install essential packages"""
|
|
20
18
|
import machineconfig.utils.installer_utils.installer as installer_entry_point
|
|
21
19
|
installer_entry_point.main(which=which, group=group, interactive=interactive)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def get_app():
|
|
23
|
+
app = typer.Typer(help="🛠️ DevOps operations", no_args_is_help=True, add_completion=True)
|
|
22
24
|
_ = install
|
|
23
25
|
app.command("install", no_args_is_help=True, help="🛠️ [i] Install essential packages")(install)
|
|
24
26
|
app.command("i", no_args_is_help=True, help="Install essential packages", hidden=True)(install)
|
|
@@ -6,18 +6,18 @@ import typer
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
def private(method: Literal["symlink", "copy"]
|
|
10
|
-
on_conflict: Literal["throwError", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"]
|
|
11
|
-
which: Optional[str]
|
|
12
|
-
interactive: bool
|
|
9
|
+
def private(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for linking files")],
|
|
10
|
+
on_conflict: Annotated[Literal["throwError", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throwError",
|
|
11
|
+
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = None,
|
|
12
|
+
interactive: Annotated[bool, typer.Option(..., "--interactive", "-ia", help="Run in interactive mode")] = False):
|
|
13
13
|
"""🔗 Manage private configuration files."""
|
|
14
14
|
import machineconfig.profile.create_links_export as create_links_export
|
|
15
15
|
create_links_export.main_private_from_parser(method=method, on_conflict=on_conflict, which=which, interactive=interactive)
|
|
16
16
|
|
|
17
|
-
def public(method: Literal["symlink", "copy"]
|
|
18
|
-
on_conflict: Literal["throwError", "overwriteDefaultPath", "backupDefaultPath"]
|
|
19
|
-
which: Optional[str]
|
|
20
|
-
interactive: bool
|
|
17
|
+
def public(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for setting up the config file.")],
|
|
18
|
+
on_conflict: Annotated[Literal["throwError", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throwError",
|
|
19
|
+
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = None,
|
|
20
|
+
interactive: Annotated[bool, typer.Option(..., "--interactive", "-ia", help="Run in interactive mode")] = False):
|
|
21
21
|
"""🔗 Manage public configuration files."""
|
|
22
22
|
import machineconfig.profile.create_links_export as create_links_export
|
|
23
23
|
create_links_export.main_public_from_parser(method=method, on_conflict=on_conflict, which=which, interactive=interactive)
|
|
@@ -42,7 +42,7 @@ def path():
|
|
|
42
42
|
from pathlib import Path
|
|
43
43
|
path = Path(navigator.__file__).resolve().parent.joinpath("path_manager_tui.py")
|
|
44
44
|
from machineconfig.utils.code import run_shell_script
|
|
45
|
-
run_shell_script(f"""uv run --with "machineconfig>=5.
|
|
45
|
+
run_shell_script(f"""uv run --with "machineconfig>=5.87,textual" {path}""")
|
|
46
46
|
|
|
47
47
|
def pwsh_theme():
|
|
48
48
|
"""🔗 Select powershell prompt theme."""
|
|
@@ -51,7 +51,7 @@ def pwsh_theme():
|
|
|
51
51
|
import subprocess
|
|
52
52
|
subprocess.run(["pwsh", "-File", str(file)])
|
|
53
53
|
|
|
54
|
-
def copy_assets(which: Literal["scripts", "settings", "both"]
|
|
54
|
+
def copy_assets(which: Annotated[Literal["scripts", "settings", "both"], typer.Argument(..., help="Which assets to copy")]):
|
|
55
55
|
"""🔗 Copy asset files from library to machine."""
|
|
56
56
|
import machineconfig.profile.create_helper as create_helper
|
|
57
57
|
match which:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import machineconfig.scripts.python.devops_helpers.cli_terminal as cli_terminal
|
|
3
3
|
import machineconfig.scripts.python.devops_helpers.cli_share_server as cli_share_server
|
|
4
4
|
import typer
|
|
5
|
-
from typing import Optional
|
|
5
|
+
from typing import Optional, Annotated
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -19,10 +19,10 @@ def install_ssh_server():
|
|
|
19
19
|
run_shell_script(script=SSH_SERVER.read_text(encoding="utf-8"))
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
def add_ssh_key(path: Optional[str]
|
|
23
|
-
choose: bool
|
|
24
|
-
value: bool
|
|
25
|
-
github: Optional[str]
|
|
22
|
+
def add_ssh_key(path: Annotated[Optional[str], typer.Option(..., help="Path to the public key file")] = None,
|
|
23
|
+
choose: Annotated[bool, typer.Option(..., "--choose", "-c", help="Choose from available public keys in ~/.ssh/*.pub")] = False,
|
|
24
|
+
value: Annotated[bool, typer.Option(..., "--value", "-v", help="Paste the public key content manually")] = False,
|
|
25
|
+
github: Annotated[Optional[str], typer.Option(..., "--github", "-g", help="Fetch public keys from a GitHub username")] = None
|
|
26
26
|
):
|
|
27
27
|
"""🔑 SSH add pub key to this machine so its accessible by owner of corresponding private key."""
|
|
28
28
|
import machineconfig.scripts.python.nw.devops_add_ssh_key as helper
|
|
@@ -87,26 +87,26 @@ def analyze(directory: DirectoryArgument = None) -> None:
|
|
|
87
87
|
|
|
88
88
|
|
|
89
89
|
def viz(
|
|
90
|
-
repo: str
|
|
91
|
-
output_file: Optional[Path]
|
|
92
|
-
resolution: str
|
|
93
|
-
seconds_per_day: float
|
|
94
|
-
auto_skip_seconds: float
|
|
95
|
-
title: Optional[str]
|
|
96
|
-
hide_items: list[str]
|
|
97
|
-
key_items: bool
|
|
98
|
-
fullscreen: bool
|
|
99
|
-
viewport: Optional[str]
|
|
100
|
-
start_date: Optional[str]
|
|
101
|
-
stop_date: Optional[str]
|
|
102
|
-
user_image_dir: Optional[Path]
|
|
103
|
-
max_files: int
|
|
104
|
-
max_file_lag: float
|
|
105
|
-
file_idle_time: int
|
|
106
|
-
framerate: int
|
|
107
|
-
background_color: str
|
|
108
|
-
font_size: int
|
|
109
|
-
camera_mode: str
|
|
90
|
+
repo: Annotated[str, typer.Option(..., "--repo", "-r", help="Path to git repository to visualize")] = Path.cwd().__str__(),
|
|
91
|
+
output_file: Annotated[Optional[Path], typer.Option(..., "--output", "-o", help="Output video file (e.g., output.mp4). If specified, gource will render to video.")] = None,
|
|
92
|
+
resolution: Annotated[str, typer.Option(..., "--resolution", "-res", help="Video resolution (e.g., 1920x1080, 1280x720)")] = "1920x1080",
|
|
93
|
+
seconds_per_day: Annotated[float, typer.Option(..., "--seconds-per-day", "-spd", help="Speed of simulation (lower = faster)")] = 0.1,
|
|
94
|
+
auto_skip_seconds: Annotated[float, typer.Option(..., "--auto-skip-seconds", "-as", help="Skip to next entry if nothing happens for X seconds")] = 1.0,
|
|
95
|
+
title: Annotated[Optional[str], typer.Option(..., "--title", "-t", help="Title for the visualization")] = None,
|
|
96
|
+
hide_items: Annotated[list[str], typer.Option(..., "--hide", "-h", help="Items to hide: bloom, date, dirnames, files, filenames, mouse, progress, root, tree, users, usernames")] = [],
|
|
97
|
+
key_items: Annotated[bool, typer.Option(..., "--key", "-k", help="Show file extension key")] = False,
|
|
98
|
+
fullscreen: Annotated[bool, typer.Option(..., "--fullscreen", "-f", help="Run in fullscreen mode")] = False,
|
|
99
|
+
viewport: Annotated[Optional[str], typer.Option(..., "--viewport", "-v", help="Camera viewport (e.g., '1000x1000')")] = None,
|
|
100
|
+
start_date: Annotated[Optional[str], typer.Option(..., "--start-date", help="Start date (YYYY-MM-DD)")] = None,
|
|
101
|
+
stop_date: Annotated[Optional[str], typer.Option(..., "--stop-date", help="Stop date (YYYY-MM-DD)")] = None,
|
|
102
|
+
user_image_dir: Annotated[Optional[Path], typer.Option(..., "--user-image-dir", help="Directory with user avatar images")] = None,
|
|
103
|
+
max_files: Annotated[int, typer.Option(..., "--max-files", help="Maximum number of files to show (0 = no limit)")] = 0,
|
|
104
|
+
max_file_lag: Annotated[float, typer.Option(..., "--max-file-lag", help="Max time files remain on screen after last change")] = 5.0,
|
|
105
|
+
file_idle_time: Annotated[int, typer.Option(..., "--file-idle-time", help="Time in seconds files remain idle before being removed")] = 0,
|
|
106
|
+
framerate: Annotated[int, typer.Option(..., "--framerate", help="Frames per second for video output")] = 60,
|
|
107
|
+
background_color: Annotated[str, typer.Option(..., "--background-color", help="Background color in hex (e.g., 000000 for black)")] = "000000",
|
|
108
|
+
font_size: Annotated[int, typer.Option(..., "--font-size", help="Font size")] = 22,
|
|
109
|
+
camera_mode: Annotated[str, typer.Option(..., "--camera-mode", help="Camera mode: overview or track")] = "overview",
|
|
110
110
|
) -> None:
|
|
111
111
|
"""🎬 Visualize repository activity using Gource."""
|
|
112
112
|
from machineconfig.scripts.python.helpers_repos.grource import visualize
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import typer
|
|
3
|
-
from typing import Optional
|
|
3
|
+
from typing import Optional, Annotated
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
def update():
|
|
@@ -41,9 +41,9 @@ def install():
|
|
|
41
41
|
# main_public_from_parser()
|
|
42
42
|
import platform
|
|
43
43
|
if platform.system() == "Windows":
|
|
44
|
-
run_shell_script(r"""$HOME\.local\bin\uv.exe tool install machineconfig>=5.
|
|
44
|
+
run_shell_script(r"""$HOME\.local\bin\uv.exe tool install machineconfig>=5.87""")
|
|
45
45
|
else:
|
|
46
|
-
run_shell_script("""$HOME/.local/bin/uv tool install machineconfig>=5.
|
|
46
|
+
run_shell_script("""$HOME/.local/bin/uv tool install machineconfig>=5.87""")
|
|
47
47
|
|
|
48
48
|
def navigate():
|
|
49
49
|
"""📚 NAVIGATE command structure with TUI"""
|
|
@@ -51,11 +51,11 @@ def navigate():
|
|
|
51
51
|
from pathlib import Path
|
|
52
52
|
path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
|
|
53
53
|
from machineconfig.utils.code import run_shell_script
|
|
54
|
-
run_shell_script(f"""uv run --with "machineconfig>=5.
|
|
54
|
+
run_shell_script(f"""uv run --with "machineconfig>=5.87,textual" {path}""")
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
def run_python(ip: str
|
|
58
|
-
command: Optional[bool]
|
|
57
|
+
def run_python(ip: Annotated[str, typer.Argument(..., help="Python command to run in the machineconfig environment")],
|
|
58
|
+
command: Annotated[Optional[bool], typer.Option(..., "--command", "-c", help="Run as command")] = False):
|
|
59
59
|
"""🐍 RUN python command/file in the machineconfig environment"""
|
|
60
60
|
if command:
|
|
61
61
|
exec(ip)
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
from typing import Optional, Annotated
|
|
3
3
|
import typer
|
|
4
|
-
# import typer
|
|
5
|
-
|
|
6
4
|
|
|
7
5
|
|
|
8
6
|
def display_share_url(local_ip_v4: str, port: int, protocol: str = "http") -> None:
|
|
9
7
|
"""Display a flashy, unmissable share URL announcement."""
|
|
10
|
-
|
|
11
8
|
from rich.console import Console
|
|
12
9
|
from rich.panel import Panel
|
|
13
10
|
from rich.text import Text
|
|
14
11
|
from rich.align import Align
|
|
15
12
|
console = Console()
|
|
16
|
-
|
|
17
13
|
# Create the main message with styling
|
|
18
14
|
url_text = Text(f"{protocol}://{local_ip_v4}:{port}", style="bold bright_cyan underline")
|
|
19
15
|
message = Text.assemble(
|
|
@@ -22,7 +18,6 @@ def display_share_url(local_ip_v4: str, port: int, protocol: str = "http") -> No
|
|
|
22
18
|
url_text,
|
|
23
19
|
(" 🚀", "bright_red")
|
|
24
20
|
)
|
|
25
|
-
|
|
26
21
|
# Create a fancy panel with borders and styling
|
|
27
22
|
panel = Panel(
|
|
28
23
|
Align.center(message),
|
|
@@ -32,7 +27,6 @@ def display_share_url(local_ip_v4: str, port: int, protocol: str = "http") -> No
|
|
|
32
27
|
padding=(1, 2),
|
|
33
28
|
expand=False
|
|
34
29
|
)
|
|
35
|
-
|
|
36
30
|
# Print with extra spacing and attention-grabbing elements
|
|
37
31
|
console.print(panel)
|
|
38
32
|
|
|
@@ -45,9 +39,8 @@ def main(
|
|
|
45
39
|
over_internet: Annotated[bool, typer.Option("--over-internet", "-i", help="Expose the share server over the internet using ngrok")] = False
|
|
46
40
|
) -> None:
|
|
47
41
|
from machineconfig.utils.installer_utils.installer import install_if_missing
|
|
48
|
-
install_if_missing("
|
|
49
|
-
if over_internet: install_if_missing("ngrok")
|
|
50
|
-
|
|
42
|
+
install_if_missing(which="easy-sharing")
|
|
43
|
+
if over_internet: install_if_missing(which="ngrok", )
|
|
51
44
|
if username is None:
|
|
52
45
|
import getpass
|
|
53
46
|
username = getpass.getuser()
|
|
@@ -56,7 +49,9 @@ def main(
|
|
|
56
49
|
if pwd_path.exists():
|
|
57
50
|
password = pwd_path.read_text(encoding="utf-8").strip()
|
|
58
51
|
else:
|
|
59
|
-
raise ValueError("Password not provided and default password file does not exist.")
|
|
52
|
+
# raise ValueError("Password not provided and default password file does not exist.")
|
|
53
|
+
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)
|
|
60
55
|
|
|
61
56
|
if port is None:
|
|
62
57
|
port = 8080 # Default port for ezshare
|
|
@@ -73,7 +68,7 @@ def main(
|
|
|
73
68
|
import subprocess
|
|
74
69
|
import time
|
|
75
70
|
# Build ezshare command
|
|
76
|
-
ezshare_cmd = f"
|
|
71
|
+
ezshare_cmd = f"""easy-sharing --port {port} --username {username} --password "{password}" {path}"""
|
|
77
72
|
ezshare_process = subprocess.Popen(ezshare_cmd, shell=True)
|
|
78
73
|
processes = [ezshare_process]
|
|
79
74
|
|
|
@@ -10,18 +10,18 @@ from machineconfig.utils.code import get_shell_file_executing_python_script, wri
|
|
|
10
10
|
|
|
11
11
|
import platform
|
|
12
12
|
import subprocess
|
|
13
|
-
from typing import Optional, Literal
|
|
13
|
+
from typing import Optional, Literal, Annotated
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
console = Console()
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def main(
|
|
20
|
-
cloud: Optional[str]
|
|
21
|
-
repo: Optional[str]
|
|
22
|
-
message: Optional[str]
|
|
23
|
-
on_conflict: Literal["ask", "push-local-merge", "overwrite-local", "stop-on-conflict", "remove-rclone-conflict"]
|
|
24
|
-
pwd: Optional[str]
|
|
20
|
+
cloud: Annotated[Optional[str], typer.Option(..., "--cloud", "-c", help="Cloud storage profile name. If not provided, uses default from config.")] = None,
|
|
21
|
+
repo: Annotated[Optional[str], typer.Option(..., "--repo", "-r", help="Path to the local repository. Defaults to current working directory.")] = None,
|
|
22
|
+
message: Annotated[Optional[str], typer.Option(..., "--message", "-m", help="Commit message for local changes.")] = None,
|
|
23
|
+
on_conflict: Annotated[Literal["ask", "push-local-merge", "overwrite-local", "stop-on-conflict", "remove-rclone-conflict"], typer.Option(..., "--on-conflict", "-oc", help="Action to take on merge conflict. Default is 'ask'.")] = "ask",
|
|
24
|
+
pwd: Annotated[Optional[str], typer.Option(..., "--password", help="Password for encryption/decryption of the remote repository.")] = None,
|
|
25
25
|
):
|
|
26
26
|
if cloud is None:
|
|
27
27
|
try:
|
|
@@ -101,7 +101,7 @@ git pull originEnc master
|
|
|
101
101
|
return "done"
|
|
102
102
|
from machineconfig.utils.meta import function_to_script
|
|
103
103
|
program_1_py = function_to_script(func=func2, call_with_args=None, call_with_kwargs={"remote_repo": str(repo_remote_root), "local_repo": str(repo_local_root), "cloud": cloud_resolved})
|
|
104
|
-
shell_file_1 = get_shell_file_executing_python_script(python_script=program_1_py, ve_path=None, executable="""uv run --with "machineconfig>=5.
|
|
104
|
+
shell_file_1 = get_shell_file_executing_python_script(python_script=program_1_py, ve_path=None, executable="""uv run --with "machineconfig>=5.87" """)
|
|
105
105
|
# ================================================================================
|
|
106
106
|
option2 = "Delete local repo and replace it with remote copy:"
|
|
107
107
|
program_2 = f"""
|
|
@@ -122,7 +122,7 @@ sudo chmod +x $HOME/dotfiles/scripts/linux -R
|
|
|
122
122
|
inspect_repos(repo_local_root=repo_local_root, repo_remote_root=repo_remote_root)
|
|
123
123
|
return "done"
|
|
124
124
|
program_3_py = function_to_script(func=func, call_with_args=None, call_with_kwargs={"repo_local_root": str(repo_local_root), "repo_remote_root": str(repo_remote_root)})
|
|
125
|
-
shell_file_3 = get_shell_file_executing_python_script(python_script=program_3_py, ve_path=None, executable="""uv run --with "machineconfig>=5.
|
|
125
|
+
shell_file_3 = get_shell_file_executing_python_script(python_script=program_3_py, ve_path=None, executable="""uv run --with "machineconfig>=5.87" """)
|
|
126
126
|
# ================================================================================
|
|
127
127
|
|
|
128
128
|
option4 = "Remove problematic rclone file from repo and replace with remote:"
|
|
@@ -319,7 +319,7 @@ def visualize(
|
|
|
319
319
|
|
|
320
320
|
|
|
321
321
|
def install(
|
|
322
|
-
version: Optional[str]
|
|
322
|
+
version: Annotated[Optional[str], typer.Option(..., "--version", "-v", help="Gource version to install")] = "0.53",
|
|
323
323
|
) -> None:
|
|
324
324
|
"""Install portable Gource on Windows (no admin privileges required)."""
|
|
325
325
|
if platform.system() == "Windows":
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
|
|
2
2
|
import typer
|
|
3
|
-
from typing import Optional, Literal
|
|
3
|
+
from typing import Optional, Literal, Annotated
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
def main(
|
|
8
|
-
cloud: Optional[str]
|
|
9
|
-
repo: Optional[str]
|
|
10
|
-
message: Optional[str]
|
|
11
|
-
on_conflict: Literal["ask", "push-local-merge", "overwrite-local", "stop-on-conflict", "remove-rclone-conflict"]
|
|
12
|
-
pwd: Optional[str]
|
|
8
|
+
cloud: Annotated[Optional[str], typer.Option(..., "--cloud", "-c", help="Cloud storage profile name. If not provided, uses default from config.")] = None,
|
|
9
|
+
repo: Annotated[Optional[str], typer.Option(..., "--repo", "-r", help="Path to the local repository. Defaults to cwd.")] = Path.cwd().as_posix(),
|
|
10
|
+
message: Annotated[Optional[str], typer.Option(..., "--message", "-m", help="Commit message for local changes.")] = None,
|
|
11
|
+
on_conflict: Annotated[Literal["ask", "push-local-merge", "overwrite-local", "stop-on-conflict", "remove-rclone-conflict"], typer.Option(..., "--on-conflict", "-oc", help="Action to take on merge conflict. Default is 'ask'.")] = "ask",
|
|
12
|
+
pwd: Annotated[Optional[str], typer.Option(..., "--password", help="Password for encryption/decryption of the remote repository.")] = None,
|
|
13
13
|
):
|
|
14
14
|
from machineconfig.scripts.python.helpers_repos.cloud_repo_sync import main as program_content
|
|
15
15
|
program_content(cloud=cloud, repo=repo, message=message, on_conflict=on_conflict, pwd=pwd)
|
|
@@ -130,9 +130,9 @@ def execute_installations(selected_options: list[str]) -> None:
|
|
|
130
130
|
console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
|
|
131
131
|
import platform
|
|
132
132
|
if platform.system() == "Windows":
|
|
133
|
-
run_shell_script(r"""$HOME\.local\bin\uv.exe tool install machineconfig>=5.
|
|
133
|
+
run_shell_script(r"""$HOME\.local\bin\uv.exe tool install machineconfig>=5.87""")
|
|
134
134
|
else:
|
|
135
|
-
run_shell_script("""$HOME/.local/bin/uv tool install machineconfig>=5.
|
|
135
|
+
run_shell_script("""$HOME/.local/bin/uv tool install machineconfig>=5.87""")
|
|
136
136
|
if "install_ssh_server" in selected_options:
|
|
137
137
|
console.print(Panel("🔒 [bold red]SSH SERVER[/bold red]\n[italic]Remote access setup[/italic]", border_style="red"))
|
|
138
138
|
import platform
|
|
@@ -6,7 +6,7 @@ from machineconfig.utils.path_extended import PathExtended
|
|
|
6
6
|
from rich.console import Console
|
|
7
7
|
from rich.panel import Panel
|
|
8
8
|
from rich import box # Import box
|
|
9
|
-
from typing import Optional
|
|
9
|
+
from typing import Optional, Annotated
|
|
10
10
|
import typer
|
|
11
11
|
|
|
12
12
|
|
|
@@ -77,10 +77,10 @@ sudo service ssh --full-restart
|
|
|
77
77
|
"""
|
|
78
78
|
|
|
79
79
|
|
|
80
|
-
def main(pub_path: Optional[str]
|
|
81
|
-
pub_choose: bool
|
|
82
|
-
pub_val: bool
|
|
83
|
-
from_github: Optional[str]
|
|
80
|
+
def main(pub_path: Annotated[Optional[str], typer.Argument(..., help="Path to the public key file")] = None,
|
|
81
|
+
pub_choose: Annotated[bool, typer.Option(..., "--choose", "-c", help="Choose from available public keys in ~/.ssh")] = False,
|
|
82
|
+
pub_val: Annotated[bool, typer.Option(..., "--paste", "-p", help="Paste the public key content manually")] = False,
|
|
83
|
+
from_github: Annotated[Optional[str], typer.Option(..., "--from-github", "-g", help="Fetch public keys from a GitHub username")] = None
|
|
84
84
|
) -> None:
|
|
85
85
|
if pub_path:
|
|
86
86
|
key_path = PathExtended(pub_path).expanduser().absolute()
|
|
@@ -6,7 +6,7 @@ from machineconfig.utils.path_extended import PathExtended
|
|
|
6
6
|
from rich.console import Console
|
|
7
7
|
from rich.panel import Panel
|
|
8
8
|
from rich import box
|
|
9
|
-
from typing import Optional
|
|
9
|
+
from typing import Optional, Annotated
|
|
10
10
|
import typer
|
|
11
11
|
|
|
12
12
|
|
|
@@ -66,10 +66,10 @@ sudo service ssh --full-restart
|
|
|
66
66
|
return program
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
def main(pub_path: Optional[str]
|
|
70
|
-
pub_choose: bool
|
|
71
|
-
pub_val: bool
|
|
72
|
-
from_github: Optional[str]
|
|
69
|
+
def main(pub_path: Annotated[Optional[str], typer.Argument(..., help="Path to the public key file")] = None,
|
|
70
|
+
pub_choose: Annotated[bool, typer.Option(..., "--choose", "-c", help="Choose from available public keys in ~/.ssh")] = False,
|
|
71
|
+
pub_val: Annotated[bool, typer.Option(..., "--paste", "-p", help="Paste the public key content manually")] = False,
|
|
72
|
+
from_github: Annotated[Optional[str], typer.Option(..., "--from-github", "-g", help="Fetch public keys from a GitHub username")] = None
|
|
73
73
|
) -> None:
|
|
74
74
|
|
|
75
75
|
if pub_path:
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# mkdir ~/data/local
|
|
6
6
|
# sudo mount -o nolock,noatime,nodiratime,proto=tcp,timeo=600,retrans=2,noac alex-p51s-5:/home/alex/data/local ./data/local
|
|
7
7
|
|
|
8
|
-
uv run --python 3.14 --with "machineconfig>=5.
|
|
8
|
+
uv run --python 3.14 --with "machineconfig>=5.87" python -m machineconfig.scripts.python.mount_nfs
|
|
9
9
|
# Check if remote server is reachable and share folder exists
|
|
10
10
|
if ! ping -c 1 "$remote_server" &> /dev/null; then
|
|
11
11
|
echo "💥 Error: Remote server $remote_server is not reachable."
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
from typing import TYPE_CHECKING
|
|
2
|
+
from typing import TYPE_CHECKING, Annotated
|
|
3
3
|
from git import Repo
|
|
4
4
|
from collections import defaultdict
|
|
5
5
|
from datetime import datetime
|
|
@@ -82,7 +82,7 @@ def get_default_branch(repo: Repo) -> str:
|
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
@app.command()
|
|
85
|
-
def count_historical(repo_path: str
|
|
85
|
+
def count_historical(repo_path: Annotated[str, typer.Argument(..., help="Path to the git repository")]):
|
|
86
86
|
"""Count total historical lines of Python code in the repository."""
|
|
87
87
|
print(f"Analyzing repository: {repo_path}")
|
|
88
88
|
total_loc: int = count_historical_loc(repo_path)
|
|
@@ -90,7 +90,7 @@ def count_historical(repo_path: str = typer.Argument(..., help="Path to the git
|
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
@app.command()
|
|
93
|
-
def analyze_over_time(repo_path: str
|
|
93
|
+
def analyze_over_time(repo_path: Annotated[str, typer.Argument(..., help="Path to the git repository")]):
|
|
94
94
|
"""Analyze a git repository to track Python code size over time with visualization."""
|
|
95
95
|
repo: Repo = Repo(repo_path)
|
|
96
96
|
branch_name: str = get_default_branch(repo)
|
|
@@ -336,7 +336,7 @@ def _print_python_files_by_size_impl(repo_path: str) -> "Union[pl.DataFrame, Exc
|
|
|
336
336
|
|
|
337
337
|
|
|
338
338
|
@app.command()
|
|
339
|
-
def print_python_files_by_size(repo_path: str
|
|
339
|
+
def print_python_files_by_size(repo_path: Annotated[str, typer.Argument(..., help="Path to the git repository")]):
|
|
340
340
|
"""Print Python files sorted by size with visualizations."""
|
|
341
341
|
result = _print_python_files_by_size_impl(repo_path)
|
|
342
342
|
if isinstance(result, Exception):
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
|
|
2
2
|
import typer
|
|
3
|
+
from typing import Annotated
|
|
3
4
|
|
|
4
5
|
|
|
5
|
-
def analyze_repo_development(repo_path: str
|
|
6
|
+
def analyze_repo_development(repo_path: Annotated[str, typer.Argument(..., help="Path to the git repository")]):
|
|
6
7
|
from machineconfig.scripts.python.repos_helpers import count_lines
|
|
7
8
|
from pathlib import Path
|
|
8
9
|
count_lines_path = Path(count_lines.__file__)
|
|
9
10
|
# --project $HOME/code/ machineconfig --group plot
|
|
10
|
-
cmd = f"""uv run --python 3.14 --with "machineconfig[plot]>=5.
|
|
11
|
+
cmd = f"""uv run --python 3.14 --with "machineconfig[plot]>=5.87" {count_lines_path} analyze-over-time {repo_path}"""
|
|
11
12
|
from machineconfig.utils.code import run_shell_script
|
|
12
13
|
run_shell_script(cmd)
|
|
13
14
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
from pathlib import Path
|
|
3
|
-
from typing import Optional, Literal
|
|
3
|
+
from typing import Optional, Literal, Annotated
|
|
4
4
|
import typer
|
|
5
5
|
|
|
6
|
-
def balance_load(layout_path: Path
|
|
7
|
-
max_thresh: int
|
|
8
|
-
thresh_type: Literal['number', 'weight']
|
|
9
|
-
breaking_method: Literal['moreLayouts', 'combineTabs']
|
|
10
|
-
output_path: Optional[Path]
|
|
6
|
+
def balance_load(layout_path: Annotated[Path, typer.Argument(..., help="Path to the layout.json file")],
|
|
7
|
+
max_thresh: Annotated[int, typer.Option(..., help="Maximum tabs per layout")],
|
|
8
|
+
thresh_type: Annotated[Literal['number', 'weight'], typer.Option(..., help="Threshold type")],
|
|
9
|
+
breaking_method: Annotated[Literal['moreLayouts', 'combineTabs'], typer.Option(..., help="Breaking method")],
|
|
10
|
+
output_path: Annotated[Optional[Path], typer.Option(..., help="Path to write the adjusted layout.json file")] = None):
|
|
11
11
|
"""Adjust layout file to limit max tabs per layout, etc."""
|
|
12
12
|
from machineconfig.utils.schemas.layouts.layout_types import LayoutsFile
|
|
13
13
|
import json
|
|
@@ -69,15 +69,15 @@ def find_layout_file(layout_path: str, ) -> Path:
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
def run(ctx: typer.Context,
|
|
72
|
-
layout_path: Optional[str]
|
|
73
|
-
max_tabs: int
|
|
74
|
-
max_layouts: int
|
|
75
|
-
sleep_inbetween: float
|
|
76
|
-
monitor: bool
|
|
77
|
-
parallel: bool
|
|
78
|
-
kill_upon_completion: bool
|
|
79
|
-
choose: Optional[str]
|
|
80
|
-
choose_interactively: bool
|
|
72
|
+
layout_path: Annotated[Optional[str], typer.Argument(..., help="Path to the layout.json file")] = None,
|
|
73
|
+
max_tabs: Annotated[int, typer.Option(..., help="A Sanity checker that throws an error if any layout exceeds the maximum number of tabs to launch.")] = 10,
|
|
74
|
+
max_layouts: Annotated[int, typer.Option(..., help="A Sanity checker that throws an error if the total number of layouts exceeds this number.")] = 10,
|
|
75
|
+
sleep_inbetween: Annotated[float, typer.Option(..., help="Sleep time in seconds between launching layouts")] = 1.0,
|
|
76
|
+
monitor: Annotated[bool, typer.Option(..., "--monitor", "-m", help="Monitor the layout sessions for completion")] = False,
|
|
77
|
+
parallel: Annotated[bool, typer.Option(..., "--parallel", "-p", help="Launch multiple layouts in parallel")] = False,
|
|
78
|
+
kill_upon_completion: Annotated[bool, typer.Option(..., "--kill-upon-completion", "-k", help="Kill session(s) upon completion (only relevant if monitor flag is set)")] = False,
|
|
79
|
+
choose: Annotated[Optional[str], typer.Option(..., "--choose", "-c", help="Comma separated names of layouts to be selected from the layout file passed")] = None,
|
|
80
|
+
choose_interactively: Annotated[bool, typer.Option(..., "--choose-interactively", "-ia", help="Select layouts interactively")] = False
|
|
81
81
|
):
|
|
82
82
|
"""
|
|
83
83
|
Launch terminal sessions based on a layout configuration file.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
3
|
+
from typing import Optional, Annotated
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
import typer
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def create_from_function(
|
|
9
|
-
num_process: int
|
|
10
|
-
path: str
|
|
11
|
-
function: Optional[str]
|
|
9
|
+
num_process: Annotated[int, typer.Option(..., "--num-process", "-n", help="Number of parallel processes to run")],
|
|
10
|
+
path: Annotated[str, typer.Option(..., "--path", "-p", help="Path to a Python or Shell script file or a directory containing such files")] = ".",
|
|
11
|
+
function: Annotated[Optional[str], typer.Option(..., "--function", "-f", help="Function to run from the Python file. If not provided, you will be prompted to choose.")] = None,
|
|
12
12
|
):
|
|
13
13
|
from machineconfig.utils.ve import get_ve_activate_line, get_ve_path_and_ipython_profile
|
|
14
14
|
from machineconfig.utils.options import choose_from_options
|
|
@@ -7,7 +7,7 @@ $user = ''
|
|
|
7
7
|
$sharePath = ''
|
|
8
8
|
$driveLetter = ''
|
|
9
9
|
|
|
10
|
-
uv run --python 3.14 --with "machineconfig>=5.
|
|
10
|
+
uv run --python 3.14 --with "machineconfig>=5.87" 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
|
|
@@ -16,12 +16,12 @@ add_to_path_if_not_already \
|
|
|
16
16
|
"$HOME/.cargo/bin" \
|
|
17
17
|
"$CONFIG_ROOT/scripts/linux" \
|
|
18
18
|
"$HOME/dotfiles/scripts/linux" \
|
|
19
|
-
|
|
20
|
-
"/home/linuxbrew/.linuxbrew/bin" \
|
|
19
|
+
|
|
21
20
|
"/usr/games"
|
|
22
21
|
# this way, if the script was run multiple times, e.g. due to nested shells in zellij, there will be no duplicates in the path
|
|
23
22
|
# export DISPLAY=localhost:0.0 # xming server
|
|
24
|
-
|
|
23
|
+
# "$HOME/.nix-profile/bin" \
|
|
24
|
+
# "/home/linuxbrew/.linuxbrew/bin" \
|
|
25
25
|
|
|
26
26
|
# echo "Sourcing scripts ..."
|
|
27
27
|
. $CONFIG_ROOT/settings/broot/br.sh
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
. <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
|
|
3
3
|
mcfg() {
|
|
4
|
-
"$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=
|
|
4
|
+
"$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=5.87" mcfg "$@"
|
|
5
5
|
}
|
|
6
6
|
alias d="mcfg devops"
|
|
7
7
|
alias c="mcfg cloud"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
|
|
4
4
|
function mcfg {
|
|
5
|
-
& "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.
|
|
5
|
+
& "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.87" mcfg $args
|
|
6
6
|
}
|
|
7
7
|
function d { mcfg devops @args }
|
|
8
8
|
function c { mcfg cloud @args }
|
|
@@ -5,7 +5,7 @@ import typer
|
|
|
5
5
|
from rich.console import Console
|
|
6
6
|
from rich.panel import Panel
|
|
7
7
|
from rich.table import Table
|
|
8
|
-
from typing import Optional, cast, get_args
|
|
8
|
+
from typing import Optional, cast, get_args, Annotated
|
|
9
9
|
from machineconfig.jobs.installer.package_groups import PACKAGE_GROUPS, PACKAGE_GROUP2NAMES
|
|
10
10
|
|
|
11
11
|
console = Console()
|
|
@@ -56,9 +56,9 @@ def main_with_parser():
|
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
def main(
|
|
59
|
-
which: Optional[str]
|
|
60
|
-
group: bool
|
|
61
|
-
interactive: bool
|
|
59
|
+
which: Annotated[Optional[str], typer.Argument(..., help="Comma-separated list of program/groups names to install (if --group flag is set).")] = None,
|
|
60
|
+
group: Annotated[bool, typer.Option(..., "--group", "-g", help="Treat 'which' as a group name. A group is bundle of apps.")] = False,
|
|
61
|
+
interactive: Annotated[bool, typer.Option(..., "--interactive", "-ia", help="Interactive selection of programs to install.")] = False,
|
|
62
62
|
) -> None:
|
|
63
63
|
if interactive:
|
|
64
64
|
return install_interactively()
|
|
@@ -189,7 +189,7 @@ def install_if_missing(which: str):
|
|
|
189
189
|
return
|
|
190
190
|
print(f"⏳ {which} not found. Installing...")
|
|
191
191
|
from machineconfig.utils.installer_utils.installer import main
|
|
192
|
-
main(which=which)
|
|
192
|
+
main(which=which, interactive=False)
|
|
193
193
|
|
|
194
194
|
|
|
195
195
|
if __name__ == "__main__":
|
machineconfig/utils/ssh.py
CHANGED
|
@@ -6,7 +6,7 @@ from machineconfig.utils.terminal import Response, MACHINE
|
|
|
6
6
|
from machineconfig.utils.accessories import pprint
|
|
7
7
|
|
|
8
8
|
UV_RUN_CMD = "$HOME/.local/bin/uv run"
|
|
9
|
-
MACHINECONFIG_VERSION = "machineconfig>=5.
|
|
9
|
+
MACHINECONFIG_VERSION = "machineconfig>=5.87"
|
|
10
10
|
DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
|
|
11
11
|
|
|
12
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: machineconfig
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.88
|
|
4
4
|
Summary: Dotfiles management package
|
|
5
5
|
Author-email: Alex Al-Saffar <programmer@usa.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -69,7 +69,7 @@ iex (iwr bit.ly/cfgwindows).Content
|
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
71
|
|
|
72
|
-
. <(curl -
|
|
72
|
+
. <(curl -L bit.ly/cfglinux)
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
|
|
@@ -46,7 +46,7 @@ machineconfig/cluster/templates/cli_trogon.py,sha256=PFWGy8SFYIhT9r3ZV4oIEYfImsQ
|
|
|
46
46
|
machineconfig/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
47
47
|
machineconfig/jobs/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
48
|
machineconfig/jobs/installer/check_installations.py,sha256=uFuxhgI8rIMtClcGmuc9gpG6iJ7X0__peGUQfGkreT8,10778
|
|
49
|
-
machineconfig/jobs/installer/installer_data.json,sha256=
|
|
49
|
+
machineconfig/jobs/installer/installer_data.json,sha256=JHpJIURGqdSxhE5SFyQ93-L7LxI6wpLDbqC9OCnQygI,74972
|
|
50
50
|
machineconfig/jobs/installer/package_groups.py,sha256=i4z83F_rk7BVsrwFhz5Vn4SLF0IHxyQBFSxpAaZBl8M,5270
|
|
51
51
|
machineconfig/jobs/installer/custom/gh.py,sha256=gn7TUSrsLx7uqFqj1Z-iYglS0EYBSgtJ9jWHxaJIfXM,4119
|
|
52
52
|
machineconfig/jobs/installer/custom/hx.py,sha256=YQClQXqWtGvon8BLFGf1Fp20JPkHgZeEZ6ebmCJQQfI,5838
|
|
@@ -95,7 +95,7 @@ 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=_iNeuwmcEGTx6sf_f40JKHfOCuJRZQRpyE8Fo_3Q6bI,1519
|
|
97
97
|
machineconfig/profile/create_links.py,sha256=K7T2bq08GZP9fo2NzCOE0pojAgQDe0Ofe7fNfbQlQpw,14219
|
|
98
|
-
machineconfig/profile/create_links_export.py,sha256=
|
|
98
|
+
machineconfig/profile/create_links_export.py,sha256=6LW4ZzHhQaox6W-rAuw3_gENTVKmOXA8_JfVDA-Mfws,3294
|
|
99
99
|
machineconfig/profile/create_shell_profile.py,sha256=ifsEAK90ovvY7ftyxuY5-Xh8f2JuQYX7IMYUXp6x2Sw,9538
|
|
100
100
|
machineconfig/profile/mapper.toml,sha256=50q2VdR_PNLXGljH47R2cxuJvzlJQnq7lkJ05TMtJ5Q,12357
|
|
101
101
|
machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
|
|
@@ -119,16 +119,16 @@ machineconfig/scripts/linux/other/share_smb,sha256=HZX8BKgMlS9JzkGIYnxTsPvoxEBBu
|
|
|
119
119
|
machineconfig/scripts/linux/other/start_docker,sha256=_yDN_PPqgzSUnPT7dmniMTpL4IfeeaGy1a2OL3IJlDU,525
|
|
120
120
|
machineconfig/scripts/linux/other/switch_ip,sha256=NQfeKMBSbFY3eP6M-BadD-TQo5qMP96DTp77KHk2tU8,613
|
|
121
121
|
machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
|
-
machineconfig/scripts/python/agents.py,sha256=
|
|
122
|
+
machineconfig/scripts/python/agents.py,sha256=f5UxgXjGlEypoNFqK0uHKO0UkbV_wUmPiPzotL2yapM,10677
|
|
123
123
|
machineconfig/scripts/python/cloud.py,sha256=ubLmf06FSdi1NawpQDgUDAtYb9cZSQqHbSUHzAwRIas,1199
|
|
124
|
-
machineconfig/scripts/python/croshell.py,sha256=
|
|
125
|
-
machineconfig/scripts/python/devops.py,sha256=
|
|
124
|
+
machineconfig/scripts/python/croshell.py,sha256=0Ym3n-ZmIpaOX_SWnGP88dq_iH7QWJKUZvY0x58sXjI,7083
|
|
125
|
+
machineconfig/scripts/python/devops.py,sha256=VYxwtgwKVs9qMmBxTz2fagNnapizpAXEGlzR0iHp-rw,2152
|
|
126
126
|
machineconfig/scripts/python/devops_navigator.py,sha256=4O9_-ACeP748NcMjWQXZF7mBQpMPxqCGhLvPG3DMi4Q,236
|
|
127
127
|
machineconfig/scripts/python/entry.py,sha256=Az7dK1eXHGW5l46Yg10Cd88VChCdhvLAzO3e1A3r56A,2176
|
|
128
128
|
machineconfig/scripts/python/fire_jobs.py,sha256=O5DrckUGLxGblOcLf_iXU31pmCSpTg-c0hQZxQKD1os,13591
|
|
129
129
|
machineconfig/scripts/python/ftpx.py,sha256=UBDP6IIfWkaML1uZT1FrfGUUy_Of5LI82IdqEzo05_U,9760
|
|
130
|
-
machineconfig/scripts/python/interactive.py,sha256=
|
|
131
|
-
machineconfig/scripts/python/sessions.py,sha256=
|
|
130
|
+
machineconfig/scripts/python/interactive.py,sha256=8HbT9OaZ3lhoIYghIkeE6bI5TZ0RPlL0LwEszK6oPNw,11790
|
|
131
|
+
machineconfig/scripts/python/sessions.py,sha256=CfXeEAABFigrYbzJgjsE5NX_Y7Lf3wji0PFmSxcYoQ8,9756
|
|
132
132
|
machineconfig/scripts/python/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
133
133
|
machineconfig/scripts/python/ai/generate_files.py,sha256=VfjKdwgF8O6E4oiRtfWNliibLmmwGe7f9ld6wpOsXTw,14498
|
|
134
134
|
machineconfig/scripts/python/ai/initai.py,sha256=9SZtWOcRuwk8ZU3wHOfPzjInERD79ZTYFY8tVACgza4,2260
|
|
@@ -173,13 +173,13 @@ machineconfig/scripts/python/croshell_helpers/start_slidev.py,sha256=HfJReOusTPh
|
|
|
173
173
|
machineconfig/scripts/python/croshell_helpers/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
174
174
|
machineconfig/scripts/python/croshell_helpers/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
|
|
175
175
|
machineconfig/scripts/python/devops_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
176
|
-
machineconfig/scripts/python/devops_helpers/cli_config.py,sha256=
|
|
176
|
+
machineconfig/scripts/python/devops_helpers/cli_config.py,sha256=yyzfxOKC1k6YRWERWUY7riIVDmiyB_L89wpBzmU5DBg,5402
|
|
177
177
|
machineconfig/scripts/python/devops_helpers/cli_config_dotfile.py,sha256=rjTys4FNf9_feP9flWM7Zvq17dxWmetSiGaHPxp25nk,2737
|
|
178
178
|
machineconfig/scripts/python/devops_helpers/cli_data.py,sha256=kvJ7g2CccjjXIhCwdu_Vlif8JHC0qUoLjuGcTSqT-IU,514
|
|
179
|
-
machineconfig/scripts/python/devops_helpers/cli_nw.py,sha256=
|
|
180
|
-
machineconfig/scripts/python/devops_helpers/cli_repos.py,sha256=
|
|
181
|
-
machineconfig/scripts/python/devops_helpers/cli_self.py,sha256=
|
|
182
|
-
machineconfig/scripts/python/devops_helpers/cli_share_server.py,sha256=
|
|
179
|
+
machineconfig/scripts/python/devops_helpers/cli_nw.py,sha256=nI_zmcmUvijVeXIWT2dN5onoy3ou-lub1cL-SJImmDA,4125
|
|
180
|
+
machineconfig/scripts/python/devops_helpers/cli_repos.py,sha256=GEsW0ykgu8mtoiXurOSjOlbY_Xrngy_aeBq4eRZY8ts,12335
|
|
181
|
+
machineconfig/scripts/python/devops_helpers/cli_self.py,sha256=6tNrchY6-QStf4LfpCRvy36gBM3_GJIGC2OVCiz-iNo,4986
|
|
182
|
+
machineconfig/scripts/python/devops_helpers/cli_share_server.py,sha256=q9pFJ6AxPuygMr3onMNOKEuuQHbVE_6Qoyo7xRT5FX0,4196
|
|
183
183
|
machineconfig/scripts/python/devops_helpers/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
|
|
184
184
|
machineconfig/scripts/python/devops_helpers/devops_backup_retrieve.py,sha256=nK47Rc7gQuDCnkk6_sW1y82gBnDJ9TdHU8XwMPFBK9c,5591
|
|
185
185
|
machineconfig/scripts/python/devops_helpers/devops_status.py,sha256=PJVPhfhXq8der6Xd-_fjZfnizfM-RGfJApkRGhGBmNo,20525
|
|
@@ -218,15 +218,15 @@ machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py,sha25
|
|
|
218
218
|
machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py,sha256=4MrlCVijbx7GQyAN9s5LDh-7heSjMXYrXdqiP6uC3ug,5378
|
|
219
219
|
machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
220
220
|
machineconfig/scripts/python/helpers_repos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
221
|
-
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=
|
|
222
|
-
machineconfig/scripts/python/helpers_repos/grource.py,sha256=
|
|
223
|
-
machineconfig/scripts/python/helpers_repos/secure_repo.py,sha256=
|
|
221
|
+
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=ANx-gfHd34Pb4_ptmlVDQnmLRUK42FMbja6On0Gs2kA,9700
|
|
222
|
+
machineconfig/scripts/python/helpers_repos/grource.py,sha256=zDKWAO24aA0HlpcKFgBH4Lh_eqWp9KTEqnbUnX6I2pk,14611
|
|
223
|
+
machineconfig/scripts/python/helpers_repos/secure_repo.py,sha256=fW_GyHqWrpnf7nexHojfWHv4eLBa71IhVL_LSVMyGnE,1115
|
|
224
224
|
machineconfig/scripts/python/nw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
225
|
-
machineconfig/scripts/python/nw/add_ssh_key.py,sha256=
|
|
225
|
+
machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdCR90LwY6_9P7gKQzEE,9373
|
|
226
226
|
machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
|
|
227
|
-
machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=
|
|
227
|
+
machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=CkIl85hZLtG9k7yXLSzqi88YrilHV4hIUWHAPBwxWjw,8922
|
|
228
228
|
machineconfig/scripts/python/nw/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
|
|
229
|
-
machineconfig/scripts/python/nw/mount_nfs,sha256=
|
|
229
|
+
machineconfig/scripts/python/nw/mount_nfs,sha256=0k6JHsJUky0L4BtGdRDPWfdSowBdLE-1b-T328HCb78,1855
|
|
230
230
|
machineconfig/scripts/python/nw/mount_nfs.py,sha256=lOMDY4RS7tx8gsCazVR5tNNwFbaRyO2PJlnwBCDQgCM,3573
|
|
231
231
|
machineconfig/scripts/python/nw/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
|
|
232
232
|
machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
|
|
@@ -239,21 +239,21 @@ machineconfig/scripts/python/nw/wifi_conn.py,sha256=4GdLhgma9GRmZ6OFg3oxOX-qY3sr
|
|
|
239
239
|
machineconfig/scripts/python/nw/wsl_windows_transfer.py,sha256=1ab9l-8MtAxofW5nGH9G2-BjlszaiLETu6WBECcNNhA,3546
|
|
240
240
|
machineconfig/scripts/python/repos_helpers/action.py,sha256=pl0U53FAGoH2yk-CGNIy3aggImXY5ZVz28-XVFHDvfA,14862
|
|
241
241
|
machineconfig/scripts/python/repos_helpers/clone.py,sha256=9vGb9NCXT0lkerPzOJjmFfhU8LSzE-_1LDvjkhgnal0,5461
|
|
242
|
-
machineconfig/scripts/python/repos_helpers/count_lines.py,sha256=
|
|
243
|
-
machineconfig/scripts/python/repos_helpers/count_lines_frontend.py,sha256=
|
|
242
|
+
machineconfig/scripts/python/repos_helpers/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
|
|
243
|
+
machineconfig/scripts/python/repos_helpers/count_lines_frontend.py,sha256=KkkecMNXssfwBK9nLEXZgilq_DME1ah325MTRV6-z2c,607
|
|
244
244
|
machineconfig/scripts/python/repos_helpers/entrypoint.py,sha256=UagEar85QCAXX7oOqJjDJp2Vds5UQxehYPmckL_S0oI,2836
|
|
245
245
|
machineconfig/scripts/python/repos_helpers/record.py,sha256=3T5VmMbvywScZhTW2j4cGLK0T2LSWxKfnXkRTxkuLP4,10994
|
|
246
246
|
machineconfig/scripts/python/repos_helpers/sync.py,sha256=CLLWy2n2gY9beXPF-mblOQ6R7cKoenkJjMiX7tHQsBk,3091
|
|
247
247
|
machineconfig/scripts/python/repos_helpers/update.py,sha256=cUIMUMm-50HrY6fzxSMZnFplhToVjVPZMm1j_otTha4,11060
|
|
248
248
|
machineconfig/scripts/python/sessions_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
249
|
-
machineconfig/scripts/python/sessions_helpers/sessions_multiprocess.py,sha256=
|
|
249
|
+
machineconfig/scripts/python/sessions_helpers/sessions_multiprocess.py,sha256=zLssrCT3WRReiK0AFwctELN_o_svKypagUwJj0nT6i4,3122
|
|
250
250
|
machineconfig/scripts/windows/fzfb.ps1,sha256=Bmngm2aY8hnPa3iKAOK6EPDYdKzGLUc81wYOnJhNoqg,149
|
|
251
251
|
machineconfig/scripts/windows/fzfg.ps1,sha256=CHJbMrMuZePd4dxwIwz3g4XWAEmWmckuX-Nrx2xgRkg,27
|
|
252
252
|
machineconfig/scripts/windows/fzfrga.bat,sha256=rU_KBMO6ii2EZ0akMnmDk9vpuhKSUZqkV0o8a8ywXcM,488
|
|
253
253
|
machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
|
|
254
254
|
machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
|
|
255
255
|
machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
|
|
256
|
-
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=
|
|
256
|
+
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=nlbvxdqdUQXpKrOOsz_o3wUPVHmVYC4a6lxSoFFt4Qk,322
|
|
257
257
|
machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
|
|
258
258
|
machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
|
|
259
259
|
machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
|
|
@@ -323,7 +323,7 @@ machineconfig/settings/rofi/config.rasi,sha256=nDX5B8wdXQYF1fwiOTBRJUI4l_gQbYaLa
|
|
|
323
323
|
machineconfig/settings/rofi/config_default.rasi,sha256=rTfKnC-bZuWX1l-lWQACCUOE1ShhkfykAxtXX9PlQHE,4694
|
|
324
324
|
machineconfig/settings/shells/alacritty/alacritty.toml,sha256=EbL-2Y4QunW1pvRWB2yuLCw8MMPONheJr5LFoWRieUQ,871
|
|
325
325
|
machineconfig/settings/shells/alacritty/alacritty.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
326
|
-
machineconfig/settings/shells/bash/init.sh,sha256=
|
|
326
|
+
machineconfig/settings/shells/bash/init.sh,sha256=lrHOvhT5xrKGhdYiR3uBiC4gGJ0IU8-sKuSRvvlxNHo,2267
|
|
327
327
|
machineconfig/settings/shells/hyper/.hyper.js,sha256=h-HqeYlvPvPD4Ee7828Cxo87uVkzbMGJFqXTZIWoegw,8884
|
|
328
328
|
machineconfig/settings/shells/ipy/profiles/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
329
329
|
machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -331,7 +331,7 @@ machineconfig/settings/shells/ipy/profiles/default/startup/playext.py,sha256=OJ3
|
|
|
331
331
|
machineconfig/settings/shells/kitty/kitty.conf,sha256=lDdx-dUX3jbKGb3BkS2f2TOpmgGiS-CI-_-lFvhD5A4,52870
|
|
332
332
|
machineconfig/settings/shells/nushell/config.nu,sha256=ug0E0NXNlCzgStScFN6VTsAkUaOTPJZB69P-LS5L2VE,1047
|
|
333
333
|
machineconfig/settings/shells/nushell/env.nu,sha256=4VmaXb-qP6qnMD5TPzkXMLFNlB5QC4l9HEzCvXZE2GQ,315
|
|
334
|
-
machineconfig/settings/shells/pwsh/init.ps1,sha256=
|
|
334
|
+
machineconfig/settings/shells/pwsh/init.ps1,sha256=ZbBKd1XkWLnKKkN-KgJBX__ynuc5aYIcIK5vmVXOyig,2685
|
|
335
335
|
machineconfig/settings/shells/pwsh/profile.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
336
336
|
machineconfig/settings/shells/starship/starship.toml,sha256=5rQTY7ZpKnrnhgu2Y9OJKUYMz5lPLIftO1p1VRuVZwQ,1150
|
|
337
337
|
machineconfig/settings/shells/vtm/settings.xml,sha256=5TNXd-i0eUGo2w3tuhY9aOkwoJdqih8_HO_U6uL2Dts,18262
|
|
@@ -368,7 +368,7 @@ machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKG
|
|
|
368
368
|
machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
|
|
369
369
|
machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
|
|
370
370
|
machineconfig/setup_linux/web_shortcuts/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
|
|
371
|
-
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=
|
|
371
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=bYkiPvnI-UE4n28YZ7nPS1XK-U-flvjtG0wvFKitSBI,442
|
|
372
372
|
machineconfig/setup_windows/__init__.py,sha256=NnSVZkIBoxoMgkj-_KAqGonH3YziBIWXOKDEcmNAGTY,386
|
|
373
373
|
machineconfig/setup_windows/apps.ps1,sha256=G5GqZ9G0aiQr_A-HaahtRdzpaTTdW6n3DRKMZWDTSPc,11214
|
|
374
374
|
machineconfig/setup_windows/uv.ps1,sha256=ukk1Abh-q-RfpoEqI2XTE2dcQJmHk0VFF6WqkK3TW8Q,350
|
|
@@ -378,7 +378,7 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
|
|
|
378
378
|
machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
|
|
379
379
|
machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
|
|
380
380
|
machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
|
|
381
|
-
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=
|
|
381
|
+
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=zbetiUwmwOWbIz_5iFWbxsRk5K-SBgLzOhdZ6JFRLS0,548
|
|
382
382
|
machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
383
383
|
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
|
|
384
384
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -396,7 +396,7 @@ machineconfig/utils/procs.py,sha256=w75oGKfR7FpT1pGTGd2XscnEOO0IHBWxohLbi69hLqg,
|
|
|
396
396
|
machineconfig/utils/scheduler.py,sha256=jZ_1yghqA3-aINPRmE_76gboqJc0UElroR7urNOfXKs,14940
|
|
397
397
|
machineconfig/utils/scheduling.py,sha256=RF1iXJpqf4Dg18jdZWtBixz97KAHC6VKYqTFSpdLWuc,11188
|
|
398
398
|
machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
|
|
399
|
-
machineconfig/utils/ssh.py,sha256=
|
|
399
|
+
machineconfig/utils/ssh.py,sha256=N9BchzFPC0BveM_OhUXLDJ8wwBDcMa9flN95Q_dPcIw,39079
|
|
400
400
|
machineconfig/utils/terminal.py,sha256=IlmOByfQG-vjhaFFxxzU5rWzP5_qUzmalRfuey3PAmc,11801
|
|
401
401
|
machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
|
|
402
402
|
machineconfig/utils/upgrade_packages.py,sha256=H96zVJEWXJW07nh5vhjuSCrPtXGqoUb7xeJsFYYdmCI,3330
|
|
@@ -413,7 +413,7 @@ machineconfig/utils/files/ouch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
|
413
413
|
machineconfig/utils/files/ouch/decompress.py,sha256=7qPaEkMerBBXzeZyFn8hLODHZJv1aty-yGgwBxLgVys,1413
|
|
414
414
|
machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
415
415
|
machineconfig/utils/installer_utils/github_release_bulk.py,sha256=WJf_qZlF02SmIc6C7o1h4Gy4gAaJAfeAS8O9s2Itj-k,6535
|
|
416
|
-
machineconfig/utils/installer_utils/installer.py,sha256=
|
|
416
|
+
machineconfig/utils/installer_utils/installer.py,sha256=E1GqBJpVDGcYVX5LfiaQbLO2va2FrOMZOcwWiyP_nXw,9837
|
|
417
417
|
machineconfig/utils/installer_utils/installer_abc.py,sha256=ZoMtINHD9cHEu4R5SYUWgHLTAqo4F2a33pBrEOGX4zs,11693
|
|
418
418
|
machineconfig/utils/installer_utils/installer_class.py,sha256=apLMLmpZfHbj4I5ttgwg0ZIp66B5vx2nPtuhEobGdWM,17186
|
|
419
419
|
machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=Xbi59rU35AzR7HZZ8ZQ8aUu_FjSgijNqc8Sme0rCk2Y,2050
|
|
@@ -421,8 +421,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
|
|
|
421
421
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
422
422
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
423
423
|
machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
424
|
-
machineconfig-5.
|
|
425
|
-
machineconfig-5.
|
|
426
|
-
machineconfig-5.
|
|
427
|
-
machineconfig-5.
|
|
428
|
-
machineconfig-5.
|
|
424
|
+
machineconfig-5.88.dist-info/METADATA,sha256=-epwzNOMxIClqXyv0D85_N5be68VI9RPLl_-KqFoKZs,3012
|
|
425
|
+
machineconfig-5.88.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
426
|
+
machineconfig-5.88.dist-info/entry_points.txt,sha256=M0jwN_brZdXWhmNVeXLvdKxfkv8WhhXFZYcuKBA9qnk,418
|
|
427
|
+
machineconfig-5.88.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
428
|
+
machineconfig-5.88.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|