machineconfig 4.98__py3-none-any.whl → 5.0__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.
Files changed (52) hide show
  1. machineconfig/cluster/remote/script_execution.py +1 -1
  2. machineconfig/jobs/installer/custom/gh.py +68 -39
  3. machineconfig/jobs/installer/custom/hx.py +1 -1
  4. machineconfig/jobs/installer/custom_dev/bypass_paywall.py +1 -1
  5. machineconfig/jobs/installer/custom_dev/wezterm.py +68 -35
  6. machineconfig/jobs/python/python_ve_symlink.py +1 -1
  7. machineconfig/profile/create.py +59 -40
  8. machineconfig/profile/shell.py +1 -1
  9. machineconfig/scripts/python/cloud_copy.py +1 -1
  10. machineconfig/scripts/python/cloud_mount.py +1 -1
  11. machineconfig/scripts/python/cloud_repo_sync.py +1 -1
  12. machineconfig/scripts/python/count_lines.py +343 -0
  13. machineconfig/scripts/python/count_lines_frontend.py +12 -0
  14. machineconfig/scripts/python/croshell.py +1 -1
  15. machineconfig/scripts/python/devops.py +3 -1
  16. machineconfig/scripts/python/devops_add_identity.py +1 -1
  17. machineconfig/scripts/python/devops_add_ssh_key.py +1 -1
  18. machineconfig/scripts/python/devops_backup_retrieve.py +1 -1
  19. machineconfig/scripts/python/devops_update_repos.py +135 -65
  20. machineconfig/scripts/python/dotfile.py +41 -15
  21. machineconfig/scripts/python/fire_jobs.py +1 -1
  22. machineconfig/scripts/python/ftpx.py +101 -49
  23. machineconfig/scripts/python/helpers/helpers2.py +2 -2
  24. machineconfig/scripts/python/helpers/helpers4.py +1 -1
  25. machineconfig/scripts/python/helpers/repo_sync_helpers.py +1 -1
  26. machineconfig/scripts/python/mount_nfs.py +13 -7
  27. machineconfig/scripts/python/mount_ssh.py +1 -1
  28. machineconfig/scripts/python/repos.py +20 -6
  29. machineconfig/scripts/python/repos_helper_action.py +1 -1
  30. machineconfig/scripts/python/repos_helper_clone.py +4 -4
  31. machineconfig/scripts/python/repos_helper_record.py +1 -1
  32. machineconfig/scripts/python/sessions.py +5 -1
  33. machineconfig/scripts/python/share_terminal.py +13 -6
  34. machineconfig/scripts/python/start_slidev.py +1 -1
  35. machineconfig/scripts/python/wsl_windows_transfer.py +1 -1
  36. machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +1 -1
  37. machineconfig/utils/code.py +1 -1
  38. machineconfig/utils/installer.py +1 -1
  39. machineconfig/utils/installer_utils/installer_abc.py +1 -1
  40. machineconfig/utils/installer_utils/installer_class.py +1 -1
  41. machineconfig/utils/links.py +1 -1
  42. machineconfig/utils/path_helper.py +1 -1
  43. machineconfig/utils/scheduler.py +1 -1
  44. {machineconfig-4.98.dist-info → machineconfig-5.0.dist-info}/METADATA +1 -1
  45. {machineconfig-4.98.dist-info → machineconfig-5.0.dist-info}/RECORD +51 -50
  46. machineconfig/cluster/templates/utils.py +0 -51
  47. /machineconfig/cluster/{templates → remote}/run_cloud.py +0 -0
  48. /machineconfig/cluster/{templates → remote}/run_cluster.py +0 -0
  49. /machineconfig/cluster/{templates → remote}/run_remote.py +0 -0
  50. {machineconfig-4.98.dist-info → machineconfig-5.0.dist-info}/WHEEL +0 -0
  51. {machineconfig-4.98.dist-info → machineconfig-5.0.dist-info}/entry_points.txt +0 -0
  52. {machineconfig-4.98.dist-info → machineconfig-5.0.dist-info}/top_level.txt +0 -0
@@ -8,10 +8,17 @@ in the event that username@github.com is not mentioned in the remote url.
8
8
 
9
9
  import typer
10
10
  from typing import Annotated, Optional
11
+ from pathlib import Path
12
+
13
+
14
+ def analyze_repo_development(repo_path: str = typer.Argument(..., help="Path to the git repository")):
15
+ cmd = f"""uv run --python 3.13 --with machineconfig machineconfig.scripts.python.count_lines analyze-over-time {repo_path}"""
16
+ from machineconfig.utils.code import run_script
17
+ run_script(cmd)
11
18
 
12
19
 
13
20
  def main(
14
- directory: Annotated[str, typer.Argument(help="📁 Folder containing repos to record or a specs JSON file to follow.")] = "",
21
+ directory: Annotated[Optional[str], typer.Argument(help="📁 Folder containing repos to record or a specs JSON file to follow.")] = None,
15
22
  push: Annotated[bool, typer.Option("--push", help="🚀 Push changes.")] = False,
16
23
  pull: Annotated[bool, typer.Option("--pull", help="⬇️ Pull changes.")] = False,
17
24
  commit: Annotated[bool, typer.Option("--commit", help="💾 Commit changes.")] = False,
@@ -23,22 +30,29 @@ def main(
23
30
  recursive: Annotated[bool, typer.Option("--recursive", "-r", help="🔍 Recursive flag.")] = False,
24
31
  no_sync: Annotated[bool, typer.Option("--no-sync", help="🚫 Disable automatic uv sync after pulls.")] = False,
25
32
  cloud: Annotated[Optional[str], typer.Option("--cloud", "-c", help="☁️ Cloud storage option.")] = None,
33
+ analyze: Annotated[bool, typer.Option("--analyze", help="📊 Analyze repository development over time.")] = False,
26
34
  ) -> None:
27
35
  print("\n" + "=" * 50)
28
36
  print("📂 Welcome to the Repository Manager")
29
37
  print("=" * 50 + "\n")
30
38
 
39
+ if analyze:
40
+ from machineconfig.scripts.python.count_lines_frontend import analyze_repo_development
41
+ analyze_repo_development(repo_path=directory if directory is not None else ".")
42
+ return
43
+ # app.command(name="analyze-repo", help="📊 Analyze code repository over time")(analyze_repo_development)
44
+
31
45
  from machineconfig.utils.io import read_ini
32
46
  from machineconfig.utils.source_of_truth import CONFIG_PATH, DEFAULTS_PATH
33
- from machineconfig.utils.path_extended import PathExtended as PathExtended
47
+ from machineconfig.utils.path_extended import PathExtended
34
48
  from machineconfig.scripts.python.repos_helper_record import main as record_repos
35
49
  from machineconfig.scripts.python.repos_helper_clone import clone_repos
36
50
  from machineconfig.scripts.python.repos_helper_action import perform_git_operations
37
51
 
38
- if directory == "":
39
- repos_root = PathExtended.home().joinpath("code") # it is a positional argument, can never be empty.
40
- else:
41
- repos_root = PathExtended(directory).expanduser().absolute()
52
+ if directory is None:
53
+ directory = Path.cwd().as_posix()
54
+ print(f"📁 Using directory: {directory}")
55
+ repos_root = PathExtended(directory).expanduser().absolute()
42
56
  auto_sync = not no_sync # Enable auto sync by default, disable with --no-sync
43
57
  if record:
44
58
  save_path = record_repos(repos_root=repos_root)
@@ -1,4 +1,4 @@
1
- from machineconfig.utils.path_extended import PathExtended as PathExtended
1
+ from machineconfig.utils.path_extended import PathExtended
2
2
  from machineconfig.utils.accessories import randstr
3
3
  from machineconfig.scripts.python.repos_helper_update import update_repository
4
4
 
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from pathlib import Path
3
4
  from typing import Literal, Optional, cast
4
5
 
5
6
  from git import Repo as GitRepo
@@ -7,7 +8,6 @@ from git.exc import GitCommandError
7
8
  from rich import print as pprint
8
9
  from rich.progress import BarColumn, MofNCompleteColumn, Progress, SpinnerColumn, TextColumn, TimeElapsedColumn
9
10
 
10
- from machineconfig.utils.path_extended import PathExtended as PathExtended
11
11
  from machineconfig.utils.schemas.repos.repos_types import RepoRecordDict, RepoRecordFile, RepoRemote
12
12
  from machineconfig.utils.io import read_json
13
13
 
@@ -26,8 +26,8 @@ def choose_remote(remotes: list[RepoRemote], preferred_remote: Optional[str]) ->
26
26
  return remotes[0] if len(remotes) > 0 else None
27
27
 
28
28
 
29
- def ensure_destination(parent_dir: str, name: str) -> PathExtended:
30
- parent_path = PathExtended(parent_dir).expanduser().absolute()
29
+ def ensure_destination(parent_dir: str, name: str) -> Path:
30
+ parent_path = Path(parent_dir).expanduser().absolute()
31
31
  parent_path.mkdir(parents=True, exist_ok=True)
32
32
  return parent_path.joinpath(name)
33
33
 
@@ -94,7 +94,7 @@ def clone_single_repo(repo_spec: RepoRecordDict, preferred_remote: Optional[str]
94
94
  return (status, message)
95
95
 
96
96
 
97
- def clone_repos(spec_path: PathExtended, preferred_remote: Optional[str], checkout_branch_flag: bool, checkout_commit_flag: bool) -> list[tuple[CloneStatus, str]]:
97
+ def clone_repos(spec_path: Path, preferred_remote: Optional[str], checkout_branch_flag: bool, checkout_commit_flag: bool) -> list[tuple[CloneStatus, str]]:
98
98
  data = cast(RepoRecordFile, read_json(path=spec_path))
99
99
  repos = data["repos"]
100
100
  results: list[tuple[CloneStatus, str]] = []
@@ -1,4 +1,4 @@
1
- from machineconfig.utils.path_extended import PathExtended as PathExtended
1
+ from machineconfig.utils.path_extended import PathExtended
2
2
  from machineconfig.utils.schemas.repos.repos_types import GitVersionInfo, RepoRecordDict, RepoRemote
3
3
 
4
4
  from machineconfig.utils.schemas.repos.repos_types import RepoRecordFile
@@ -69,7 +69,8 @@ def find_layout_file(layout_path: str, ) -> Path:
69
69
  return choice_file
70
70
 
71
71
 
72
- def launch(layout_path: str = typer.Argument(..., help="Path to the layout.json file"),
72
+ def launch(ctx: typer.Context,
73
+ layout_path: Optional[str] = typer.Argument(None, help="Path to the layout.json file"),
73
74
  max_tabs: int = typer.Option(10, help="A Sanity checker that throws an error if any layout exceeds the maximum number of tabs to launch."),
74
75
  max_layouts: int = typer.Option(10, help="A Sanity checker that throws an error if the total number of layouts exceeds this number."),
75
76
  sleep_inbetween: float = typer.Option(1.0, help="Sleep time in seconds between launching layouts"),
@@ -82,6 +83,9 @@ def launch(layout_path: str = typer.Argument(..., help="Path to the layout.json
82
83
  """
83
84
  Launch terminal sessions based on a layout configuration file.
84
85
  """
86
+ if layout_path is None:
87
+ typer.echo(ctx.get_help())
88
+ raise typer.Exit()
85
89
  layout_path_resolved = find_layout_file(layout_path=layout_path)
86
90
  layouts_selected = select_layout(layouts_json_file=layout_path_resolved, selected_layouts_names=choose.split(",") if choose else None, select_interactively=choose_interactively)
87
91
 
@@ -7,7 +7,6 @@ import typer
7
7
 
8
8
 
9
9
  """
10
- uv run --python 3.13 --with machineconfig
11
10
  reference:
12
11
  # https://github.com/tsl0922/ttyd/wiki/Serving-web-fonts
13
12
  # -t "fontFamily=CaskaydiaCove" bash
@@ -67,6 +66,7 @@ def main(
67
66
  port: Annotated[Optional[int], typer.Option("--port", "-p", help="Port to run the terminal server on (default: 7681)")] = None,
68
67
  username: Annotated[Optional[str], typer.Option("--username", "-u", help="Username for terminal access (default: current user)")] = None,
69
68
  password: Annotated[Optional[str], typer.Option("--password", "-w", help="Password for terminal access (default: from ~/dotfiles/creds/passwords/quick_password)")] = None,
69
+ start_command: Annotated[Optional[str], typer.Option("--start-command", "-s", help="Command to run on terminal start (default: bash/powershell)")] = None,
70
70
  ssl: Annotated[bool, typer.Option("--ssl", "-S", help="Enable SSL")] = False,
71
71
  ssl_cert: Annotated[Optional[str], typer.Option("--ssl-cert", "-C", help="SSL certificate file path")] = None,
72
72
  ssl_key: Annotated[Optional[str], typer.Option("--ssl-key", "-K", help="SSL key file path")] = None,
@@ -121,12 +121,19 @@ def main(
121
121
  ssl_args = f"--ssl --ssl-cert {ssl_cert} --ssl-key {ssl_key}"
122
122
  if ssl_ca:
123
123
  ssl_args += f" --ssl-ca {ssl_ca}"
124
-
125
- code = f"""#!/bin/bash
126
- ttyd --writable -t enableSixel=true {ssl_args} --port {port} --credential "{username}:{password}" -t 'theme={{"background": "black"}}' bash
124
+
125
+ if start_command is None:
126
+ import platform
127
+ if platform.system().lower() == "windows":
128
+ start_command = "powershell"
129
+ else:
130
+ start_command = "bash"
131
+ code = f"""
132
+ #!/bin/bash
133
+ ttyd --writable -t enableSixel=true {ssl_args} --port {port} --credential "{username}:{password}" -t 'theme={{"background": "black"}}' {start_command}
127
134
  """
128
- import subprocess
129
- subprocess.run(code, shell=True, check=True)
135
+ from machineconfig.utils.code import run_script
136
+ run_script(code)
130
137
 
131
138
 
132
139
  def main_with_parser():
@@ -4,7 +4,7 @@ slidev
4
4
 
5
5
  from machineconfig.utils.source_of_truth import CONFIG_PATH
6
6
  from machineconfig.utils.code import print_code
7
- from machineconfig.utils.path_extended import PathExtended as PathExtended
7
+ from machineconfig.utils.path_extended import PathExtended
8
8
  from machineconfig.utils.terminal import Response
9
9
  from typing import Annotated, Optional
10
10
  import typer
@@ -1,6 +1,6 @@
1
1
  """TWSL"""
2
2
 
3
- from machineconfig.utils.path_extended import PathExtended as PathExtended
3
+ from machineconfig.utils.path_extended import PathExtended
4
4
  from typing import Annotated, Optional
5
5
  import typer
6
6
  import platform
@@ -1,7 +1,7 @@
1
1
  """Set Windows Terminal Settings"""
2
2
 
3
3
  from machineconfig.utils.accessories import randstr
4
- from machineconfig.utils.path_extended import PathExtended as PathExtended
4
+ from machineconfig.utils.path_extended import PathExtended
5
5
  from machineconfig.utils.io import read_json, save_json
6
6
  import platform
7
7
 
@@ -7,7 +7,7 @@ from rich.syntax import Syntax
7
7
 
8
8
  from machineconfig.utils.accessories import randstr
9
9
  from machineconfig.utils.ve import get_ve_activate_line
10
- from machineconfig.utils.path_extended import PathExtended as PathExtended
10
+ from machineconfig.utils.path_extended import PathExtended
11
11
 
12
12
 
13
13
  def get_shell_script_executing_python_file(python_file: str, func: Optional[str], ve_path: str, strict_execution: bool = True):
@@ -8,7 +8,7 @@ from machineconfig.jobs.installer.package_groups import PACKAGE_GROUPS, PACKAGE_
8
8
  from rich.console import Console
9
9
  from rich.panel import Panel
10
10
 
11
- from machineconfig.utils.path_extended import PathExtended as PathExtended
11
+ from machineconfig.utils.path_extended import PathExtended
12
12
  from machineconfig.utils.source_of_truth import INSTALL_VERSION_ROOT, LINUX_INSTALL_PATH, LIBRARY_ROOT
13
13
  from machineconfig.utils.io import read_json
14
14
 
@@ -1,5 +1,5 @@
1
1
 
2
- from machineconfig.utils.path_extended import PathExtended as PathExtended
2
+ from machineconfig.utils.path_extended import PathExtended
3
3
  from machineconfig.utils.source_of_truth import WINDOWS_INSTALL_PATH, LINUX_INSTALL_PATH, INSTALL_VERSION_ROOT
4
4
 
5
5
  from pathlib import Path
@@ -1,4 +1,4 @@
1
- from machineconfig.utils.path_extended import PathExtended as PathExtended
1
+ from machineconfig.utils.path_extended import PathExtended
2
2
  from machineconfig.utils.installer_utils.installer_abc import find_move_delete_linux, find_move_delete_windows
3
3
  from machineconfig.utils.source_of_truth import INSTALL_TMP_DIR, INSTALL_VERSION_ROOT, LIBRARY_ROOT
4
4
  from machineconfig.utils.installer_utils.installer_abc import check_tool_exists
@@ -1,4 +1,4 @@
1
- from machineconfig.utils.path_extended import PathExtended as PathExtended, PLike
1
+ from machineconfig.utils.path_extended import PathExtended, PLike
2
2
  from machineconfig.utils.accessories import randstr
3
3
  from rich.console import Console
4
4
  from rich.panel import Panel
@@ -1,4 +1,4 @@
1
- from machineconfig.utils.path_extended import PathExtended as PathExtended
1
+ from machineconfig.utils.path_extended import PathExtended
2
2
  from machineconfig.utils.options import choose_from_options
3
3
  from machineconfig.utils.source_of_truth import EXCLUDE_DIRS
4
4
  from rich.console import Console
@@ -4,7 +4,7 @@ import logging
4
4
  import time
5
5
  from datetime import datetime, timezone, timedelta
6
6
  from machineconfig.utils.io import from_pickle
7
- from machineconfig.utils.path_extended import PathExtended as PathExtended
7
+ from machineconfig.utils.path_extended import PathExtended
8
8
 
9
9
 
10
10
  class LoggerTemplate(Protocol):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 4.98
3
+ Version: 5.0
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -8,7 +8,10 @@ machineconfig/cluster/remote/file_manager.py,sha256=w1edpBcH8mHDEzRF5tqQDu5MJYsy
8
8
  machineconfig/cluster/remote/job_params.py,sha256=_t5QKqRHReShaBlJfSgVS5E3_oHYcRUIRO_Uz1mbA-k,7698
9
9
  machineconfig/cluster/remote/loader_runner.py,sha256=Ia62ALepM3TP7kHaymfp0jEMuHJ0HjF31VbNJOCYYtM,7061
10
10
  machineconfig/cluster/remote/remote_machine.py,sha256=xRuoHKNsIT0-FTFSvF1q7scnGKz8Qp6bxuzYdQLUOVA,19670
11
- machineconfig/cluster/remote/script_execution.py,sha256=4U70FDtjOh6A6C2Ei-Xh90S888q64VhRPbExoEbdepk,9980
11
+ machineconfig/cluster/remote/run_cloud.py,sha256=0o4-v5yFEqvlHzoKDXljRCR5ikx_r5w4oYE5OCtVIK8,2378
12
+ machineconfig/cluster/remote/run_cluster.py,sha256=ZFNl4EDybicedWKX5qBwSSeKKfdV2lQFD_1kcAyjHYM,4691
13
+ machineconfig/cluster/remote/run_remote.py,sha256=vCc56t8BUAUJp7tyb0PFfwy5hlmIdRdzcjlpP9gcLdc,3247
14
+ machineconfig/cluster/remote/script_execution.py,sha256=HHENJ4hmWmiVii394EbgIaTdJUQwxprFQh0ItaYJZ2E,9977
12
15
  machineconfig/cluster/remote/script_notify_upon_completion.py,sha256=GRxnnbnOl1-hTovTN-zI_M9wdV7x293yA77_mou9I1o,2032
13
16
  machineconfig/cluster/sessions_managers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
17
  machineconfig/cluster/sessions_managers/ffile.py,sha256=QzkBU5Ysnah9SxlzODsGprx4Q_VskWntChoejaOCEdw,52
@@ -37,20 +40,16 @@ machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py,sha256=7
37
40
  machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py,sha256=AtpIoko_ghhOXENGAfgiS2jA4IYBFRMjEbyIy_P6HIM,3758
38
41
  machineconfig/cluster/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
42
  machineconfig/cluster/templates/cli_trogon.py,sha256=PFWGy8SFYIhT9r3ZV4oIEYfImsQwzAHH_04stPuV5bY,647
40
- machineconfig/cluster/templates/run_cloud.py,sha256=0o4-v5yFEqvlHzoKDXljRCR5ikx_r5w4oYE5OCtVIK8,2378
41
- machineconfig/cluster/templates/run_cluster.py,sha256=ZFNl4EDybicedWKX5qBwSSeKKfdV2lQFD_1kcAyjHYM,4691
42
- machineconfig/cluster/templates/run_remote.py,sha256=vCc56t8BUAUJp7tyb0PFfwy5hlmIdRdzcjlpP9gcLdc,3247
43
- machineconfig/cluster/templates/utils.py,sha256=5lHgjHvodoSPBD31AwluHBBNgwimwThUsDNWGN8iH9I,1647
44
43
  machineconfig/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
44
  machineconfig/jobs/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
45
  machineconfig/jobs/installer/installer_data.json,sha256=K6B6EPD8IXIeOzkY7sIIpphBmDVwnV_tczULAx-Y2ps,72114
47
46
  machineconfig/jobs/installer/package_groups.py,sha256=VuI4WZEDpgApBptxqu7mbfKxrQ99JY52L1n2devP-y0,6822
48
- machineconfig/jobs/installer/custom/gh.py,sha256=iZZI4ND87eiWlj-Y5uJ7LuN8ln2QkqjJyeOMFZ0o-YA,2963
49
- machineconfig/jobs/installer/custom/hx.py,sha256=FrUD0mlhWG2GxrnarccVIaW_sHJ5mxeF6yyzbBWyx6w,5840
47
+ machineconfig/jobs/installer/custom/gh.py,sha256=gn7TUSrsLx7uqFqj1Z-iYglS0EYBSgtJ9jWHxaJIfXM,4119
48
+ machineconfig/jobs/installer/custom/hx.py,sha256=ahtnne0zLvnBDjbKPaEk987R_mub8KJhwWpe4fe0kCU,5824
50
49
  machineconfig/jobs/installer/custom_dev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
50
  machineconfig/jobs/installer/custom_dev/alacritty.py,sha256=dQJ7EZ-23N3UOeWwccC-HTbrpfKDRxrzdmfqeIPKwQE,2738
52
51
  machineconfig/jobs/installer/custom_dev/brave.py,sha256=6-jsdvvVEQDkqHbhnEubitF6fy7AXBB9Q-GLgIEOLoM,2987
53
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py,sha256=2DHZtMKjeH6BBVBaZKsup3PwzPfl4Cxmn9xlR7fzAkg,1904
52
+ machineconfig/jobs/installer/custom_dev/bypass_paywall.py,sha256=ZF8yF2srljLChe1tOw_fEsalOkts4RpNwlzX9GtWh2g,1888
54
53
  machineconfig/jobs/installer/custom_dev/code.py,sha256=0Hb4ToMLQX4WWyG4xfUEJMTwN01ad5VZGogu3Llqtbc,2480
55
54
  machineconfig/jobs/installer/custom_dev/cursor.py,sha256=3xoFAYFdZqurSHXeEG-vbG0KU1TNQpBMaMgL1eW6X4k,4326
56
55
  machineconfig/jobs/installer/custom_dev/espanso.py,sha256=H1rZb4xnjs72lL0_mB0M4d7NrDyVv1sAG3NOkOrCB64,4137
@@ -59,7 +58,7 @@ machineconfig/jobs/installer/custom_dev/lvim.py,sha256=2-wbh_IClTFcFkSYk9EsRiv88
59
58
  machineconfig/jobs/installer/custom_dev/nerdfont.py,sha256=dsPmiqP9AJCack7mNeJ8Qzo4dSOwC0bsupH0Hn3gqSg,4149
60
59
  machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py,sha256=6IRg95ToIfw1oGNxZNZPwsjrwgJgbjQHE6My8rTe36o,6073
61
60
  machineconfig/jobs/installer/custom_dev/redis.py,sha256=bReDLsgy37eJyTU4TXE7FQpKFi-_usQC7bwhfXvZuBU,3259
62
- machineconfig/jobs/installer/custom_dev/wezterm.py,sha256=BuTVRqV5WQUS2C7FpWMU4pQWgkPt4p3VVGcE6fTVG-0,2311
61
+ machineconfig/jobs/installer/custom_dev/wezterm.py,sha256=73BzfUdY8mXM4l4jVFIBxR1qXSE4g_PAyxefanrVkFU,3555
63
62
  machineconfig/jobs/installer/custom_dev/winget.py,sha256=gLdwM20jKMf2bMV3BAcOg4MkuzwF09CU5OhXvLkPoHo,5738
64
63
  machineconfig/jobs/installer/linux_scripts/brave.sh,sha256=m01xquA4YZW3YrhJiTCvTZuLliELmRI1avYFyuE5-Ws,2119
65
64
  machineconfig/jobs/installer/linux_scripts/docker.sh,sha256=xP219QeQ5eLwhvOHsNYqOERMGdjBqvrL5jeoZj749XE,5347
@@ -82,7 +81,7 @@ machineconfig/jobs/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
82
81
  machineconfig/jobs/python/check_installations.py,sha256=ksuENfJg0NAo1mWLRnsj1MpZw7Ee7eKw1nWyUQeO7fg,11096
83
82
  machineconfig/jobs/python/create_bootable_media.py,sha256=KKtcPk0rFLQc4eNVP6nbeYX-P7Gpqi0HvfIcUM6rVVs,827
84
83
  machineconfig/jobs/python/python_cargo_build_share.py,sha256=vy1v32-7Tui4NK4wG5XC5hxavQ4BeMpKprUtqzBjut0,2081
85
- machineconfig/jobs/python/python_ve_symlink.py,sha256=HYVkNLIOm4Zk6zX8cNOKNLSKA7un9hXiZfBjq8vcwRs,1156
84
+ machineconfig/jobs/python/python_ve_symlink.py,sha256=Mw2SK_TDLK5Ct_mEESh_Pd-Rn-B1oBSp7a_9y_eZbqw,1140
86
85
  machineconfig/jobs/python/tasks.py,sha256=hrBDQOnBmcXtauTkicVgC8J2AOGcfdFfyx0K8eI6Coc,150
87
86
  machineconfig/jobs/python/vscode/api.py,sha256=Et0G-VUj13D1rshYMdDrw_CUYSO7Q6XRrEQO0WjVIKU,1683
88
87
  machineconfig/jobs/python/vscode/sync_code.py,sha256=f9hxMg_nkIsC0xvfQMboJbc-Jhap9YQrV7k7a5YSI1c,2333
@@ -94,8 +93,8 @@ machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1,sha256=-7pElYi
94
93
  machineconfig/jobs/windows/msc/cli_agents.bat,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
94
  machineconfig/jobs/windows/msc/cli_agents.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
95
  machineconfig/profile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
- machineconfig/profile/create.py,sha256=R-k5lIQqnhQfAO4vBfGhkprf9_ePl4Zb9W26jgKcvXQ,6498
98
- machineconfig/profile/shell.py,sha256=rseM8irNSv8xAUj8pDucjCuuqJZoNtpSgKt9JOntoM0,9215
96
+ machineconfig/profile/create.py,sha256=-BsFb-5-4ZweLGirRtTshBTtGuTtl1hCAC3tD12xgMQ,7745
97
+ machineconfig/profile/shell.py,sha256=eAAmYoROXX1V3vk9-jcRSnv03P2Wx3_N4UgFtUDLtKU,9199
99
98
  machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
100
99
  machineconfig/profile/records/linux/apps_summary_report.csv,sha256=pw9djvaRUPalKDLn2sl3odcbD2_Zx3aEupsQ8UPfaaY,2738
101
100
  machineconfig/profile/records/linux/apps_summary_report.md,sha256=l77oofA6Rliql0ZgKGIZi8bstFoGyyGTxeS8p2PtOj0,5634
@@ -142,51 +141,53 @@ machineconfig/scripts/linux/z_ls,sha256=ATZtu0ccN3AKvAOxkwLq1xgQjJ3en5byEWJ3Q8af
142
141
  machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
142
  machineconfig/scripts/python/agents.py,sha256=iMR-lpkdIzpm1CEin092IRCq2RbXLD-8Z_SOcV0g33Q,9897
144
143
  machineconfig/scripts/python/choose_wezterm_theme.py,sha256=Hlu_EOQhLM6wYdAdY25jcqEK11BkVwQYwkz04xnIBVU,3397
145
- machineconfig/scripts/python/cloud_copy.py,sha256=_pxA8o3ar5vH9DkrAdwafHcZMiqNCbY_IfNzKCOMJ5k,8395
144
+ machineconfig/scripts/python/cloud_copy.py,sha256=fcWbSo2nGiubtMYjGci8s5tVjZ9D-u8mteCawZmbw3I,8379
146
145
  machineconfig/scripts/python/cloud_manager.py,sha256=YN0DYLzPKtMBaks-EAVwFmkCu3XeHWMr1D21uqX5dDk,3429
147
- machineconfig/scripts/python/cloud_mount.py,sha256=RFMzRUep2D5HtVXANIi-pab3EkI-W8P1IJ32k1W7xQA,6756
148
- machineconfig/scripts/python/cloud_repo_sync.py,sha256=PTZ4gyhMFwW77DxE86GyNQK0JDFLcMUSF69AM80SvxY,9781
146
+ machineconfig/scripts/python/cloud_mount.py,sha256=GwcXbd5ohoHGESfX5edtCEl2-umDDxH_AZapmFSzc9E,6740
147
+ machineconfig/scripts/python/cloud_repo_sync.py,sha256=8dnlHbQqRymPRU0v01pNIuaIvFeY4fReP7ewNSSCt34,9765
149
148
  machineconfig/scripts/python/cloud_sync.py,sha256=RWGpAfJ9fnN18yNBSgN44dzA38Hmd4879JL5r2pcyrM,3514
150
- machineconfig/scripts/python/croshell.py,sha256=wYi8xWkzYzpfg8YNppmu22mvx0Gxtbs979ERO3kZS2w,8587
151
- machineconfig/scripts/python/devops.py,sha256=C2aHrYJqXcvgTOam1zucWflLjUYZnNwpFrZ7ccltqXk,3428
152
- machineconfig/scripts/python/devops_add_identity.py,sha256=JfN3ZrYMCgmt4ks_VCfnV9BIIHAsOYO3E0W0wZ15FR8,3791
153
- machineconfig/scripts/python/devops_add_ssh_key.py,sha256=KaoX83KltBsmutfKhSfZjd7nP_R1hJ2OLAWRhbswO7o,6889
154
- machineconfig/scripts/python/devops_backup_retrieve.py,sha256=jZe5Vki7E2GCMG8hvqUZeOONFC4cNzISoGzq_dMG4GA,5601
155
- machineconfig/scripts/python/devops_update_repos.py,sha256=c5qBc9cuTGDEqDHufkjDT4d_vvJsswv3tlqk9MAulYk,8063
156
- machineconfig/scripts/python/dotfile.py,sha256=SRcX-9Ak1jRvF-killBTTm2IWcsNxfiLucH6ZsytAFA,2202
149
+ machineconfig/scripts/python/count_lines.py,sha256=aVg91ArHg73swKNGMQzi_WlPnTLEbc8rkNZkCv_qpvI,15894
150
+ machineconfig/scripts/python/count_lines_frontend.py,sha256=1DQn9YUbl5IYjjJ1fS5qEe60X-5ez6zZiXMQXVTA4-8,359
151
+ machineconfig/scripts/python/croshell.py,sha256=parFHSL859H00ExDpDBPHBFe_E_DrfVq6P8CpCGVK9A,8571
152
+ machineconfig/scripts/python/devops.py,sha256=dPCdg55WdcOXy6NIjIUnkBEpgmy-ooGGYA0x_G30ZKA,3486
153
+ machineconfig/scripts/python/devops_add_identity.py,sha256=wvjNgqsLmqD2SxbNCW_usqfp0LI-TDvcJJKGOWt2oFw,3775
154
+ machineconfig/scripts/python/devops_add_ssh_key.py,sha256=BXB-9RvuSZO0YTbnM2azeABW2ngLW4SKhhAGAieMzfw,6873
155
+ machineconfig/scripts/python/devops_backup_retrieve.py,sha256=JLJHmi8JmZ_qVTeMW-qBEAYGt1fmfWXzZ7Gm-Q-GDcU,5585
156
+ machineconfig/scripts/python/devops_update_repos.py,sha256=8c58RDyIOelUfxaY7CEhuV53KL9QMlFl2QCWqHuZqww,9427
157
+ machineconfig/scripts/python/dotfile.py,sha256=iaCTflkr2Tmc4FJ7ppdE-dZtvKQkmDah-OdSoxebi6s,2424
157
158
  machineconfig/scripts/python/fire_agents_help_launch.py,sha256=1ymWiszfjCyPv3ofinWzfOmbzLEt3d7ntac_afLh-V4,5017
158
159
  machineconfig/scripts/python/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
159
160
  machineconfig/scripts/python/fire_agents_helper_types.py,sha256=zKu8Vr6iucaGSkCm_Tkt_WrYU7-6Nript3coYyzTXzY,295
160
161
  machineconfig/scripts/python/fire_agents_load_balancer.py,sha256=mpqx3uaQdBXYieuvhdK-qsvLepf9oIMo3pwPj9mSEDI,1079
161
- machineconfig/scripts/python/fire_jobs.py,sha256=CqtFt4VGtdEP0tbmRRZ-qU5G232jQj0umlS8C_qtQRM,15911
162
+ machineconfig/scripts/python/fire_jobs.py,sha256=Mg7M6pm3PvyJlnMGYas8hEVYLIJYiyy-pBiRWCGLFjQ,15895
162
163
  machineconfig/scripts/python/fire_jobs_args_helper.py,sha256=-gl5I-26Op12nToIpAA-YEpvn8MMkNlI5XjhUbj50I0,4273
163
164
  machineconfig/scripts/python/fire_jobs_route_helper.py,sha256=EFWsg6F9TeSAtYQec57WtPopUbm2euGZTUZv6J4RhNE,3026
164
165
  machineconfig/scripts/python/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
- machineconfig/scripts/python/ftpx.py,sha256=l_gdJS0QB2wVZErubtZvm4HJD9HZAJxSP68sbY73xwo,10278
166
+ machineconfig/scripts/python/ftpx.py,sha256=QfQTp-6jQP6yxfbLc5sKxiMtTgAgc8sjN7d17_uLiZc,9400
166
167
  machineconfig/scripts/python/get_zellij_cmd.py,sha256=e35-18hoXM9N3PFbvbizfkNY_-63iMicieWE3TbGcCQ,576
167
168
  machineconfig/scripts/python/gh_models.py,sha256=3BLfW25mBRiPO5VKtVm-nMlKLv-PaZDw7mObajq6F6M,5538
168
169
  machineconfig/scripts/python/interactive.py,sha256=NHAniZPgEfhgA3higTRD3U76nHIDpZLygWebhKc6ld0,11791
169
- machineconfig/scripts/python/mount_nfs.py,sha256=5HmtsAelFSVzl8o_F9mBoKiuVNIyRHjvdqKzFJR1P64,3376
170
+ machineconfig/scripts/python/mount_nfs.py,sha256=aECrL64j9g-9rF49sVJAjGmzaoGgcMnl3g9v17kQF4c,3239
170
171
  machineconfig/scripts/python/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
171
- machineconfig/scripts/python/mount_ssh.py,sha256=7dYCBtkJE43rwuvhxiYzyTlJ230RFQbZOA29veYQbuU,2284
172
+ machineconfig/scripts/python/mount_ssh.py,sha256=k2fKq3f5dKq_7anrFOlqvJoI_3U4EWNHLRZ1o3Lsy6M,2268
172
173
  machineconfig/scripts/python/onetimeshare.py,sha256=bmGsNnskym5OWfIhpOfZG5jq3m89FS0a6dF5Sb8LaZM,2539
173
174
  machineconfig/scripts/python/pomodoro.py,sha256=SPkfeoZGv8rylGiOyzQ7UK3aXZ3G2FIOuGkSuBUggOI,2019
174
- machineconfig/scripts/python/repos.py,sha256=Mz-d0ubynOZaKwC6YXKiZq9ojMnKFi4J6n0UbiJYZyY,4449
175
- machineconfig/scripts/python/repos_helper_action.py,sha256=f0vFjPj9WEA361961ux3SIEg9riVGHtyuf6BnO6lnvU,13336
176
- machineconfig/scripts/python/repos_helper_clone.py,sha256=xW5YZEoNt3k7h9NIULhUhOnh53-B63eiXF2FjOl1IKQ,5535
177
- machineconfig/scripts/python/repos_helper_record.py,sha256=YEEQORfEiLddOIIgePo5eEkyQUFruFg3kc8npMvRL-o,10927
175
+ machineconfig/scripts/python/repos.py,sha256=F6RuAldifnk_t_KUt1d69JT8EqV06Ip27JYljp6-1RY,5196
176
+ machineconfig/scripts/python/repos_helper_action.py,sha256=6bQln9x2L_lOnvWwnTM_nJjkugl5LDDGHedVsz2zuI4,13320
177
+ machineconfig/scripts/python/repos_helper_clone.py,sha256=9vGb9NCXT0lkerPzOJjmFfhU8LSzE-_1LDvjkhgnal0,5461
178
+ machineconfig/scripts/python/repos_helper_record.py,sha256=I4CsIPMZR-JcUuKyyinynws0ul0xb2Lb5F1QCnS9HBY,10911
178
179
  machineconfig/scripts/python/repos_helper_update.py,sha256=AYyKIB7eQ48yoYmFjydIhRI1lV39TBv_S4_LCa-oKuQ,11042
179
180
  machineconfig/scripts/python/scheduler.py,sha256=rKhssuxkD697EY6qaV6CSdNhxpAQLDWO4fE8GMCQ9FA,3061
180
- machineconfig/scripts/python/sessions.py,sha256=moLdAPHMn90zd6blugplQ2V__xurOcMBH2WRYqRf-hA,8415
181
- machineconfig/scripts/python/share_terminal.py,sha256=lBZgfFH34P9dfcy3eZNjFUR5OsR6sVfq1vV2eiqQYxQ,5003
181
+ machineconfig/scripts/python/sessions.py,sha256=e8gL0fVWOZ5WcJsA3ZWfqJBc5c7g-rMlVf0SF63rIaU,8547
182
+ machineconfig/scripts/python/share_terminal.py,sha256=pqKnly6QRtcPmw0lLyRN6NRuK2bntM1hOdqQfw5jJnc,5324
182
183
  machineconfig/scripts/python/snapshot.py,sha256=aDvKeoniZaeTSNv9zWBUajaj2yagAxVdfuvO1_tgq5Y,1026
183
- machineconfig/scripts/python/start_slidev.py,sha256=0rVK7uQL70FAYvVk1SQ-tKRlT1fEj-5wIKCLAnM4-9M,4913
184
+ machineconfig/scripts/python/start_slidev.py,sha256=FAJ1_WkAQ7KcbRZ3cSN_72NDgV_flRrwxmXv1imyulI,4897
184
185
  machineconfig/scripts/python/start_terminals.py,sha256=DRWbMZumhPmL0DvvsCsbRNFL5AVQn1SgaziafTio3YQ,6149
185
186
  machineconfig/scripts/python/t4.py,sha256=cZ45iWzS254V5pmVvq8wCw7jAuDhzr8G2Arzay76saU,316
186
187
  machineconfig/scripts/python/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
187
188
  machineconfig/scripts/python/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
188
189
  machineconfig/scripts/python/wifi_conn.py,sha256=4GdLhgma9GRmZ6OFg3oxOX-qY3sr45njPckozlpM_A0,15566
189
- machineconfig/scripts/python/wsl_windows_transfer.py,sha256=WDZccDZwi4L8cNXqvZYWYQG4_j2SyD-qA2Bwlr4bZUc,3405
190
+ machineconfig/scripts/python/wsl_windows_transfer.py,sha256=534zlYe3Xsr0mqegAnZrVru8Fif-9jZyQK38Q90AtDo,3389
190
191
  machineconfig/scripts/python/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
192
  machineconfig/scripts/python/ai/generate_files.py,sha256=Vfjgd0skJu-WTgqUxmOVFzaNMfSFBaFmY5oGGVY7MZY,2860
192
193
  machineconfig/scripts/python/ai/initai.py,sha256=FJriMm1-x44xx6yEnqgI-F5lfRw44xleOluv4TcRs0I,2237
@@ -216,10 +217,10 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
216
217
  machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
217
218
  machineconfig/scripts/python/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
219
  machineconfig/scripts/python/helpers/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAsPT-Xl3RG9-yBed71a2tu9Pig,4914
219
- machineconfig/scripts/python/helpers/helpers2.py,sha256=ZdqeF1MLlaBRwoqsQAqnHi4b8rW0byFCBnbyCrPKkoA,7336
220
- machineconfig/scripts/python/helpers/helpers4.py,sha256=rwAy7HK1CbKQZORzQMQULSKNHj0i4jo7KbUXj3qLG9I,4765
220
+ machineconfig/scripts/python/helpers/helpers2.py,sha256=2QeQ2aii6hVc4S-oi3SVTSyPxKPTDUWBD7GnkCEr7Qs,7304
221
+ machineconfig/scripts/python/helpers/helpers4.py,sha256=iKR5vVJygaDIpFXhcdma9jOpyxKtUhmqcmalFxJmY0w,4749
221
222
  machineconfig/scripts/python/helpers/helpers5.py,sha256=dPBvA9Tcyx9TMgM6On49A1CueGMhBdRzikDnlJGf3J0,1123
222
- machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=umN6ktxjddkraC_h8w50D72olxHcyT4kn-CUq6_C_xI,5448
223
+ machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=7n9feSfWw1p0Nie-uWg_NTe_IiYRUjeCvaNxsZyV13s,5432
223
224
  machineconfig/scripts/windows/agents.ps1,sha256=DqdrC_Xc2rwQ6kGzT0xh5CJz4B_0p5ZwB7s8XE6rPCM,77
224
225
  machineconfig/scripts/windows/choose_wezterm_theme.ps1,sha256=LiXJ0a4LKjb6E-oH_bAg6DjegV4SqDUdiMp_svGCFlI,95
225
226
  machineconfig/scripts/windows/cloud_copy.ps1,sha256=llTFhN2uInZTcoZYZuuhJcf5Ifo5MF226I5MpOzvc3A,82
@@ -376,19 +377,19 @@ machineconfig/setup_windows/web_shortcuts/croshell.ps1,sha256=cTQnegGLGYhuFY3Yuu
376
377
  machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=-76toOluRnxtgo6NuAHgHWMnZQT3zroeCBBLkMTd13g,522
377
378
  machineconfig/setup_windows/web_shortcuts/ssh.ps1,sha256=Tj9axEugJE7I3AQ0w1eUGLPb8ufME5jvU5S7VUjlLJE,424
378
379
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
379
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=D_U_q31sqyzR7QRi_FUFMYuOgVbp15VBlKc51VbFjp0,6807
380
+ machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
380
381
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
381
382
  machineconfig/utils/accessories.py,sha256=W_9dLzjwNTW5JQk_pe3B2ijQ1nA2-8Kdg2r7VBtzgQs,4340
382
- machineconfig/utils/code.py,sha256=5W6kP9SMWdApbFDq0fklI_31RWt7E9ByioxU7XX00HE,5662
383
- machineconfig/utils/installer.py,sha256=p2Mr5GQ8ZsUriV9qatXDwllBqGvYNfI-TQEKXwA8gcA,9961
383
+ machineconfig/utils/code.py,sha256=S7uY5kLPxLcLlR7B2KHeYkenlysAYSPcxFiUYHXSxX8,5646
384
+ machineconfig/utils/installer.py,sha256=xYM6tyctqLmr2lLXUKWgobTRufGIua31uspMXP4HGjY,9945
384
385
  machineconfig/utils/io.py,sha256=ZXB3aataS1IZ_0WMcCRSmoN1nbkvEO-bWYcs-TpngqU,2872
385
- machineconfig/utils/links.py,sha256=riNUrG8aGElRszdOPOic4M2AyOcpdcth_-y8JEiZpJ4,10253
386
+ machineconfig/utils/links.py,sha256=CndE3K0dRtEjp8qfjffs-DE3WzwNUJLRHikZE_dkWm0,10237
386
387
  machineconfig/utils/notifications.py,sha256=vvdsY5IX6XEiILTnt5lNyHxhCi0ljdGX2T_67VRfrG4,9009
387
388
  machineconfig/utils/options.py,sha256=8pG-apcc28xxJ5BQiACsGNTKwWtkQyH3hCtzBEhokK8,8366
388
389
  machineconfig/utils/path_extended.py,sha256=Xjdn2AVnB8p1jfNMNe2kJutVa5zGnFFJVGZbw-Bp_hg,53200
389
- machineconfig/utils/path_helper.py,sha256=jqOf3TAlw5cqSp4HBAlOqjAR_bzC8_fvjA-_-CooI6Y,8030
390
+ machineconfig/utils/path_helper.py,sha256=0e3Xh3BAEv27oqcezNeVLHJllGmLEgLH4T1l90m-650,8014
390
391
  machineconfig/utils/procs.py,sha256=Bm-yopmj19yiBO9tywJHEcs9rZmeRyJqbgTSe216LTU,11349
391
- machineconfig/utils/scheduler.py,sha256=bUHDviS_HE9_6LaA1k9Nnfz5rr2FJIfrk5qO2FJ-oUs,15119
392
+ machineconfig/utils/scheduler.py,sha256=pOzpOowapfC6Fl_k82JbESmLS8eh-zk4FyjJyUX1b4I,15103
392
393
  machineconfig/utils/scheduling.py,sha256=RF1iXJpqf4Dg18jdZWtBixz97KAHC6VKYqTFSpdLWuc,11188
393
394
  machineconfig/utils/source_of_truth.py,sha256=GnjcVkKm11RyZFHGnPbne5YDEBYoZ5yryBNkpfGC7O4,854
394
395
  machineconfig/utils/ssh.py,sha256=KTUp42nT4Vuh350_EvArQoR2N5iVXrc2BFld93fRUX4,20919
@@ -402,14 +403,14 @@ machineconfig/utils/cloud/onedrive/transaction.py,sha256=m-aNcnWj_gfZVvJOSpkdIqj
402
403
  machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
403
404
  machineconfig/utils/installer_utils/github_release_bulk.py,sha256=WJf_qZlF02SmIc6C7o1h4Gy4gAaJAfeAS8O9s2Itj-k,6535
404
405
  machineconfig/utils/installer_utils/installer.py,sha256=_XcatwArhwRepMYfaGYpjd-lqNGfijnjeZB8l4uKd-c,9266
405
- machineconfig/utils/installer_utils/installer_abc.py,sha256=MRVfkjCPlPgCQQcSxXdVJMVnr_9CC3SQbFVDJxWy1zI,10813
406
- machineconfig/utils/installer_utils/installer_class.py,sha256=6IQswaC9mxIdeaMG-rOt-vqyKGYibBRMvC0UglZ_3mI,20268
406
+ machineconfig/utils/installer_utils/installer_abc.py,sha256=9qtFt0_gz_VgaDCCVoXNiOgR42dRF1zU9054o135vs4,10797
407
+ machineconfig/utils/installer_utils/installer_class.py,sha256=fN4Nfqn4tlSfQGW52A_Ipi6GT6utC30ZuSj5WM_yxIY,20252
407
408
  machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=pTxvLzIpD5RF508lUUBBkWcc4V1B10J4ylvVgVGkcM0,2037
408
409
  machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoSpdmTIdgS9LS-RvE-QZ-D260tD3o,1214
409
410
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
410
411
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
411
- machineconfig-4.98.dist-info/METADATA,sha256=Xtvi0zedO2u7yGDMu2GlOZtwTVZgrldIp8on4VJ-kcQ,7061
412
- machineconfig-4.98.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
413
- machineconfig-4.98.dist-info/entry_points.txt,sha256=LcwklRJPY_uKBvStgtOJn5G_pmFCEdpgRNzUUc6twAQ,1134
414
- machineconfig-4.98.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
415
- machineconfig-4.98.dist-info/RECORD,,
412
+ machineconfig-5.0.dist-info/METADATA,sha256=iR23svhxBwVuCPPYQw123XN8KR3K_JufOAnMeJ0tIHk,7060
413
+ machineconfig-5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
414
+ machineconfig-5.0.dist-info/entry_points.txt,sha256=LcwklRJPY_uKBvStgtOJn5G_pmFCEdpgRNzUUc6twAQ,1134
415
+ machineconfig-5.0.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
416
+ machineconfig-5.0.dist-info/RECORD,,
@@ -1,51 +0,0 @@
1
- from typing import Optional
2
- from machineconfig.utils.path_extended import PathExtended, PLike
3
-
4
-
5
- def to_cloud(
6
- localpath: PLike,
7
- cloud: str,
8
- remotepath: Optional[PLike],
9
- zip: bool = False,
10
- encrypt: bool = False,
11
- key: Optional[bytes] = None,
12
- pwd: Optional[str] = None,
13
- rel2home: bool = False,
14
- strict: bool = True,
15
- # obfuscate: bool = False,
16
- share: bool = False,
17
- verbose: bool = True,
18
- os_specific: bool = False,
19
- transfers: int = 10,
20
- root: Optional[str] = "myhome",
21
- ) -> "PathExtended":
22
- to_del = []
23
- localpath = PathExtended(localpath).expanduser().absolute() if not PathExtended(localpath).exists() else PathExtended(localpath)
24
- if zip:
25
- localpath = localpath.zip(inplace=False)
26
- to_del.append(localpath)
27
- if encrypt:
28
- localpath = localpath.encrypt(key=key, pwd=pwd, inplace=False)
29
- to_del.append(localpath)
30
- if remotepath is None:
31
- rp = localpath.get_remote_path(root=root, os_specific=os_specific, rel2home=rel2home, strict=strict) # if rel2home else (P(root) / localpath if root is not None else localpath)
32
- else:
33
- rp = PathExtended(remotepath)
34
-
35
- from rclone_python import rclone
36
-
37
- rclone.copy(localpath.as_posix(), f"{cloud}:{rp.as_posix()}", show_progress=True)
38
-
39
- if share:
40
- if verbose:
41
- print("🔗 SHARING FILE")
42
- tmp = rclone.link(f"{cloud}:{rp.as_posix()}")
43
- return PathExtended(tmp)
44
- return localpath
45
-
46
-
47
- if __name__ == "__main__":
48
- from pathlib import Path
49
-
50
- localpath = Path.home().joinpath("Downloads", "exchangeInfo")
51
- to_cloud(localpath, "odp", remotepath=None)