machineconfig 7.2__py3-none-any.whl → 7.32__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/profile/create_links.py +1 -1
- machineconfig/profile/create_links_export.py +2 -2
- machineconfig/scripts/linux/mcfgs +3 -3
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_config.py +7 -3
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +20 -23
- machineconfig/scripts/python/helpers_devops/cli_self.py +3 -3
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +29 -10
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +1 -1
- machineconfig/scripts/python/nw/mount_nfs +1 -1
- machineconfig/scripts/python/terminal.py +1 -1
- machineconfig/scripts/windows/mcfgs.ps1 +3 -2
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
- machineconfig/settings/shells/bash/init.sh +1 -1
- machineconfig/setup_linux/web_shortcuts/interactive.sh +9 -9
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +9 -9
- machineconfig/utils/links.py +37 -36
- machineconfig/utils/ssh.py +1 -1
- {machineconfig-7.2.dist-info → machineconfig-7.32.dist-info}/METADATA +1 -1
- {machineconfig-7.2.dist-info → machineconfig-7.32.dist-info}/RECORD +23 -25
- machineconfig/scripts/linux/term +0 -39
- machineconfig/scripts/windows/term.ps1 +0 -48
- {machineconfig-7.2.dist-info → machineconfig-7.32.dist-info}/WHEEL +0 -0
- {machineconfig-7.2.dist-info → machineconfig-7.32.dist-info}/entry_points.txt +0 -0
- {machineconfig-7.2.dist-info → machineconfig-7.32.dist-info}/top_level.txt +0 -0
|
@@ -79,7 +79,7 @@ def read_mapper() -> MapperFileData:
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
def apply_mapper(mapper_data: dict[str, list[ConfigMapper]],
|
|
82
|
-
on_conflict: Literal["throw-error", "
|
|
82
|
+
on_conflict: Literal["throw-error", "overwrite-self-managed", "backup-self-managed", "overwrite-default-path", "backup-default-path"],
|
|
83
83
|
method: Literal["symlink", "copy"]
|
|
84
84
|
):
|
|
85
85
|
operation_records: list[OperationRecord] = []
|
|
@@ -4,7 +4,7 @@ from typing import Optional, Literal, Annotated
|
|
|
4
4
|
|
|
5
5
|
|
|
6
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["throw-error", "
|
|
7
|
+
on_conflict: Annotated[Literal["throw-error", "overwrite-default-path", "backup-default-path"], typer.Option(..., help="Action to take on conflict")],
|
|
8
8
|
which: Annotated[Optional[str], typer.Option(..., help="Specific items to process")] = None,
|
|
9
9
|
interactive: Annotated[bool, typer.Option(..., help="Run in interactive mode")] = False):
|
|
10
10
|
"""Terminology:
|
|
@@ -32,7 +32,7 @@ def main_public_from_parser(method: Annotated[Literal["symlink", "copy"], typer.
|
|
|
32
32
|
|
|
33
33
|
|
|
34
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["throw-error", "
|
|
35
|
+
on_conflict: Annotated[Literal["throw-error", "overwrite-self-managed", "backup-self-managed", "overwrite-default-path", "backup-default-path"], typer.Option(..., help="Action to take on conflict")] = "throw-error",
|
|
36
36
|
which: Annotated[Optional[str], typer.Option(..., help="Specific items to process")] = None,
|
|
37
37
|
interactive: Annotated[bool, typer.Option(..., help="Run in interactive mode")] = False):
|
|
38
38
|
from machineconfig.profile.create_links import ConfigMapper, read_mapper
|
|
@@ -27,18 +27,18 @@ wrap_in_shell_script() {
|
|
|
27
27
|
"$command" "$@"
|
|
28
28
|
|
|
29
29
|
if [[ -f "$OP_PROGRAM_PATH" ]]; then
|
|
30
|
-
printf "%b\n" "${GREEN}
|
|
30
|
+
printf "%b\n" "${GREEN}🚀 Taking over from python script @ ${OP_PROGRAM_PATH}${RESET}"
|
|
31
31
|
bat --style=plain --paging=never "$OP_PROGRAM_PATH"
|
|
32
32
|
printf "%b\n" "${GREEN}▶ Running...${RESET}"
|
|
33
33
|
. "$OP_PROGRAM_PATH"
|
|
34
34
|
status=$?
|
|
35
35
|
if [[ $status -eq 0 ]]; then
|
|
36
|
-
printf "%b\n" "${GREEN}✅
|
|
36
|
+
printf "%b\n" "${GREEN}✅ '${command}' execution completed.${RESET}"
|
|
37
37
|
else
|
|
38
38
|
printf "%b\n" "${YELLOW}⚠️ Program exited with status ${status}${RESET}"
|
|
39
39
|
fi
|
|
40
40
|
else
|
|
41
|
-
printf "%b\n" "${
|
|
41
|
+
printf "%b\n" "${GREEN}✅ '${command}' execution completed.${RESET}"
|
|
42
42
|
fi
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -7,21 +7,23 @@ import machineconfig.scripts.python.helpers_devops.cli_config_dotfile as dotfile
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def private(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for linking files")],
|
|
10
|
-
on_conflict: Annotated[Literal["throw-error", "
|
|
10
|
+
on_conflict: Annotated[Literal["throw-error", "overwrite-self-managed", "backup-self-managed", "overwrite-default-path", "backup-default-path"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
|
|
11
11
|
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = None,
|
|
12
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
|
+
|
|
17
18
|
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["throw-error", "
|
|
19
|
+
on_conflict: Annotated[Literal["throw-error", "overwrite-default-path", "backup-default-path"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
|
|
19
20
|
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = None,
|
|
20
21
|
interactive: Annotated[bool, typer.Option(..., "--interactive", "-ia", help="Run in interactive mode")] = False):
|
|
21
22
|
"""🔗 Manage public configuration files."""
|
|
22
23
|
import machineconfig.profile.create_links_export as create_links_export
|
|
23
24
|
create_links_export.main_public_from_parser(method=method, on_conflict=on_conflict, which=which, interactive=interactive)
|
|
24
25
|
|
|
26
|
+
|
|
25
27
|
def shell():
|
|
26
28
|
"""🔗 Configure your shell profile."""
|
|
27
29
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
@@ -37,7 +39,7 @@ def path():
|
|
|
37
39
|
uv_with = ["textual"]
|
|
38
40
|
uv_project_dir = None
|
|
39
41
|
if not Path.home().joinpath("code/machineconfig").exists():
|
|
40
|
-
uv_with.append("machineconfig>=
|
|
42
|
+
uv_with.append("machineconfig>=7.32")
|
|
41
43
|
else:
|
|
42
44
|
uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
|
|
43
45
|
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])
|
|
@@ -50,6 +52,7 @@ def pwsh_theme():
|
|
|
50
52
|
import subprocess
|
|
51
53
|
subprocess.run(["pwsh", "-File", str(file)])
|
|
52
54
|
|
|
55
|
+
|
|
53
56
|
def starship_theme():
|
|
54
57
|
"""🔗 Select starship prompt theme."""
|
|
55
58
|
import subprocess
|
|
@@ -78,6 +81,7 @@ def starship_theme():
|
|
|
78
81
|
except ValueError:
|
|
79
82
|
typer.echo("❌ Please enter a valid number")
|
|
80
83
|
|
|
84
|
+
|
|
81
85
|
def copy_assets(which: Annotated[Literal["scripts", "settings", "both"], typer.Argument(..., help="Which assets to copy")]):
|
|
82
86
|
"""🔗 Copy asset files from library to machine."""
|
|
83
87
|
import machineconfig.profile.create_helper as create_helper
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
"""Like yadm and dotter."""
|
|
2
3
|
|
|
3
4
|
from typing import Annotated, Literal
|
|
@@ -7,10 +8,9 @@ import typer
|
|
|
7
8
|
def main(
|
|
8
9
|
file: Annotated[str, typer.Argument(help="file/folder path.")],
|
|
9
10
|
method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for linking files")] = "copy",
|
|
10
|
-
on_conflict: Annotated[Literal["throw-error", "
|
|
11
|
+
on_conflict: Annotated[Literal["throw-error", "overwrite-self-managed", "backup-self-managed", "overwrite-default-path", "backup-default-path"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
|
|
11
12
|
sensitivity: Annotated[Literal["private", "public"], typer.Option(..., "--sensitivity", "-s", help="Sensitivity of the config file.")] = "private",
|
|
12
|
-
destination: Annotated[str, typer.Option("--destination", "-d", help="destination folder (override the default, use at your own risk)")] = "",
|
|
13
|
-
) -> None:
|
|
13
|
+
destination: Annotated[str, typer.Option("--destination", "-d", help="destination folder (override the default, use at your own risk)")] = "",) -> None:
|
|
14
14
|
from rich.console import Console
|
|
15
15
|
from rich.panel import Panel
|
|
16
16
|
from machineconfig.utils.links import symlink_map, copy_map
|
|
@@ -33,25 +33,23 @@ def main(
|
|
|
33
33
|
new_path = dest_path.joinpath(orig_path.name)
|
|
34
34
|
|
|
35
35
|
from machineconfig.utils.path_extended import PathExtended
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
]
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
)
|
|
54
|
-
)
|
|
36
|
+
match method:
|
|
37
|
+
case "copy":
|
|
38
|
+
try:
|
|
39
|
+
copy_map(config_file_default_path=PathExtended(orig_path), self_managed_config_file_path=PathExtended(new_path), on_conflict=on_conflict)
|
|
40
|
+
except Exception as e:
|
|
41
|
+
typer.echo(f"[red]Error:[/] {e}")
|
|
42
|
+
typer.Exit(code=1)
|
|
43
|
+
return
|
|
44
|
+
case "symlink":
|
|
45
|
+
try:
|
|
46
|
+
symlink_map(config_file_default_path=PathExtended(orig_path), self_managed_config_file_path=PathExtended(new_path), on_conflict=on_conflict)
|
|
47
|
+
except Exception as e:
|
|
48
|
+
typer.echo(f"[red]Error:[/] {e}")
|
|
49
|
+
typer.Exit(code=1)
|
|
50
|
+
case _:
|
|
51
|
+
raise ValueError(f"Unknown method: {method}")
|
|
52
|
+
console.print(Panel("\n".join(["✅ Symbolic link created successfully!", "🔄 Add the following snippet to mapper.toml to persist this mapping:",]), title="Symlink Created", border_style="green", padding=(1, 2),))
|
|
55
53
|
|
|
56
54
|
# mapper_snippet = "\n".join(
|
|
57
55
|
# [
|
|
@@ -61,7 +59,6 @@ def main(
|
|
|
61
59
|
# f"{orig_path.name.split('.')[0]} = {{ this = '{orig_path.collapseuser().as_posix()}', to_this = '{new_path.collapseuser().as_posix()}' }}",
|
|
62
60
|
# ]
|
|
63
61
|
# )
|
|
64
|
-
|
|
65
62
|
# console.print(
|
|
66
63
|
# Panel(
|
|
67
64
|
# mapper_snippet,
|
|
@@ -48,9 +48,9 @@ def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-n
|
|
|
48
48
|
else:
|
|
49
49
|
import platform
|
|
50
50
|
if platform.system() == "Windows":
|
|
51
|
-
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=
|
|
51
|
+
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=7.32" """)
|
|
52
52
|
else:
|
|
53
|
-
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=
|
|
53
|
+
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=7.32" """)
|
|
54
54
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
55
55
|
if not no_copy_assets:
|
|
56
56
|
create_default_shell_profile() # involves copying assets too
|
|
@@ -75,7 +75,7 @@ def navigate():
|
|
|
75
75
|
path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
|
|
76
76
|
from machineconfig.utils.code import run_shell_script
|
|
77
77
|
if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
|
|
78
|
-
else: executable = """--with "machineconfig>=
|
|
78
|
+
else: executable = """--with "machineconfig>=7.32,textual" """
|
|
79
79
|
run_shell_script(f"""uv run {executable} {path}""")
|
|
80
80
|
|
|
81
81
|
|
|
@@ -140,7 +140,8 @@ croc {relay_arg} send {zip_arg} {qrcode_arg} {text_arg} {path_arg}"""
|
|
|
140
140
|
exit_then_run_shell_script(script=script, strict=False)
|
|
141
141
|
|
|
142
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'")],
|
|
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:
|
|
144
145
|
"""Receive a file using croc with relay server.
|
|
145
146
|
Usage examples:
|
|
146
147
|
devops network receive 7121-donor-olympic-bicycle
|
|
@@ -150,9 +151,22 @@ Usage examples:
|
|
|
150
151
|
from machineconfig.utils.installer_utils.installer import install_if_missing
|
|
151
152
|
install_if_missing(which="croc")
|
|
152
153
|
import platform
|
|
154
|
+
import sys
|
|
153
155
|
|
|
154
156
|
is_windows = platform.system() == "Windows"
|
|
155
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
|
+
|
|
156
170
|
# Join all arguments
|
|
157
171
|
input_str = " ".join(code_args)
|
|
158
172
|
tokens = input_str.split()
|
|
@@ -161,25 +175,30 @@ Usage examples:
|
|
|
161
175
|
relay_server: str | None = None
|
|
162
176
|
secret_code: str | None = None
|
|
163
177
|
|
|
164
|
-
# Remove 'croc' from tokens if present
|
|
165
|
-
tokens = [t for t in tokens if t
|
|
178
|
+
# Remove 'croc' and 'export' from tokens if present
|
|
179
|
+
tokens = [t for t in tokens if t not in ['croc', 'export']]
|
|
166
180
|
|
|
167
181
|
# Look for --relay flag and capture next token
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if
|
|
171
|
-
relay_server = tokens[
|
|
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
|
|
172
188
|
|
|
173
189
|
# Look for CROC_SECRET= prefix in any token
|
|
174
190
|
for token in tokens:
|
|
175
191
|
if token.startswith('CROC_SECRET='):
|
|
176
|
-
secret_code = token.split('=', 1)[1].strip('"')
|
|
192
|
+
secret_code = token.split('=', 1)[1].strip('"').strip("'")
|
|
177
193
|
break
|
|
178
194
|
|
|
179
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
|
|
180
197
|
if not secret_code:
|
|
181
|
-
for token in tokens:
|
|
182
|
-
if '-' in token and not token.startswith('-') and token
|
|
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
|
|
183
202
|
secret_code = token
|
|
184
203
|
break
|
|
185
204
|
|
|
@@ -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>=
|
|
8
|
+
uv run --python 3.14 --with "machineconfig>=7.32" 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."
|
|
@@ -69,6 +69,7 @@ def get_session_tabs() -> list[tuple[str, str]]:
|
|
|
69
69
|
print(result)
|
|
70
70
|
return result
|
|
71
71
|
|
|
72
|
+
|
|
72
73
|
def start_wt(layout_name: Annotated[str, typer.Argument(help="Layout name to start.")]):
|
|
73
74
|
from pathlib import Path
|
|
74
75
|
layouts_file = Path.home().joinpath("dotfiles/machineconfig/layouts.json")
|
|
@@ -87,7 +88,6 @@ def start_wt(layout_name: Annotated[str, typer.Argument(help="Layout name to sta
|
|
|
87
88
|
raise typer.Exit(code=1)
|
|
88
89
|
from machineconfig.cluster.sessions_managers.wt_local import run_wt_layout
|
|
89
90
|
run_wt_layout(layout_config=chosen_layout)
|
|
90
|
-
|
|
91
91
|
# cmd = f'powershell -ExecutionPolicy Bypass -File "./{layout_name}_layout.ps1"'
|
|
92
92
|
# from machineconfig.utils.code import exit_then_run_shell_script
|
|
93
93
|
# exit_then_run_shell_script(cmd, strict=True)
|
|
@@ -30,10 +30,11 @@ function wrap_in_shell_script {
|
|
|
30
30
|
|
|
31
31
|
# Check if the file exists
|
|
32
32
|
if (Test-Path $env:OP_PROGRAM_PATH) {
|
|
33
|
-
Write-Host "
|
|
33
|
+
Write-Host "🚀 Taking over from python script @ $env:OP_PROGRAM_PATH"
|
|
34
34
|
& $env:OP_PROGRAM_PATH
|
|
35
|
+
Write-Host "✅ '$Command' execution completed."
|
|
35
36
|
} else {
|
|
36
|
-
Write-Host "
|
|
37
|
+
Write-Host "✅ '$Command' execution completed."
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
# Clean up the temporary environment variable so it doesn't leak to other processes/sessions
|
|
@@ -7,7 +7,7 @@ $user = ''
|
|
|
7
7
|
$sharePath = ''
|
|
8
8
|
$driveLetter = ''
|
|
9
9
|
|
|
10
|
-
uv run --python 3.14 --with "machineconfig>=
|
|
10
|
+
uv run --python 3.14 --with "machineconfig>=7.32" 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
|
|
@@ -54,7 +54,7 @@ alias ff='wrap_in_shell_script ftpx'
|
|
|
54
54
|
alias f='wrap_in_shell_script fire'
|
|
55
55
|
alias r='wrap_in_shell_script croshell'
|
|
56
56
|
alias u='wrap_in_shell_script utils'
|
|
57
|
-
alias t='wrap_in_shell_script
|
|
57
|
+
alias t='wrap_in_shell_script terminal'
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
# alias gcs='gh copilot suggest -t shell'
|
|
@@ -2,15 +2,15 @@
|
|
|
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/mcfgs")
|
|
4
4
|
|
|
5
|
-
alias devops='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=
|
|
6
|
-
alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=
|
|
7
|
-
alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=
|
|
8
|
-
alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=
|
|
9
|
-
alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=
|
|
10
|
-
alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=
|
|
11
|
-
alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=
|
|
12
|
-
alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=
|
|
13
|
-
alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=
|
|
5
|
+
alias devops='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" devops'
|
|
6
|
+
alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" cloud'
|
|
7
|
+
alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" agents'
|
|
8
|
+
alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" sessions'
|
|
9
|
+
alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" ftpx'
|
|
10
|
+
alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" fire'
|
|
11
|
+
alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" croshell'
|
|
12
|
+
alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" utils'
|
|
13
|
+
alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" terminal'
|
|
14
14
|
|
|
15
15
|
alias d='wrap_in_shell_script devops'
|
|
16
16
|
alias c='wrap_in_shell_script cloud'
|
|
@@ -3,15 +3,15 @@
|
|
|
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/mcfgs.ps1").Content
|
|
5
5
|
|
|
6
|
-
function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=
|
|
7
|
-
function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=
|
|
8
|
-
function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=
|
|
9
|
-
function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=
|
|
10
|
-
function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=
|
|
11
|
-
function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=
|
|
12
|
-
function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=
|
|
13
|
-
function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=
|
|
14
|
-
function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=
|
|
6
|
+
function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" devops $args }
|
|
7
|
+
function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" cloud $args }
|
|
8
|
+
function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" agents $args }
|
|
9
|
+
function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" sessions $args }
|
|
10
|
+
function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" ftpx $args }
|
|
11
|
+
function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" fire $args }
|
|
12
|
+
function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" croshell $args }
|
|
13
|
+
function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" utils $args }
|
|
14
|
+
function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" terminal $args }
|
|
15
15
|
|
|
16
16
|
function d { wrap_in_shell_script devops @args }
|
|
17
17
|
function c { wrap_in_shell_script cloud @args }
|
machineconfig/utils/links.py
CHANGED
|
@@ -96,7 +96,7 @@ def build_links(target_paths: list[tuple[PLike, str]], repo_root: PLike):
|
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
def symlink_map(config_file_default_path: PathExtended, self_managed_config_file_path: PathExtended,
|
|
99
|
-
on_conflict: Literal["throw-error", "
|
|
99
|
+
on_conflict: Literal["throw-error", "overwrite-self-managed", "backup-self-managed", "overwrite-default-path", "backup-default-path"]
|
|
100
100
|
) -> OperationResult:
|
|
101
101
|
"""helper function. creates a symlink from `config_file_default_path` to `self_managed_config_file_path`.
|
|
102
102
|
|
|
@@ -104,10 +104,10 @@ def symlink_map(config_file_default_path: PathExtended, self_managed_config_file
|
|
|
104
104
|
|
|
105
105
|
on_conflict strategies:
|
|
106
106
|
- throw-error: Raise exception when files differ
|
|
107
|
-
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
-
|
|
107
|
+
- overwrite-self-managed: Delete self_managed_config_file_path (self-managed), move config_file_default_path to self_managed_config_file_path, create symlink
|
|
108
|
+
- backup-self-managed: Backup self_managed_config_file_path (self-managed), move config_file_default_path to self_managed_config_file_path, create symlink
|
|
109
|
+
- overwrite-default-path: Delete config_file_default_path (default path), create symlink to self_managed_config_file_path
|
|
110
|
+
- backup-default-path: Backup config_file_default_path (default path), create symlink to self_managed_config_file_path
|
|
111
111
|
|
|
112
112
|
Note: `config_file_default_path` is the default system location, `self_managed_config_file_path` is the self-managed config location
|
|
113
113
|
|
|
@@ -170,32 +170,33 @@ def symlink_map(config_file_default_path: PathExtended, self_managed_config_file
|
|
|
170
170
|
except Exception:
|
|
171
171
|
console.print(Panel("⚠️ Could not show diff using 'delta'. Please install 'delta' for better diff visualization.", title="Delta Not Found", expand=False))
|
|
172
172
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
173
|
+
match on_conflict:
|
|
174
|
+
case "throw-error":
|
|
175
|
+
raise RuntimeError(f"Conflict detected: {config_file_default_path} and {self_managed_config_file_path} both exist with different content")
|
|
176
|
+
case "overwrite-self-managed":
|
|
177
|
+
action_taken = "backing_up_target"
|
|
178
|
+
details = "Overwriting self-managed config, moving default path to self-managed location"
|
|
179
|
+
console.print(Panel(f"📦 OVERWRITE SELF-MANAGED | Deleting {self_managed_config_file_path}, moving {config_file_default_path} to {self_managed_config_file_path}", title="Overwrite Self-Managed", expand=False))
|
|
180
|
+
self_managed_config_file_path.delete(sure=True)
|
|
181
|
+
config_file_default_path.move(path=self_managed_config_file_path)
|
|
182
|
+
case "backup-self-managed":
|
|
183
|
+
backup_name = f"{self_managed_config_file_path}.orig_{randstr()}"
|
|
184
|
+
action_taken = "backing_up_target"
|
|
185
|
+
details = f"Backed up self-managed config to {backup_name}"
|
|
186
|
+
console.print(Panel(f"📦 BACKUP SELF-MANAGED | Moving {self_managed_config_file_path} to {backup_name}, moving {config_file_default_path} to {self_managed_config_file_path}", title="Backup Self-Managed", expand=False))
|
|
187
|
+
self_managed_config_file_path.move(path=backup_name)
|
|
188
|
+
config_file_default_path.move(path=self_managed_config_file_path)
|
|
189
|
+
case "overwrite-default-path":
|
|
190
|
+
action_taken = "backupConfigDefaultPath"
|
|
191
|
+
details = "Overwriting default path, creating symlink to self-managed config"
|
|
192
|
+
console.print(Panel(f"📦 OVERWRITE DEFAULT | Deleting {config_file_default_path}, creating symlink to {self_managed_config_file_path}", title="Overwrite Default", expand=False))
|
|
193
|
+
config_file_default_path.delete(sure=True)
|
|
194
|
+
case "backup-default-path":
|
|
195
|
+
backup_name = f"{config_file_default_path}.orig_{randstr()}"
|
|
196
|
+
action_taken = "backupConfigDefaultPath"
|
|
197
|
+
details = f"Backed up default path to {backup_name}"
|
|
198
|
+
console.print(Panel(f"📦 BACKUP DEFAULT | Moving {config_file_default_path} to {backup_name}, creating symlink to {self_managed_config_file_path}", title="Backup Default", expand=False))
|
|
199
|
+
config_file_default_path.move(path=backup_name)
|
|
199
200
|
else:
|
|
200
201
|
# self_managed_config_file_path doesn't exist
|
|
201
202
|
if config_file_default_path.is_symlink():
|
|
@@ -243,7 +244,7 @@ def symlink_map(config_file_default_path: PathExtended, self_managed_config_file
|
|
|
243
244
|
return {"action": action_taken, "details": details}
|
|
244
245
|
|
|
245
246
|
|
|
246
|
-
def copy_map(config_file_default_path: PathExtended, self_managed_config_file_path: PathExtended, on_conflict: Literal["throw-error", "
|
|
247
|
+
def copy_map(config_file_default_path: PathExtended, self_managed_config_file_path: PathExtended, on_conflict: Literal["throw-error", "overwrite-self-managed", "backup-self-managed", "overwrite-default-path", "backup-default-path"]) -> OperationResult:
|
|
247
248
|
config_file_default_path = PathExtended(config_file_default_path).expanduser().absolute()
|
|
248
249
|
self_managed_config_file_path = PathExtended(self_managed_config_file_path).expanduser().absolute()
|
|
249
250
|
|
|
@@ -301,25 +302,25 @@ def copy_map(config_file_default_path: PathExtended, self_managed_config_file_pa
|
|
|
301
302
|
match on_conflict:
|
|
302
303
|
case "throw-error":
|
|
303
304
|
raise RuntimeError(f"Conflict detected: {config_file_default_path} and {self_managed_config_file_path} both exist with different content")
|
|
304
|
-
case "
|
|
305
|
+
case "overwrite-self-managed":
|
|
305
306
|
action_taken = "backing_up_target"
|
|
306
307
|
details = "Overwriting self-managed config with default path content"
|
|
307
308
|
console.print(Panel(f"📦 OVERWRITE SELF-MANAGED | Deleting {self_managed_config_file_path}, moving {config_file_default_path} to {self_managed_config_file_path}", title="Overwrite Self-Managed", expand=False))
|
|
308
309
|
self_managed_config_file_path.delete(sure=True)
|
|
309
310
|
config_file_default_path.move(path=self_managed_config_file_path)
|
|
310
|
-
case "
|
|
311
|
+
case "backup-self-managed":
|
|
311
312
|
backup_name = f"{self_managed_config_file_path}.orig_{randstr()}"
|
|
312
313
|
action_taken = "backing_up_target"
|
|
313
314
|
details = f"Backed up self-managed config to {backup_name}"
|
|
314
315
|
console.print(Panel(f"📦 BACKUP SELF-MANAGED | Moving {self_managed_config_file_path} to {backup_name}, moving {config_file_default_path} to {self_managed_config_file_path}", title="Backup Self-Managed", expand=False))
|
|
315
316
|
self_managed_config_file_path.move(path=backup_name)
|
|
316
317
|
config_file_default_path.move(path=self_managed_config_file_path)
|
|
317
|
-
case "
|
|
318
|
+
case "overwrite-default-path":
|
|
318
319
|
action_taken = "backupConfigDefaultPath"
|
|
319
320
|
details = "Overwriting default path with self-managed config"
|
|
320
321
|
console.print(Panel(f"📦 OVERWRITE DEFAULT | Deleting {config_file_default_path}, will copy from {self_managed_config_file_path}", title="Overwrite Default", expand=False))
|
|
321
322
|
config_file_default_path.delete(sure=True)
|
|
322
|
-
case "
|
|
323
|
+
case "backup-default-path":
|
|
323
324
|
backup_name = f"{config_file_default_path}.orig_{randstr()}"
|
|
324
325
|
action_taken = "backupConfigDefaultPath"
|
|
325
326
|
details = f"Backed up default path to {backup_name}"
|
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>=
|
|
11
|
+
MACHINECONFIG_VERSION = "machineconfig>=7.32"
|
|
12
12
|
DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
|
|
13
13
|
|
|
14
14
|
class SSH:
|
|
@@ -94,8 +94,8 @@ machineconfig/profile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
94
94
|
machineconfig/profile/backup.toml,sha256=Hb25sIdKVvLqOF62NgiOpGZxd45I6IhsNHu623RtfQQ,766
|
|
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
|
-
machineconfig/profile/create_links.py,sha256=
|
|
98
|
-
machineconfig/profile/create_links_export.py,sha256=
|
|
97
|
+
machineconfig/profile/create_links.py,sha256=gdjRWEO4NDSlBWvCPbkBCqegapRB0mKdIsz1z4RJDT0,14228
|
|
98
|
+
machineconfig/profile/create_links_export.py,sha256=BXav-70rme4oagfU8I-xrv_xc6E409ipafegGeIuUDw,3309
|
|
99
99
|
machineconfig/profile/create_shell_profile.py,sha256=fib3YOj4QMV4dy7ysJtSzner1x-0nGtnGvnTKGyq578,10280
|
|
100
100
|
machineconfig/profile/mapper.toml,sha256=CGGKi4VbRo1-AuHU7w1g94NbAys0pxn6fI-2l-lUmY0,12469
|
|
101
101
|
machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
|
|
@@ -110,9 +110,8 @@ machineconfig/scripts/linux/fzfag,sha256=x0rX7vM_YjKLZ822D2Xh0HdaTj5kR_gG3g_5_w6
|
|
|
110
110
|
machineconfig/scripts/linux/fzffg,sha256=jjeeyFkWmBbwH2taRqC3EOzZep2KR-ZYoI4UI-5kHqg,1090
|
|
111
111
|
machineconfig/scripts/linux/fzfg,sha256=ClGnJZUsIk4y0qs3W5iXGo-nd0FaqAHMsnh8uoXQFy8,1190
|
|
112
112
|
machineconfig/scripts/linux/fzfrga,sha256=xSdws6ae28ZXkkqz_uupZ0MYw_vxE2qpLT2DLS3WITM,460
|
|
113
|
-
machineconfig/scripts/linux/mcfgs,sha256=
|
|
113
|
+
machineconfig/scripts/linux/mcfgs,sha256=R2WmmIVOL9nVtyZdvU02664GD7lYrmQUW4Y8b-wjLM8,1387
|
|
114
114
|
machineconfig/scripts/linux/skrg,sha256=JgQJGwxaChr148bDnpTB0rrqZMe2o2zGSDA9x_oUhWM,133
|
|
115
|
-
machineconfig/scripts/linux/term,sha256=CNPY8p6SitOmtOPKXPervPPabjJNYBerA12SHN_v7w4,1139
|
|
116
115
|
machineconfig/scripts/linux/other/share_cloud.sh,sha256=lIZrXiaOT11kzu4NFNTXvANhc2bMdSPDYD1-7XUO_C0,2027
|
|
117
116
|
machineconfig/scripts/linux/other/share_nfs,sha256=LDQZQ9TV7z2y7RtNHiO4Wb513MztyGjaAV-GzTGwUdc,1374
|
|
118
117
|
machineconfig/scripts/linux/other/start_docker,sha256=_yDN_PPqgzSUnPT7dmniMTpL4IfeeaGy1a2OL3IJlDU,525
|
|
@@ -129,7 +128,7 @@ machineconfig/scripts/python/ftpx.py,sha256=A13hL_tDYfcsaK9PkshK-0lrUS6KPhPCtwqW
|
|
|
129
128
|
machineconfig/scripts/python/interactive.py,sha256=jFHpiQq_lisa51BS4-qUlWPJ1-pmHmPAfA6dixdsOzY,11745
|
|
130
129
|
machineconfig/scripts/python/mcfg.py,sha256=TB5lZDZDImGqX4_mMSEv4ZoFigIPA0RXn-9H2cmPS6g,2457
|
|
131
130
|
machineconfig/scripts/python/sessions.py,sha256=Q_fbprawvW1x_E6jKQ-Z2Z5MRurRaepKUvi5z1G4CUw,9531
|
|
132
|
-
machineconfig/scripts/python/terminal.py,sha256=
|
|
131
|
+
machineconfig/scripts/python/terminal.py,sha256=RY7hJ0JIefJeGe_sp7ZiZpOG_vhXLmEAFRq-Fon-VEY,5191
|
|
133
132
|
machineconfig/scripts/python/utils.py,sha256=9vwF5QRbHphNF154UYg6Ld3W0b3N9uEkfMEeR-nP_sg,2802
|
|
134
133
|
machineconfig/scripts/python/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
135
134
|
machineconfig/scripts/python/ai/generate_files.py,sha256=VfjKdwgF8O6E4oiRtfWNliibLmmwGe7f9ld6wpOsXTw,14498
|
|
@@ -163,7 +162,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
|
|
|
163
162
|
machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
164
163
|
machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
|
|
165
164
|
machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
|
|
166
|
-
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=
|
|
165
|
+
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=uzbNgu5m9itV87-WXfI4cR2yCuT_70mlfpt59L2zL3U,6932
|
|
167
166
|
machineconfig/scripts/python/helpers_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
168
167
|
machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py,sha256=YD6-rtudHNip8tx85amSmOZZIHBP9khq4az3dF41j6U,5934
|
|
169
168
|
machineconfig/scripts/python/helpers_agents/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
|
|
@@ -193,13 +192,13 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
|
|
|
193
192
|
machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
194
193
|
machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
|
|
195
194
|
machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
196
|
-
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=
|
|
197
|
-
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=
|
|
195
|
+
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=kWgtoTPejj5lNk2FD2E1scgqloaxUq00_7oFuDSH0AI,6891
|
|
196
|
+
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=pVUFE1SUtyTiulLzUssf8FrtU190EIV-l9rpwucsBa0,3427
|
|
198
197
|
machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
|
|
199
198
|
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=9NcVJvPYaUDtmI_DSKthZxR4emMBeNWVM_M5f0YR8EQ,7302
|
|
200
199
|
machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
|
|
201
|
-
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=
|
|
202
|
-
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=
|
|
200
|
+
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=FDB8YjLYYj1qZkCeeAMVc7jnGy4fPVzRzqUxlvZa4DU,6621
|
|
201
|
+
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=BJnm9mEI0PGA2xK_ciNX1docIiRQ_fNhygGrDCcTekw,11076
|
|
203
202
|
machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
|
|
204
203
|
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=B9pnosujOxZLpwzJO4YAqeO-2rvvOFIZgrUwGREZXfM,11118
|
|
205
204
|
machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Dn8luB6QJzxKiiFSC-NMqiYddWZoca3A8eOjMYZDzTc,5598
|
|
@@ -226,7 +225,7 @@ machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wd
|
|
|
226
225
|
machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
|
|
227
226
|
machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
|
|
228
227
|
machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
|
|
229
|
-
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=
|
|
228
|
+
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=3iub-GApBNiOaPLfcOxB9RVF_RPCLWKZ7A8w3CtrFcA,10450
|
|
230
229
|
machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
|
|
231
230
|
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=vSDtrF4829jziwp6WZmGt9G8MJ9jY4hfXqtf0vhkYSE,607
|
|
232
231
|
machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
|
|
@@ -242,7 +241,7 @@ machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdC
|
|
|
242
241
|
machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
|
|
243
242
|
machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=CkIl85hZLtG9k7yXLSzqi88YrilHV4hIUWHAPBwxWjw,8922
|
|
244
243
|
machineconfig/scripts/python/nw/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
|
|
245
|
-
machineconfig/scripts/python/nw/mount_nfs,sha256=
|
|
244
|
+
machineconfig/scripts/python/nw/mount_nfs,sha256=Dri4hGiM2GxpqqxpdBPbf7dRHrr7P1HzZy6xtrHYQfU,1855
|
|
246
245
|
machineconfig/scripts/python/nw/mount_nfs.py,sha256=lOMDY4RS7tx8gsCazVR5tNNwFbaRyO2PJlnwBCDQgCM,3573
|
|
247
246
|
machineconfig/scripts/python/nw/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
|
|
248
247
|
machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
|
|
@@ -256,12 +255,11 @@ machineconfig/scripts/python/nw/wsl_windows_transfer.py,sha256=jHJyFTuks_Kw4cgE8
|
|
|
256
255
|
machineconfig/scripts/windows/fzfb.ps1,sha256=Bmngm2aY8hnPa3iKAOK6EPDYdKzGLUc81wYOnJhNoqg,149
|
|
257
256
|
machineconfig/scripts/windows/fzfg.ps1,sha256=CHJbMrMuZePd4dxwIwz3g4XWAEmWmckuX-Nrx2xgRkg,27
|
|
258
257
|
machineconfig/scripts/windows/fzfrga.bat,sha256=rU_KBMO6ii2EZ0akMnmDk9vpuhKSUZqkV0o8a8ywXcM,488
|
|
259
|
-
machineconfig/scripts/windows/mcfgs.ps1,sha256=
|
|
260
|
-
machineconfig/scripts/windows/term.ps1,sha256=nme_OWis84qN-zI2c0rdysNcDIdoaEKajXZhP2QioQs,1742
|
|
258
|
+
machineconfig/scripts/windows/mcfgs.ps1,sha256=1mLCFDPBG-1uNVaZe3fIAgvS_uo3u55TQaysG6Wj9Sw,1868
|
|
261
259
|
machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
|
|
262
260
|
machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
|
|
263
261
|
machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
|
|
264
|
-
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=
|
|
262
|
+
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=lO0zd1Qyu_nC43TOzfCcfu4rPmMYZlluFKZWYzb2GnY,322
|
|
265
263
|
machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
|
|
266
264
|
machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
|
|
267
265
|
machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
|
|
@@ -333,7 +331,7 @@ machineconfig/settings/rofi/config.rasi,sha256=nDX5B8wdXQYF1fwiOTBRJUI4l_gQbYaLa
|
|
|
333
331
|
machineconfig/settings/rofi/config_default.rasi,sha256=rTfKnC-bZuWX1l-lWQACCUOE1ShhkfykAxtXX9PlQHE,4694
|
|
334
332
|
machineconfig/settings/shells/alacritty/alacritty.toml,sha256=EbL-2Y4QunW1pvRWB2yuLCw8MMPONheJr5LFoWRieUQ,871
|
|
335
333
|
machineconfig/settings/shells/alacritty/alacritty.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
336
|
-
machineconfig/settings/shells/bash/init.sh,sha256=
|
|
334
|
+
machineconfig/settings/shells/bash/init.sh,sha256=EoZemahn3ewLsxUWv1RD1XLq-WZNNVE8yIhIu7ENDZs,2931
|
|
337
335
|
machineconfig/settings/shells/hyper/.hyper.js,sha256=h-HqeYlvPvPD4Ee7828Cxo87uVkzbMGJFqXTZIWoegw,8884
|
|
338
336
|
machineconfig/settings/shells/ipy/profiles/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
339
337
|
machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -379,7 +377,7 @@ machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE3
|
|
|
379
377
|
machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
|
|
380
378
|
machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
|
|
381
379
|
machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
|
|
382
|
-
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=
|
|
380
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=c1aV0EhTTDU8YTG1XKkiRN8cAYG8WKFJVn6CEGydQ6s,1449
|
|
383
381
|
machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
|
|
384
382
|
machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
|
|
385
383
|
machineconfig/setup_mac/apps_gui.sh,sha256=3alvddg918oMlJB2aUWJWpGGoaq5atlxcaOwhnyXlRI,9517
|
|
@@ -394,7 +392,7 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
|
|
|
394
392
|
machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
|
|
395
393
|
machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
|
|
396
394
|
machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
|
|
397
|
-
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256
|
|
395
|
+
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=WXWrFz-Ws9QpFkNPHa_hCt8f91Xzm94yzYyzIJwzvf0,1751
|
|
398
396
|
machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
399
397
|
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
|
|
400
398
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -402,7 +400,7 @@ machineconfig/utils/accessories.py,sha256=Rs8R0GUb2Ub6YimkgXHnI02CShS5BKlrZdCigV
|
|
|
402
400
|
machineconfig/utils/code.py,sha256=fVeQnhZE8-aoPBsrgjNcBTcv3NuyBSSQv9P8jyC8W_M,6635
|
|
403
401
|
machineconfig/utils/installer.py,sha256=1ScBaTe_pRsfTYht9-LXmirgnNizNy8u1GgetUfEDO4,10351
|
|
404
402
|
machineconfig/utils/io.py,sha256=4dSieoqZO8Vvi4vW8lLoITDHBvmFp4dtl3kyeZHQ6Co,2528
|
|
405
|
-
machineconfig/utils/links.py,sha256=
|
|
403
|
+
machineconfig/utils/links.py,sha256=mA98WNkX5iK4c6f8Ht3HKv7sB6VjIwqukTxXY23PVjk,25143
|
|
406
404
|
machineconfig/utils/meta.py,sha256=4ocYH3Zi6bVN6FVgXoGIfoasV6oxi67I9rQ8hvyYinc,9892
|
|
407
405
|
machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
|
|
408
406
|
machineconfig/utils/options.py,sha256=VWYx3EKJxIp-CJ8gDGYdjclKSc1tMUhyrC8v3seeneo,7447
|
|
@@ -412,7 +410,7 @@ machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,
|
|
|
412
410
|
machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
|
|
413
411
|
machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
|
|
414
412
|
machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
|
|
415
|
-
machineconfig/utils/ssh.py,sha256=
|
|
413
|
+
machineconfig/utils/ssh.py,sha256=xrMpTa4WFQG6QgaE00uJQZYq0RPaDWvx28Ke6YogYZo,39008
|
|
416
414
|
machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
|
|
417
415
|
machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
|
|
418
416
|
machineconfig/utils/upgrade_packages.py,sha256=75kabcI-chMiaBnafJ_hdhDUz_GyH7AsDt7rW3hyu9M,5851
|
|
@@ -441,8 +439,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
|
|
|
441
439
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
442
440
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
443
441
|
machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
444
|
-
machineconfig-7.
|
|
445
|
-
machineconfig-7.
|
|
446
|
-
machineconfig-7.
|
|
447
|
-
machineconfig-7.
|
|
448
|
-
machineconfig-7.
|
|
442
|
+
machineconfig-7.32.dist-info/METADATA,sha256=Cr6xNtBnHDG4jLnsqC1QAje0Wn1LR5pm5gih8-c5ZhI,3396
|
|
443
|
+
machineconfig-7.32.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
444
|
+
machineconfig-7.32.dist-info/entry_points.txt,sha256=0ho96z7b1toS6CeiajpTwEwQa83UrJ3g1onD4Wxax9o,624
|
|
445
|
+
machineconfig-7.32.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
446
|
+
machineconfig-7.32.dist-info/RECORD,,
|
machineconfig/scripts/linux/term
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
#!/usr/bin/env bash
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
RANDOM_NAME=$(date +%s%N | sha256sum | head -c 16)
|
|
6
|
-
OP_DIR="$HOME/tmp_results/tmp_scripts/machineconfig"
|
|
7
|
-
OP_PROGRAM_PATH="$OP_DIR/${RANDOM_NAME}.sh"
|
|
8
|
-
export OP_PROGRAM_PATH
|
|
9
|
-
|
|
10
|
-
# ANSI color/style codes
|
|
11
|
-
BOLD="\033[1m"
|
|
12
|
-
RESET="\033[0m"
|
|
13
|
-
GREEN="\033[32m"
|
|
14
|
-
YELLOW="\033[33m"
|
|
15
|
-
BLUE="\033[34m"
|
|
16
|
-
RED="\033[31m"
|
|
17
|
-
|
|
18
|
-
timestamp=$(date -u +"%Y-%m-%d %H:%M:%SZ")
|
|
19
|
-
|
|
20
|
-
printf "%b\n" "${BOLD}${BLUE}🛠️ terminal — running term${RESET}"
|
|
21
|
-
printf "%b\n" "${BLUE}Timestamp:${RESET} ${timestamp}"
|
|
22
|
-
printf "%b\n" "${BLUE}Op program path:${RESET} ${OP_PROGRAM_PATH}"
|
|
23
|
-
|
|
24
|
-
terminal "$@"
|
|
25
|
-
|
|
26
|
-
if [[ -f "$OP_PROGRAM_PATH" ]]; then
|
|
27
|
-
printf "%b\n" "${GREEN}✅ Found op program:${RESET} ${OP_PROGRAM_PATH}"
|
|
28
|
-
bat --style=plain --paging=never "$OP_PROGRAM_PATH"
|
|
29
|
-
printf "%b\n" "${GREEN}▶ Running...${RESET}"
|
|
30
|
-
. "$OP_PROGRAM_PATH"
|
|
31
|
-
status=$?
|
|
32
|
-
if [[ $status -eq 0 ]]; then
|
|
33
|
-
printf "%b\n" "${GREEN}✅ Completed successfully (exit ${status})${RESET}"
|
|
34
|
-
else
|
|
35
|
-
printf "%b\n" "${YELLOW}⚠️ Program exited with status ${status}${RESET}"
|
|
36
|
-
fi
|
|
37
|
-
else
|
|
38
|
-
printf "%b\n" "${YELLOW}⚠️ No op program found at: ${OP_PROGRAM_PATH}${RESET}"
|
|
39
|
-
fi
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# Equivalent PowerShell script for term.ps1
|
|
2
|
-
|
|
3
|
-
Set-StrictMode -Version Latest
|
|
4
|
-
$ErrorActionPreference = 'Stop'
|
|
5
|
-
|
|
6
|
-
# Generate random name using timestamp and SHA256 hash
|
|
7
|
-
$timestampNs = [DateTimeOffset]::Now.ToUnixTimeMilliseconds() * 1000000
|
|
8
|
-
$hashInput = [System.Text.Encoding]::UTF8.GetBytes($timestampNs.ToString())
|
|
9
|
-
$sha256 = [System.Security.Cryptography.SHA256]::Create()
|
|
10
|
-
$hashBytes = $sha256.ComputeHash($hashInput)
|
|
11
|
-
$hashString = -join ($hashBytes | ForEach-Object { $_.ToString('x2') })
|
|
12
|
-
$randomName = $hashString.Substring(0, 16)
|
|
13
|
-
|
|
14
|
-
$opDir = "$env:USERPROFILE\tmp_results\tmp_scripts\machineconfig"
|
|
15
|
-
$opProgramPath = "$opDir\$randomName.ps1"
|
|
16
|
-
$global:OP_PROGRAM_PATH = $opProgramPath
|
|
17
|
-
|
|
18
|
-
# ANSI color/style codes (using Write-Host colors)
|
|
19
|
-
$bold = [char]27 + '[1m'
|
|
20
|
-
$reset = [char]27 + '[0m'
|
|
21
|
-
$green = [char]27 + '[32m'
|
|
22
|
-
$yellow = [char]27 + '[33m'
|
|
23
|
-
$blue = [char]27 + '[34m'
|
|
24
|
-
$red = [char]27 + '[31m'
|
|
25
|
-
|
|
26
|
-
$timestamp = Get-Date -Format 'u'
|
|
27
|
-
|
|
28
|
-
Write-Host "${bold}${blue}🛠️ terminal — running term${reset}"
|
|
29
|
-
Write-Host "${blue}Timestamp:${reset} ${timestamp}"
|
|
30
|
-
Write-Host "${blue}Op program path:${reset} ${opProgramPath}"
|
|
31
|
-
|
|
32
|
-
terminal $args
|
|
33
|
-
|
|
34
|
-
if (Test-Path $opProgramPath) {
|
|
35
|
-
Write-Host "${green}✅ Found op program:${reset} ${opProgramPath}"
|
|
36
|
-
# Assuming bat is available; otherwise, use Get-Content
|
|
37
|
-
& bat --style=plain --paging=never $opProgramPath
|
|
38
|
-
Write-Host "${green}▶ Running...${reset}"
|
|
39
|
-
. $opProgramPath
|
|
40
|
-
$status = $LASTEXITCODE
|
|
41
|
-
if ($status -eq 0) {
|
|
42
|
-
Write-Host "${green}✅ Completed successfully (exit ${status})${reset}"
|
|
43
|
-
} else {
|
|
44
|
-
Write-Host "${yellow}⚠️ Program exited with status ${status}${reset}"
|
|
45
|
-
}
|
|
46
|
-
} else {
|
|
47
|
-
Write-Host "${yellow}⚠️ No op program found at: ${opProgramPath}${reset}"
|
|
48
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|