machineconfig 6.98__py3-none-any.whl → 7.2__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.

@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
3
 
4
- wrap_in_op_program() {
4
+ wrap_in_shell_script() {
5
5
  # set -euo pipefail
6
6
 
7
7
  # ANSI color/style codes
@@ -43,6 +43,6 @@ wrap_in_op_program() {
43
43
  }
44
44
 
45
45
  if [[ $# -gt 0 ]]; then
46
- wrap_in_op_program "$@"
46
+ wrap_in_shell_script "$@"
47
47
  fi
48
48
 
@@ -0,0 +1,26 @@
1
+
2
+ """
3
+ Minimalist programs that only print scripts without frills so it can be sourced by by shell.
4
+ """
5
+
6
+
7
+ import typer
8
+ import platform
9
+
10
+
11
+ def define_scripts():
12
+ if platform.system() != "Linux":
13
+ raise RuntimeError("This command is only supported on Linux systems.")
14
+ from machineconfig.setup_linux import INTERACTIVE as script_path
15
+ script = script_path.read_text(encoding="utf-8")
16
+ print(script)
17
+
18
+
19
+ def main():
20
+ app = typer.Typer(add_completion=False, no_args_is_help=True)
21
+ app.command(name="scripts", help="define all scripts", no_args_is_help=False)(define_scripts)
22
+ app()
23
+
24
+
25
+ # if __name__ == "__main__":
26
+ # main()
@@ -2,7 +2,7 @@
2
2
  # /// script
3
3
  # requires-python = ">=3.13"
4
4
  # dependencies = [
5
- # "machineconfig>=6.98",
5
+ # "machineconfig>=6.99",
6
6
  # "textual",
7
7
  # "pyperclip",
8
8
  # ]
@@ -3,7 +3,7 @@
3
3
  from typing import Literal, Annotated, Optional
4
4
  from pathlib import Path
5
5
  import typer
6
-
6
+ import machineconfig.scripts.python.helpers_devops.cli_config_dotfile as dotfile_module
7
7
 
8
8
 
9
9
  def private(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for linking files")],
@@ -22,15 +22,6 @@ def public(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--me
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)
24
24
 
25
- def dotfile(file: Annotated[str, typer.Argument(help="file/folder path.")],
26
- overwrite: Annotated[bool, typer.Option("--overwrite", "-o", help="Overwrite.")] = False,
27
- dest: Annotated[str, typer.Option("--dest", "-d", help="destination folder")] = "",
28
- ):
29
- """🔗 Manage dotfiles."""
30
- import machineconfig.scripts.python.helpers_devops.cli_config_dotfile as dotfile_module
31
- dotfile_module.main(file=file, overwrite=overwrite, dest=dest)
32
-
33
-
34
25
  def shell():
35
26
  """🔗 Configure your shell profile."""
36
27
  from machineconfig.profile.create_shell_profile import create_default_shell_profile
@@ -46,7 +37,7 @@ def path():
46
37
  uv_with = ["textual"]
47
38
  uv_project_dir = None
48
39
  if not Path.home().joinpath("code/machineconfig").exists():
49
- uv_with.append("machineconfig>=6.98")
40
+ uv_with.append("machineconfig>=6.99")
50
41
  else:
51
42
  uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
52
43
  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])
@@ -104,8 +95,8 @@ def get_app():
104
95
  config_apps.command("v", no_args_is_help=True, hidden=True)(private)
105
96
  config_apps.command("public", no_args_is_help=True, help="🔗 [b] Manage public configuration files.")(public)
106
97
  config_apps.command("b", no_args_is_help=True, help="Manage public configuration files.", hidden=True)(public)
107
- config_apps.command("dotfile", no_args_is_help=True, help="🔗 [d] Manage dotfiles.")(dotfile)
108
- config_apps.command("d", no_args_is_help=True, hidden=True)(dotfile)
98
+ config_apps.command("dotfile", no_args_is_help=True, help="🔗 [d] Manage dotfiles.")(dotfile_module.main)
99
+ config_apps.command("d", no_args_is_help=True, hidden=True)(dotfile_module.main)
109
100
  config_apps.command("shell", no_args_is_help=False, help="🔗 [s] Configure your shell profile.")(shell)
110
101
  config_apps.command("s", no_args_is_help=False, help="Configure your shell profile.", hidden=True)(shell)
111
102
  config_apps.command("path", no_args_is_help=False, help="📚 [p] NAVIGATE PATH variable with TUI")(path)
@@ -1,41 +1,44 @@
1
1
  """Like yadm and dotter."""
2
2
 
3
- from typing import Annotated
4
-
3
+ from typing import Annotated, Literal
5
4
  import typer
6
5
 
7
6
 
8
7
  def main(
9
8
  file: Annotated[str, typer.Argument(help="file/folder path.")],
10
- overwrite: Annotated[bool, typer.Option("--overwrite", "-o", help="Overwrite.")] = False,
11
- dest: Annotated[str, typer.Option("--dest", "-d", help="destination folder")] = "",
9
+ method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for linking files")] = "copy",
10
+ on_conflict: Annotated[Literal["throw-error", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
11
+ 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)")] = "",
12
13
  ) -> None:
13
-
14
14
  from rich.console import Console
15
15
  from rich.panel import Panel
16
+ from machineconfig.utils.links import symlink_map, copy_map
17
+ from pathlib import Path
18
+ match sensitivity:
19
+ case "private":
20
+ backup_root = Path.home().joinpath("dotfiles/mapper")
21
+ case "public":
22
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT
23
+ backup_root = Path(CONFIG_ROOT).joinpath("dotfiles/mapper")
16
24
 
17
- from machineconfig.utils.links import symlink_map
18
- from machineconfig.utils.path_extended import PathExtended
19
- from machineconfig.utils.source_of_truth import CONFIG_ROOT
20
25
  console = Console()
21
- orig_path = PathExtended(file).expanduser().absolute()
22
- if dest == "":
23
- if "Local" in str(orig_path):
24
- junction = orig_path.split(at="Local", sep=-1)[1]
25
- elif "Roaming" in str(orig_path):
26
- junction = orig_path.split(at="Roaming", sep=-1)[1]
27
- elif ".config" in str(orig_path):
28
- junction = orig_path.split(at=".config", sep=-1)[1]
29
- else:
30
- junction = orig_path.rel2home()
31
- new_path = PathExtended(CONFIG_ROOT).parent.parent.joinpath(junction)
26
+ orig_path = Path(file).expanduser().absolute()
27
+ if destination == "":
28
+ new_path = backup_root.joinpath(orig_path.relative_to(Path.home()))
29
+ new_path.parent.mkdir(parents=True, exist_ok=True)
32
30
  else:
33
- dest_path = PathExtended(dest).expanduser().absolute()
31
+ dest_path = Path(destination).expanduser().absolute()
34
32
  dest_path.mkdir(parents=True, exist_ok=True)
35
33
  new_path = dest_path.joinpath(orig_path.name)
36
34
 
37
- symlink_map(config_file_default_path=orig_path, self_managed_config_file_path=new_path, on_conflict="throw-error")
38
-
35
+ from machineconfig.utils.path_extended import PathExtended
36
+ if method == "copy":
37
+ copy_map(config_file_default_path=PathExtended(orig_path), self_managed_config_file_path=PathExtended(new_path), on_conflict=on_conflict)
38
+ elif method == "symlink":
39
+ symlink_map(config_file_default_path=PathExtended(orig_path), self_managed_config_file_path=PathExtended(new_path), on_conflict=on_conflict)
40
+ else:
41
+ raise ValueError(f"Unknown method: {method}")
39
42
  console.print(
40
43
  Panel(
41
44
  "\n".join(
@@ -50,23 +53,23 @@ def main(
50
53
  )
51
54
  )
52
55
 
53
- mapper_snippet = "\n".join(
54
- [
55
- f"[bold]📝 Edit configuration file:[/] [cyan]nano {PathExtended(CONFIG_ROOT)}/symlinks/mapper.toml[/cyan]",
56
- "",
57
- f"[{new_path.parent.name}]",
58
- f"{orig_path.name.split('.')[0]} = {{ this = '{orig_path.collapseuser().as_posix()}', to_this = '{new_path.collapseuser().as_posix()}' }}",
59
- ]
60
- )
56
+ # mapper_snippet = "\n".join(
57
+ # [
58
+ # f"[bold]📝 Edit configuration file:[/] [cyan]nano {PathExtended(CONFIG_ROOT)}/symlinks/mapper.toml[/cyan]",
59
+ # "",
60
+ # f"[{new_path.parent.name}]",
61
+ # f"{orig_path.name.split('.')[0]} = {{ this = '{orig_path.collapseuser().as_posix()}', to_this = '{new_path.collapseuser().as_posix()}' }}",
62
+ # ]
63
+ # )
61
64
 
62
- console.print(
63
- Panel(
64
- mapper_snippet,
65
- title="Mapper Entry",
66
- border_style="cyan",
67
- padding=(1, 2),
68
- )
69
- )
65
+ # console.print(
66
+ # Panel(
67
+ # mapper_snippet,
68
+ # title="Mapper Entry",
69
+ # border_style="cyan",
70
+ # padding=(1, 2),
71
+ # )
72
+ # )
70
73
 
71
74
 
72
75
  def arg_parser() -> None:
@@ -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>=6.98" """)
51
+ run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.99" """)
52
52
  else:
53
- run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.98" """)
53
+ run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.99" """)
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>=6.98,textual" """
78
+ else: executable = """--with "machineconfig>=6.99,textual" """
79
79
  run_shell_script(f"""uv run {executable} {path}""")
80
80
 
81
81
 
@@ -80,7 +80,7 @@ git pull originEnc master
80
80
  uv_project_dir = f"""{str(Path.home().joinpath("code/machineconfig"))}"""
81
81
  uv_with = None
82
82
  else:
83
- uv_with = ["machineconfig>=6.98"]
83
+ uv_with = ["machineconfig>=6.99"]
84
84
  uv_project_dir = None
85
85
 
86
86
  import tempfile
@@ -1,4 +1,4 @@
1
- function wrap_in_op_code {
1
+ function wrap_in_shell_script {
2
2
  param(
3
3
  [Parameter(Mandatory=$true)]
4
4
  [string]$Command,
@@ -49,6 +49,6 @@ function wrap_in_op_code {
49
49
 
50
50
  # Call the function with any arguments passed to the script
51
51
  if ($args.Count -gt 0) {
52
- wrap_in_op_code @args
52
+ wrap_in_shell_script @args
53
53
  }
54
54
 
@@ -7,7 +7,7 @@ $user = ''
7
7
  $sharePath = ''
8
8
  $driveLetter = ''
9
9
 
10
- uv run --python 3.14 --with "machineconfig>=6.98" python -m machineconfig.scripts.python.mount_ssh
10
+ uv run --python 3.14 --with "machineconfig>=6.99" 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
@@ -46,15 +46,15 @@ if [ -f "$HOME/dotfiles/machineconfig/init_linux.sh" ]; then
46
46
  fi
47
47
 
48
48
  alias l='lsd -la'
49
- alias d='wrap_in_op_program devops'
50
- alias c='wrap_in_op_program cloud'
51
- alias a='wrap_in_op_program agents'
52
- alias s='wrap_in_op_program sessions'
53
- alias ff='wrap_in_op_program ftpx'
54
- alias f='wrap_in_op_program fire'
55
- alias r='wrap_in_op_program croshell'
56
- alias u='wrap_in_op_program utils'
57
- alias t='wrap_in_op_program term'
49
+ alias d='wrap_in_shell_script devops'
50
+ alias c='wrap_in_shell_script cloud'
51
+ alias a='wrap_in_shell_script agents'
52
+ alias s='wrap_in_shell_script sessions'
53
+ alias ff='wrap_in_shell_script ftpx'
54
+ alias f='wrap_in_shell_script fire'
55
+ alias r='wrap_in_shell_script croshell'
56
+ alias u='wrap_in_shell_script utils'
57
+ alias t='wrap_in_shell_script term'
58
58
 
59
59
 
60
60
  # alias gcs='gh copilot suggest -t shell'
@@ -32,15 +32,15 @@ if (Test-Path "$CONFIG_ROOT\scripts\windows\mcfgs.ps1") {
32
32
 
33
33
  function lsdla { lsd -la }
34
34
  Set-Alias -Name l -Value lsdla -Option AllScope
35
- function d { wrap_in_op_code devops $args }
36
- function c { wrap_in_op_code cloud $args }
37
- function a { wrap_in_op_code agents $args }
38
- function ss { wrap_in_op_code sessions $args }
39
- function ff { wrap_in_op_code ftpx $args }
40
- function f { wrap_in_op_code fire $args }
41
- function rr { wrap_in_op_code croshell $args }
42
- function u { wrap_in_op_code utils $args }
43
- function t { wrap_in_op_code terminal $args }
35
+ function d { wrap_in_shell_script devops $args }
36
+ function c { wrap_in_shell_script cloud $args }
37
+ function a { wrap_in_shell_script agents $args }
38
+ function ss { wrap_in_shell_script sessions $args }
39
+ function ff { wrap_in_shell_script ftpx $args }
40
+ function f { wrap_in_shell_script fire $args }
41
+ function rr { wrap_in_shell_script croshell $args }
42
+ function u { wrap_in_shell_script utils $args }
43
+ function t { wrap_in_shell_script terminal $args }
44
44
 
45
45
  }
46
46
  else {
@@ -1,6 +1,7 @@
1
1
 
2
2
  from pathlib import Path
3
3
 
4
+ INTERACTIVE = Path(__file__).parent.joinpath("web_shortcuts/interactive.sh")
4
5
  APPS = Path(__file__).parent.joinpath("apps.sh")
5
6
  UV = Path(__file__).parent.joinpath("uv.sh")
6
7
 
@@ -1,25 +1,25 @@
1
1
  #!/bin/bash
2
2
  . <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
3
- . <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/linux/mcfgs.sh")
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.98" devops'
6
- alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.98" cloud'
7
- alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.98" agents'
8
- alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.98" sessions'
9
- alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.98" ftpx'
10
- alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.98" fire'
11
- alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.98" croshell'
12
- alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.98" utils'
13
- alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.98" terminal'
5
+ alias devops='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.99" devops'
6
+ alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.99" cloud'
7
+ alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.99" agents'
8
+ alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.99" sessions'
9
+ alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.99" ftpx'
10
+ alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.99" fire'
11
+ alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.99" croshell'
12
+ alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.99" utils'
13
+ alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=6.99" terminal'
14
14
 
15
- alias d='wrap_in_op_code devops'
16
- alias c='wrap_in_op_code cloud'
17
- alias a='wrap_in_op_code agents'
18
- alias ss='wrap_in_op_code sessions'
19
- alias ff='wrap_in_op_code ftpx'
20
- alias f='wrap_in_op_code fire'
21
- alias rr='wrap_in_op_code croshell'
22
- alias u='wrap_in_op_code utils'
23
- alias t='wrap_in_op_code terminal'
15
+ alias d='wrap_in_shell_script devops'
16
+ alias c='wrap_in_shell_script cloud'
17
+ alias a='wrap_in_shell_script agents'
18
+ alias ss='wrap_in_shell_script sessions'
19
+ alias ff='wrap_in_shell_script ftpx'
20
+ alias f='wrap_in_shell_script fire'
21
+ alias rr='wrap_in_shell_script croshell'
22
+ alias u='wrap_in_shell_script utils'
23
+ alias t='wrap_in_shell_script terminal'
24
24
 
25
25
  echo "mcfg command aliases are now defined in this shell session."
@@ -3,24 +3,24 @@
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>=6.98" devops $args }
7
- function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.98" cloud $args }
8
- function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.98" agents $args }
9
- function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.98" sessions $args }
10
- function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.98" ftpx $args }
11
- function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.98" fire $args }
12
- function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.98" croshell $args }
13
- function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.98" utils $args }
14
- function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.98" terminal $args }
6
+ function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.99" devops $args }
7
+ function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.99" cloud $args }
8
+ function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.99" agents $args }
9
+ function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.99" sessions $args }
10
+ function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.99" ftpx $args }
11
+ function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.99" fire $args }
12
+ function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.99" croshell $args }
13
+ function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.99" utils $args }
14
+ function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=6.99" terminal $args }
15
15
 
16
- function d { wrap_in_op_code devops @args }
17
- function c { wrap_in_op_code cloud @args }
18
- function a { wrap_in_op_code agents @args }
19
- function ss { wrap_in_op_code sessions @args }
20
- function ff { wrap_in_op_code ftpx @args }
21
- function f { wrap_in_op_code fire @args }
22
- function rr { wrap_in_op_code croshell @args }
23
- function u { wrap_in_op_code utils @args }
24
- function t { wrap_in_op_code terminal @args }
16
+ function d { wrap_in_shell_script devops @args }
17
+ function c { wrap_in_shell_script cloud @args }
18
+ function a { wrap_in_shell_script agents @args }
19
+ function ss { wrap_in_shell_script sessions @args }
20
+ function ff { wrap_in_shell_script ftpx @args }
21
+ function f { wrap_in_shell_script fire @args }
22
+ function rr { wrap_in_shell_script croshell @args }
23
+ function u { wrap_in_shell_script utils @args }
24
+ function t { wrap_in_shell_script terminal @args }
25
25
 
26
26
  Write-Host "mcfg command aliases are now defined in this PowerShell session."
@@ -162,14 +162,15 @@ def symlink_map(config_file_default_path: PathExtended, self_managed_config_file
162
162
  config_file_default_path.delete(sure=True)
163
163
  else:
164
164
  # Files are different, use on_conflict strategy
165
+ import subprocess
166
+ command = f"""delta --side-by-side "{config_file_default_path}" "{self_managed_config_file_path}" """
167
+ try:
168
+ console.print(Panel(f"🆘 CONFLICT DETECTED | Showing diff between {config_file_default_path} and {self_managed_config_file_path}", title="Conflict Detected", expand=False))
169
+ subprocess.run(command, shell=True, check=True)
170
+ except Exception:
171
+ console.print(Panel("⚠️ Could not show diff using 'delta'. Please install 'delta' for better diff visualization.", title="Delta Not Found", expand=False))
172
+
165
173
  if on_conflict == "throw-error":
166
- import subprocess
167
- command = f"""delta --side-by-side "{config_file_default_path}" "{self_managed_config_file_path}" """
168
- try:
169
- console.print(Panel(f"🆘 CONFLICT DETECTED | Showing diff between {config_file_default_path} and {self_managed_config_file_path}", title="Conflict Detected", expand=False))
170
- subprocess.run(command, shell=True, check=True)
171
- except Exception:
172
- console.print(Panel("⚠️ Could not show diff using 'delta'. Please install 'delta' for better diff visualization.", title="Delta Not Found", expand=False))
173
174
  raise RuntimeError(f"Conflict detected: {config_file_default_path} and {self_managed_config_file_path} both exist with different content")
174
175
  elif on_conflict == "overwriteSelfManaged":
175
176
  action_taken = "backing_up_target"
@@ -289,6 +290,14 @@ def copy_map(config_file_default_path: PathExtended, self_managed_config_file_pa
289
290
  config_file_default_path.delete(sure=True)
290
291
  else:
291
292
  # Files are different, use on_conflict strategy
293
+ import subprocess
294
+ command = f"""delta --side-by-side "{config_file_default_path}" "{self_managed_config_file_path}" """
295
+ try:
296
+ console.print(Panel(f"🆘 CONFLICT DETECTED | Showing diff between {config_file_default_path} and {self_managed_config_file_path}", title="Conflict Detected", expand=False))
297
+ subprocess.run(command, shell=True, check=True)
298
+ except Exception:
299
+ console.print(Panel("⚠️ Could not show diff using 'delta'. Please install 'delta' for better diff visualization.", title="Delta Not Found", expand=False))
300
+
292
301
  match on_conflict:
293
302
  case "throw-error":
294
303
  raise RuntimeError(f"Conflict detected: {config_file_default_path} and {self_managed_config_file_path} both exist with different content")
@@ -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>=6.98"
11
+ MACHINECONFIG_VERSION = "machineconfig>=6.99"
12
12
  DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
13
13
 
14
14
  class SSH:
@@ -113,9 +113,11 @@ def upgrade_machine_config_version() -> None:
113
113
  major: int = int(version_parts[0])
114
114
  minor: int = int(version_parts[1])
115
115
 
116
- # Bump minor version by 1
116
+ # Bump minor version by 1, preserving zero-padding
117
117
  new_minor: int = minor + 1
118
- new_version: str = f"{major}.{new_minor}"
118
+ # Preserve the same number of digits as the original minor version
119
+ minor_width: int = len(version_parts[1])
120
+ new_version: str = f"{major}.{new_minor:0{minor_width}d}"
119
121
 
120
122
  old_version_constraint: str = f"machineconfig>={current_version_str}"
121
123
  new_version_constraint: str = f"machineconfig>={new_version}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 6.98
3
+ Version: 7.2
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -59,15 +59,25 @@ Dotfiles are divided into private and public. Examples of private ones are, `~/.
59
59
  # Install On Windows:
60
60
 
61
61
  ```powershell
62
-
62
+ # Temporary install:
63
63
  iex (iwr bit.ly/cfgwindows).Content
64
+ # Or, if UV is installed:
65
+ iex (uvx machineconfig define)
66
+ # Permanent install:
67
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Skip if UV is already installed
68
+ uvx install --upgrade machineconfig
64
69
  ```
65
70
 
66
71
  # Install On Linux and MacOS
67
72
 
68
73
  ```bash
69
-
74
+ # Temporary install:
70
75
  . <(curl -L bit.ly/cfglinux)
76
+ # Or, if UV is installed:
77
+ . <(uvx machineconfig define)
78
+ # Permanent install:
79
+ curl -LsSf https://astral.sh/uv/install.sh | sh # Skip if UV is already installed
80
+ uvx install --upgrade machineconfig
71
81
  ```
72
82
 
73
83
 
@@ -110,7 +110,7 @@ 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=EkHRXfqsa6fpvXn1K084R2m__y5_g4_l9Q3u1cvM3dk,1387
113
+ machineconfig/scripts/linux/mcfgs,sha256=DlnOwqCroszbTOM_XtJiz3Hz7po0uV5dQHf5eKcXAhg,1391
114
114
  machineconfig/scripts/linux/skrg,sha256=JgQJGwxaChr148bDnpTB0rrqZMe2o2zGSDA9x_oUhWM,133
115
115
  machineconfig/scripts/linux/term,sha256=CNPY8p6SitOmtOPKXPervPPabjJNYBerA12SHN_v7w4,1139
116
116
  machineconfig/scripts/linux/other/share_cloud.sh,sha256=lIZrXiaOT11kzu4NFNTXvANhc2bMdSPDYD1-7XUO_C0,2027
@@ -121,6 +121,7 @@ machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
121
121
  machineconfig/scripts/python/agents.py,sha256=aVbLQDgpngXZm4taHcED4sAxyHvV2_Dz5VW3apPcQcY,10651
122
122
  machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yyeehw_cU8,1263
123
123
  machineconfig/scripts/python/croshell.py,sha256=QyQbVboNqDQHJkUeSsJvdT212t4TW46yat3GBzneqsQ,8649
124
+ machineconfig/scripts/python/define.py,sha256=vk7E5twa3DtK10ZxRVlbklYHzcou7M3zPAoV5z9_JGI,645
124
125
  machineconfig/scripts/python/devops.py,sha256=Lv4d-UlyOREj4VTcu_pxswYo54Mawe3XGeKjreGQDYg,2222
125
126
  machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
126
127
  machineconfig/scripts/python/fire_jobs.py,sha256=-xrUlBQ90asQkXuWESiDsD6D05Xuw0-NMmfwBerwSjg,13874
@@ -162,7 +163,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
162
163
  machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
163
164
  machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
164
165
  machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
165
- machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=rkT7KURJ29wvEljoxaXNLIRzszem9c46OsrHWdmSx-w,6932
166
+ machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=xCfevrfzL4rLjWeGhWgykBxCGK-zS_7SxeD8whp7m1M,6932
166
167
  machineconfig/scripts/python/helpers_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
168
  machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py,sha256=YD6-rtudHNip8tx85amSmOZZIHBP9khq4az3dF41j6U,5934
168
169
  machineconfig/scripts/python/helpers_agents/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
@@ -192,12 +193,12 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
192
193
  machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
193
194
  machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
194
195
  machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
- machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=jKQ4zLsAr0kfZ_-TBXz01G1L8TVXvGVRN6XPYcTBts8,7222
196
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=dduLPmaxOU9eOOy76QTG8Yzi5WQdewbiJ8X615Z19wk,2487
196
+ machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=mFEqpjCEhRfHRX4I8NspFmIOB8VvsJ6U9B5YOCIVDlE,6875
197
+ machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=Qp6Pgbs-nJzf7_us_wPsIimPLJhY4TFYwIiFcmy-dxU,3249
197
198
  machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
198
199
  machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=9NcVJvPYaUDtmI_DSKthZxR4emMBeNWVM_M5f0YR8EQ,7302
199
200
  machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
200
- machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=r5cT_GeBSl3Vuf_n9gKs4Kfs9uYPrB31Bry9IQTqov0,6621
201
+ machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=QV7URlqzl1c1SW0dD0zWuDFdwfegEbpCBseNxMDZRq0,6621
201
202
  machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=qNGpLYWEYsgILqogd7yrXG5Rz3R25AOsXeAUc7fdBEo,10222
202
203
  machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
203
204
  machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=B9pnosujOxZLpwzJO4YAqeO-2rvvOFIZgrUwGREZXfM,11118
@@ -225,7 +226,7 @@ machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wd
225
226
  machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
226
227
  machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
227
228
  machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
228
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=qQFIyiyAVGswC0TXHj6kurkin9-oqokqmiHjTZUngBU,10450
229
+ machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=a2AfMjqAHwBr2gI83VG7SU2hys8VAZE1dwmlp9_PJ60,10450
229
230
  machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
230
231
  machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=vSDtrF4829jziwp6WZmGt9G8MJ9jY4hfXqtf0vhkYSE,607
231
232
  machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
@@ -255,12 +256,12 @@ machineconfig/scripts/python/nw/wsl_windows_transfer.py,sha256=jHJyFTuks_Kw4cgE8
255
256
  machineconfig/scripts/windows/fzfb.ps1,sha256=Bmngm2aY8hnPa3iKAOK6EPDYdKzGLUc81wYOnJhNoqg,149
256
257
  machineconfig/scripts/windows/fzfg.ps1,sha256=CHJbMrMuZePd4dxwIwz3g4XWAEmWmckuX-Nrx2xgRkg,27
257
258
  machineconfig/scripts/windows/fzfrga.bat,sha256=rU_KBMO6ii2EZ0akMnmDk9vpuhKSUZqkV0o8a8ywXcM,488
258
- machineconfig/scripts/windows/mcfgs.ps1,sha256=Eh_jMKUnj8QuXEL04tKSnYahPNpwFX6vUNeiF4lX8B8,1768
259
+ machineconfig/scripts/windows/mcfgs.ps1,sha256=Ag-r5klgkRxeCI1AN3vlgmwriHvC_g7XSuDt0YnH5-w,1778
259
260
  machineconfig/scripts/windows/term.ps1,sha256=nme_OWis84qN-zI2c0rdysNcDIdoaEKajXZhP2QioQs,1742
260
261
  machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
261
262
  machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
262
263
  machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
263
- machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=CPNwUqIsu-dd2F5574QGEVOkAWq4VQG0p9Gaq0yb-mw,322
264
+ machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=24Zp11dG4_l35-bVuc3hbgh88J5bbuw08y5oQrs3sCs,322
264
265
  machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
265
266
  machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
266
267
  machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
@@ -332,7 +333,7 @@ machineconfig/settings/rofi/config.rasi,sha256=nDX5B8wdXQYF1fwiOTBRJUI4l_gQbYaLa
332
333
  machineconfig/settings/rofi/config_default.rasi,sha256=rTfKnC-bZuWX1l-lWQACCUOE1ShhkfykAxtXX9PlQHE,4694
333
334
  machineconfig/settings/shells/alacritty/alacritty.toml,sha256=EbL-2Y4QunW1pvRWB2yuLCw8MMPONheJr5LFoWRieUQ,871
334
335
  machineconfig/settings/shells/alacritty/alacritty.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
335
- machineconfig/settings/shells/bash/init.sh,sha256=AYMI1CK-GRnIHMZ231J4_FOcWiBEWNDukpUkD_MBxdA,2909
336
+ machineconfig/settings/shells/bash/init.sh,sha256=BBIeIkhBp7IJHU5_KcUBCTilqjmmC6ZWYqNSHIs_ABA,2927
336
337
  machineconfig/settings/shells/hyper/.hyper.js,sha256=h-HqeYlvPvPD4Ee7828Cxo87uVkzbMGJFqXTZIWoegw,8884
337
338
  machineconfig/settings/shells/ipy/profiles/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
338
339
  machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -340,7 +341,7 @@ machineconfig/settings/shells/ipy/profiles/default/startup/playext.py,sha256=OJ3
340
341
  machineconfig/settings/shells/kitty/kitty.conf,sha256=lDdx-dUX3jbKGb3BkS2f2TOpmgGiS-CI-_-lFvhD5A4,52870
341
342
  machineconfig/settings/shells/nushell/config.nu,sha256=xtko80MPteDXuOJmwJHNFhXmfHT6fIBfmTgsF29GiEc,748
342
343
  machineconfig/settings/shells/nushell/env.nu,sha256=4VmaXb-qP6qnMD5TPzkXMLFNlB5QC4l9HEzCvXZE2GQ,315
343
- machineconfig/settings/shells/pwsh/init.ps1,sha256=sNLGlGj13glnnvaerdcu4-f6MDWxd9-48WPdDeAGR_M,2758
344
+ machineconfig/settings/shells/pwsh/init.ps1,sha256=Jpd6RtMXgb-PjvezveyaRUyaxeiRDeH9Wv87XQZymwA,2803
344
345
  machineconfig/settings/shells/pwsh/profile.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
345
346
  machineconfig/settings/shells/starship/starship.toml,sha256=d5lWKC0AnTcriRAZV1opEZy76QknSpKFgJ3jyW9_vZ0,1305
346
347
  machineconfig/settings/shells/vtm/settings.xml,sha256=5TNXd-i0eUGo2w3tuhY9aOkwoJdqih8_HO_U6uL2Dts,18262
@@ -368,7 +369,7 @@ machineconfig/settings/zellij/layouts/panes.kdl,sha256=KlhKtelBy4Z2ENV_pix4xE7NH
368
369
  machineconfig/settings/zellij/layouts/st.kdl,sha256=QXLRK7Wx05aKbKRHVmm4RspLYzPmEa44JMK1TwXQk58,523
369
370
  machineconfig/settings/zellij/layouts/st2.kdl,sha256=1FKTH3qQWYMWp_wPMreP7fKOTlVd4cfBy3J8fv4zCBc,1489
370
371
  machineconfig/settings/zellij/layouts/stacked_panes.kdl,sha256=usY8kKKwX1KUMXnWDivPg0i0drpM1Biw-tOnNZVjiZU,163
371
- machineconfig/setup_linux/__init__.py,sha256=7VLvb9uj9XJYtlYu9lgavQuxjX3tVCE9i8WdOjB3Qa4,314
372
+ machineconfig/setup_linux/__init__.py,sha256=5gT_vc6ze_RUMx9mk7_9kkOTyPPTo3MJFh2fq8MGToU,391
372
373
  machineconfig/setup_linux/apps.sh,sha256=XOEzhuwYNat83ybamUdnVhDaGf2wlQiT5wVNvz2aJYM,3262
373
374
  machineconfig/setup_linux/apps_desktop.sh,sha256=L2b_pcw3GiQdoAaoMO7J4bVvUoG5Pnuy9kDhV8JqprU,3325
374
375
  machineconfig/setup_linux/apps_gui.sh,sha256=lFPYq7H2bRogPwW6QoEuSr9GnTjHS-jRM_eYg2rjOmM,2301
@@ -378,7 +379,7 @@ machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE3
378
379
  machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
379
380
  machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
380
381
  machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
381
- machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=g0Xi4DOKCTy9FpqSeZEKAxHYgtayZ75KS5K6cjIfO-0,1407
382
+ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=moKocCzB0Oik4YvQcQs6lt5mN7f4bUnNsO-VBRguMXA,1449
382
383
  machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
383
384
  machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
384
385
  machineconfig/setup_mac/apps_gui.sh,sha256=3alvddg918oMlJB2aUWJWpGGoaq5atlxcaOwhnyXlRI,9517
@@ -393,7 +394,7 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
393
394
  machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
394
395
  machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
395
396
  machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
396
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=Th2TzrKUtZ3-0Lfr132r1sJyQRzUbvBYRjcnYv1jbjQ,1706
397
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=-hZQv00ogDbe4jNz17J09PmfOv0zGju0gS35XAD0-yQ,1751
397
398
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
398
399
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
399
400
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -401,7 +402,7 @@ machineconfig/utils/accessories.py,sha256=Rs8R0GUb2Ub6YimkgXHnI02CShS5BKlrZdCigV
401
402
  machineconfig/utils/code.py,sha256=fVeQnhZE8-aoPBsrgjNcBTcv3NuyBSSQv9P8jyC8W_M,6635
402
403
  machineconfig/utils/installer.py,sha256=1ScBaTe_pRsfTYht9-LXmirgnNizNy8u1GgetUfEDO4,10351
403
404
  machineconfig/utils/io.py,sha256=4dSieoqZO8Vvi4vW8lLoITDHBvmFp4dtl3kyeZHQ6Co,2528
404
- machineconfig/utils/links.py,sha256=ffc8fwbQ1TVdXYn2J1rq7gCZHidxwCzlSppdyrzq4LA,24382
405
+ machineconfig/utils/links.py,sha256=j2gHll55iqUXtB4NQbo3QwANRL1ztLGZfpcwLoJQZyk,25033
405
406
  machineconfig/utils/meta.py,sha256=4ocYH3Zi6bVN6FVgXoGIfoasV6oxi67I9rQ8hvyYinc,9892
406
407
  machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
407
408
  machineconfig/utils/options.py,sha256=VWYx3EKJxIp-CJ8gDGYdjclKSc1tMUhyrC8v3seeneo,7447
@@ -411,10 +412,10 @@ machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,
411
412
  machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
412
413
  machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
413
414
  machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
414
- machineconfig/utils/ssh.py,sha256=y9CoMY6eSVr2yQ_-LyKPIr3dM7fMolFiEs7uS2dITXk,39008
415
+ machineconfig/utils/ssh.py,sha256=6LHTYA4OB5GtsmTjQ8Rut0S6JUqZgm7Vx_Rm2s1G98s,39008
415
416
  machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
416
417
  machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
417
- machineconfig/utils/upgrade_packages.py,sha256=i7K2bpmwdmag833t1ZmYvF45rO8GMkmJvLP3C1AyNEI,5694
418
+ machineconfig/utils/upgrade_packages.py,sha256=75kabcI-chMiaBnafJ_hdhDUz_GyH7AsDt7rW3hyu9M,5851
418
419
  machineconfig/utils/ve.py,sha256=L-6PBXnQGXThiwWgheJMQoisAZOZA6SVCbGw2J-GFnI,2414
419
420
  machineconfig/utils/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
420
421
  machineconfig/utils/cloud/onedrive/README.md,sha256=i20oRG110AN0yLF3DARHfWXDJjPBiSgWI8CP2HQAqrk,3774
@@ -440,8 +441,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
440
441
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
441
442
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
442
443
  machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
443
- machineconfig-6.98.dist-info/METADATA,sha256=MgmxxVHZ9I7nBMITUbIzGkfdI50yfWEtu7QNS_goTQY,2928
444
- machineconfig-6.98.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
445
- machineconfig-6.98.dist-info/entry_points.txt,sha256=uf_ZPJa02_y3Fw5Z7m22cq7PwxhYd1QV2FfPNZTl_dQ,519
446
- machineconfig-6.98.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
447
- machineconfig-6.98.dist-info/RECORD,,
444
+ machineconfig-7.2.dist-info/METADATA,sha256=DC93r9S7PPEHc072tYmxoheeY2fls1KhmVq93sGl5yg,3395
445
+ machineconfig-7.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
446
+ machineconfig-7.2.dist-info/entry_points.txt,sha256=0ho96z7b1toS6CeiajpTwEwQa83UrJ3g1onD4Wxax9o,624
447
+ machineconfig-7.2.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
448
+ machineconfig-7.2.dist-info/RECORD,,
@@ -2,9 +2,11 @@
2
2
  agents = machineconfig.scripts.python.agents:main
3
3
  cloud = machineconfig.scripts.python.cloud:main
4
4
  croshell = machineconfig.scripts.python.croshell:main
5
+ define = machineconfig.scripts.python.define:main
5
6
  devops = machineconfig.scripts.python.devops:main
6
7
  fire = machineconfig.scripts.python.fire_jobs:main
7
8
  ftpx = machineconfig.scripts.python.ftpx:main
9
+ machineconfig = machineconfig.scripts.python.mcfg:main
8
10
  mcfg = machineconfig.scripts.python.mcfg:main
9
11
  sessions = machineconfig.scripts.python.sessions:main
10
12
  terminal = machineconfig.scripts.python.terminal:main