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

@@ -193,7 +193,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
193
193
  # else: return None
194
194
 
195
195
 
196
- # class PrecheckedCloudInstaller:
196
+ # class precheckedPackages:
197
197
  # def __init__(self):
198
198
  # # Read CSV using standard library
199
199
  # self.data = []
@@ -214,7 +214,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
214
214
  # @staticmethod
215
215
  # def install_cli_apps(app_url: str):
216
216
  # try:
217
- # exe = PrecheckedCloudInstaller.download_google_links(app_url)
217
+ # exe = precheckedPackages.download_google_links(app_url)
218
218
  # except Exception as ex: # type: ignore
219
219
  # print(f"❌ ERROR | Failed downloading {app_url}: {ex}")
220
220
  # return None
@@ -225,7 +225,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
225
225
  # exe.move(folder=PathExtended.home().joinpath("AppData/Local/Microsoft/WindowsApps"), overwrite=True)
226
226
  # return True
227
227
 
228
- # def download_safe_apps(self, name: str="AllEssentials"):
228
+ # def download_safe_apps(self, name: str="essentials"):
229
229
  # # if platform.system().lower() == "windows":
230
230
  # # from machineconfig.jobs.python.python_windows_installers_all import get_cli_py_installers
231
231
  # # cli_installers = get_cli_py_installers()
@@ -234,7 +234,7 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
234
234
  # # cli_installers = get_cli_py_installers()
235
235
  # # else: raise NotImplementedError(f"Platform {platform.system().lower()} is not supported yet.")
236
236
 
237
- # if name == "AllEssentials":
237
+ # if name == "essentials":
238
238
  # print(f"""
239
239
  # {'=' * 150}
240
240
  # 📥 DOWNLOAD | Downloading {len(self.data)} apps...
@@ -244,13 +244,13 @@ APP_SUMMARY_PATH = LIBRARY_ROOT.joinpath(f"profile/records/{platform.system().lo
244
244
  # app_urls = [item['app_url'] for item in self.data]
245
245
  # from concurrent.futures import ThreadPoolExecutor
246
246
  # with ThreadPoolExecutor(max_workers=20) as executor:
247
- # _res = list(executor.map(PrecheckedCloudInstaller.install_cli_apps, app_urls))
247
+ # _res = list(executor.map(precheckedPackages.install_cli_apps, app_urls))
248
248
  # else:
249
249
  # app_items = [item for item in self.data if item['app_name'] == name]
250
250
  # if not app_items:
251
251
  # raise ValueError(f"App '{name}' not found in data")
252
252
  # app_url = app_items[0]['app_url']
253
- # _res = PrecheckedCloudInstaller.install_cli_apps(app_url=app_url)
253
+ # _res = precheckedPackages.install_cli_apps(app_url=app_url)
254
254
 
255
255
  # # print("\n" * 3)
256
256
  # # for item_flag, item_name in zip(res, self.df["app_name"]):
@@ -456,7 +456,7 @@
456
456
  },
457
457
  {
458
458
  "appName": "starship",
459
- "repoURL": "starship/starship",
459
+ "repoURL": "https://github.com/starship/starship",
460
460
  "doc": "⭐️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!",
461
461
  "filenameTemplate": {
462
462
  "amd64": {
@@ -147,17 +147,14 @@ def apply_mapper(choice: Optional[str] = None):
147
147
  """)
148
148
 
149
149
 
150
- def main(choice: Optional[str] = None):
150
+ def main():
151
151
  console = Console()
152
152
  print("\n")
153
-
154
153
  console.rule("[bold blue]🔗 CREATING SYMLINKS 🔗")
155
- apply_mapper(choice=choice)
156
-
154
+ apply_mapper(choice=None)
157
155
  print("\n")
158
156
  console.rule("[bold green]🐚 CREATING SHELL PROFILE 🐚")
159
157
  create_default_shell_profile()
160
-
161
158
  print(f"""
162
159
  {"=" * 80}
163
160
  ✨ Configuration setup complete! ✨
@@ -98,7 +98,7 @@ echo "🚀 Activating Python virtual environment..."
98
98
 
99
99
  # Install all essential development applications
100
100
  echo "📥 Installing essential development applications..."
101
- python -m fire machineconfig.scripts.python.devops_devapps_install main --which=AllEssentials
101
+ python -m fire machineconfig.scripts.python.devops_devapps_install main --which=essentials
102
102
 
103
103
  # Reload shell configuration
104
104
  echo "🔄 Reloading shell configuration..."
@@ -28,7 +28,7 @@ def main(which: Optional[Options] = None):
28
28
  options = options_list
29
29
  if which is None:
30
30
  try:
31
- choice_key = choose_from_options(msg="", options=options, header="🛠️ DEVOPS", default=options[0], multi=False)
31
+ choice_key = choose_from_options(msg="", options=options, header="🛠️ DEVOPS", default=options[0], multi=False, fzf=False)
32
32
  except KeyboardInterrupt:
33
33
  console.print(Panel("❌ Operation cancelled by user", title_align="left", border_style="red", width=BOX_WIDTH))
34
34
  return
@@ -9,7 +9,7 @@ from machineconfig.utils.installer import get_installers, install_all
9
9
  from platform import system
10
10
  from typing import Any, Optional, Literal, TypeAlias, get_args, Annotated
11
11
 
12
- WHICH_CAT: TypeAlias = Literal["AllEssentials", "EssentialsAndOthers", "SystemInstallers", "PrecheckedCloudInstaller"]
12
+ WHICH_CAT: TypeAlias = Literal["essentials", "essentialsPlus", "systymPackages", "precheckedPackages"]
13
13
 
14
14
 
15
15
  def main_with_parser():
@@ -53,8 +53,8 @@ def main(which: Annotated[Optional[str], typer.Argument(help=f"Choose a category
53
53
  print(a_message)
54
54
  return None
55
55
 
56
- # interactive installation
57
- installers = get_installers(system=system(), dev=False) + get_installers(system=system(), dev=True)
56
+ # interactive installation - get all installers including dev ones
57
+ installers = get_installers(system=system(), dev=True)
58
58
 
59
59
  # Check installed programs with progress indicator
60
60
  with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress:
@@ -66,7 +66,7 @@ def main(which: Annotated[Optional[str], typer.Argument(help=f"Choose a category
66
66
 
67
67
  options += list(get_args(WHICH_CAT))
68
68
  # print("s"*1000)
69
- program_names = choose_from_options(multi=True, msg="", options=options, header="🚀 CHOOSE DEV APP", default="AllEssentials")
69
+ program_names = choose_from_options(multi=True, msg="", options=options, header="🚀 CHOOSE DEV APP", default="essentials", fzf=True)
70
70
 
71
71
  total_commands = ""
72
72
  installation_messages: list[str] = []
@@ -103,14 +103,14 @@ def get_programs_by_category(program_name: WHICH_CAT):
103
103
  ┃ 📦 Installing Category: {program_name}
104
104
  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
105
105
  match program_name:
106
- case "AllEssentials" | "EssentialsAndOthers":
106
+ case "essentials" | "essentialsPlus":
107
107
  installers_ = get_installers(dev=False, system=system())
108
- if program_name == "EssentialsAndOthers":
108
+ if program_name == "essentialsPlus":
109
109
  installers_ += get_installers(dev=True, system=system())
110
110
  install_all(installers=installers_)
111
111
  program = ""
112
112
 
113
- case "SystemInstallers":
113
+ case "systymPackages":
114
114
  if system() == "Windows":
115
115
  options_system = parse_apps_installer_windows(LIBRARY_ROOT.joinpath("setup_windows/apps.ps1").read_text(encoding="utf-8"))
116
116
  elif system() == "Linux":
@@ -119,7 +119,7 @@ def get_programs_by_category(program_name: WHICH_CAT):
119
119
  options_system = {**options_system_1, **options_system_2}
120
120
  else:
121
121
  raise NotImplementedError(f"❌ System {system()} not supported")
122
- program_names = choose_from_options(multi=True, msg="", options=sorted(list(options_system.keys())), header="🚀 CHOOSE DEV APP")
122
+ program_names = choose_from_options(multi=True, msg="", options=sorted(list(options_system.keys())), header="🚀 CHOOSE DEV APP", fzf=True)
123
123
  program = ""
124
124
  for name in program_names:
125
125
  print(f"""
@@ -149,12 +149,12 @@ def get_programs_by_category(program_name: WHICH_CAT):
149
149
  # print(f"Installing {name}")
150
150
  # sub_program = installers[idx].install_robust(version=None) # finish the task
151
151
 
152
- case "PrecheckedCloudInstaller":
153
- # from machineconfig.jobs.python.check_installations import PrecheckedCloudInstaller
154
- # ci = PrecheckedCloudInstaller()
155
- # ci.download_safe_apps(name="AllEssentials")
152
+ case "precheckedPackages":
153
+ # from machineconfig.jobs.python.check_installations import precheckedPackages
154
+ # ci = precheckedPackages()
155
+ # ci.download_safe_apps(name="essentials")
156
156
  # program = ""
157
- raise NotImplementedError("PrecheckedCloudInstaller is not implemented yet.")
157
+ raise NotImplementedError("precheckedPackages is not implemented yet.")
158
158
  return program
159
159
 
160
160
 
@@ -1,4 +1,4 @@
1
1
 
2
- [manager]
2
+ [mgr]
3
3
  show_hidden = true
4
4
  ratio = [1, 3, 5]
@@ -118,7 +118,7 @@ choice=${choice:-y}
118
118
  if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
119
119
  echo """ 🔧 Installing CLI applications...
120
120
  """
121
- uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_devapps_install main --which=AllEssentials
121
+ uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_devapps_install main --which=essentials
122
122
  . $HOME/.bashrc
123
123
  else
124
124
  echo """ ⏭️ Skipping CLI apps installation
@@ -120,7 +120,7 @@ if (-not $yesAll) {
120
120
  }
121
121
 
122
122
  } else {
123
- uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_devapps_install main --which=AllEssentials
123
+ uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_devapps_install main --which=essentials
124
124
  }
125
125
 
126
126
 
machineconfig/utils/io.py CHANGED
@@ -77,7 +77,6 @@ def read_ini(path: "Path", encoding: Optional[str] = None):
77
77
 
78
78
  def read_json(path: "Path", r: bool = False, **kwargs: Any) -> Any: # return could be list or dict etc
79
79
  import json
80
-
81
80
  try:
82
81
  mydict = json.loads(Path(path).read_text(encoding="utf-8"), **kwargs)
83
82
  except Exception:
@@ -51,13 +51,13 @@ def choose_from_options[T](msg: str, options: Iterable[T], multi: Literal[True],
51
51
  def choose_from_options[T](msg: str, options: Iterable[T], multi: bool, custom_input: bool = True, header: str = "", tail: str = "", prompt: str = "", default: Optional[T] = None, fzf: bool = False, ) -> Union[T, list[T]]:
52
52
  # TODO: replace with https://github.com/tmbo/questionary
53
53
  # # also see https://github.com/charmbracelet/gum
54
- tool_name = "fzf"
55
54
  options_strings: list[str] = [str(x) for x in options]
56
55
  default_string = str(default) if default is not None else None
57
56
  console = Console()
58
- if fzf and check_tool_exists(tool_name):
57
+ fzf_exists = check_tool_exists("fzf")
58
+ # print("\n" * 10, f"{fzf=}, {fzf_exists=}", "\n" * 10)
59
+ if fzf and fzf_exists:
59
60
  from pyfzf.pyfzf import FzfPrompt
60
-
61
61
  fzf_prompt = FzfPrompt()
62
62
  nl = "\n"
63
63
  choice_string_multi: list[str] = fzf_prompt.prompt(choices=options_strings, fzf_options=("--multi" if multi else "") + f' --prompt "{prompt.replace(nl, " ")}" ') # --border-label={msg.replace(nl, ' ')}")
@@ -86,9 +86,9 @@ def choose_from_options[T](msg: str, options: Iterable[T], multi: bool, custom_i
86
86
 
87
87
  console.print(txt_panel)
88
88
  if default is not None:
89
- choice_string = input(f"{prompt}\nEnter option number or hit enter for default choice: ")
89
+ choice_string = input(f"{prompt}\nEnter option number/name or hit enter for default choice: ")
90
90
  else:
91
- choice_string = input(f"{prompt}\nEnter option number: ")
91
+ choice_string = input(f"{prompt}\nEnter option number/name: ")
92
92
 
93
93
  if choice_string == "":
94
94
  if default_string is None:
@@ -112,7 +112,7 @@ def choose_from_options[T](msg: str, options: Iterable[T], multi: bool, custom_i
112
112
  # raise ValueError(f"Unknown choice. {choice_string}") from ie
113
113
  console.print(Panel(f"❓ Unknown choice: '{choice_string}'", title="Error", expand=False))
114
114
  return choose_from_options(msg=msg, options=options, header=header, tail=tail, prompt=prompt, default=default, fzf=fzf, multi=multi, custom_input=custom_input)
115
- except TypeError as te: # int(choice_string) failed due to # either the number is invalid, or the input is custom.
115
+ except (TypeError, ValueError) as te: # int(choice_string) failed due to # either the number is invalid, or the input is custom.
116
116
  if choice_string in options_strings: # string input
117
117
  choice_idx = options_strings.index(choice_one) # type: ignore
118
118
  choice_one = list(options)[choice_idx]
@@ -861,6 +861,7 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
861
861
  transfers: int = 10,
862
862
  root: Optional[str] = "myhome",
863
863
  ) -> "PathExtended":
864
+ _ = transfers
864
865
  to_del = []
865
866
  localpath = self.expanduser().absolute() if not self.exists() else self
866
867
  if zip:
@@ -873,21 +874,17 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
873
874
  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)
874
875
  else:
875
876
  rp = PathExtended(remotepath)
876
- rclone_cmd = f"""rclone copyto '{localpath.as_posix()}' '{cloud}:{rp.as_posix()}' {"--progress" if verbose else ""} --transfers={transfers}"""
877
- from machineconfig.utils.terminal import Terminal
878
877
 
879
- if verbose:
880
- print(f"{'⬆️' * 5} UPLOADING with `{rclone_cmd}`")
881
- shell_to_use = "powershell" if sys.platform == "win32" else "bash"
882
- res = Terminal(stdout=None if verbose else subprocess.PIPE).run(rclone_cmd, shell=shell_to_use).capture()
878
+ from rclone_python import rclone
879
+ rclone.copyto(in_path=localpath.as_posix(), out_path=f"{cloud}:{rp.as_posix()}", )
883
880
  _ = [item.delete(sure=True) for item in to_del]
884
- assert res.is_successful(strict_err=False, strict_returcode=True), res.print(capture=False, desc="Cloud Storage Operation")
885
881
  if verbose:
886
882
  print(f"{'⬆️' * 5} UPLOAD COMPLETED.")
887
883
  if share:
888
884
  if verbose:
889
885
  print("🔗 SHARING FILE")
890
886
  shell_to_use = "powershell" if sys.platform == "win32" else "bash"
887
+ from machineconfig.utils.terminal import Terminal
891
888
  res = Terminal().run(f"""rclone link '{cloud}:{rp.as_posix()}'""", shell=shell_to_use).capture()
892
889
  tmp = res.op2path(strict_err=False, strict_returncode=False)
893
890
  if tmp is None:
@@ -916,6 +913,7 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
916
913
  overwrite: bool = True,
917
914
  merge: bool = False,
918
915
  ):
916
+ _ = verbose, transfers
919
917
  if remotepath is None:
920
918
  remotepath = self.get_remote_path(root=root, os_specific=os_specific, rel2home=rel2home, strict=strict)
921
919
  remotepath += ".zip" if unzip else ""
@@ -925,16 +923,11 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
925
923
  localpath = self.expanduser().absolute()
926
924
  localpath += ".zip" if unzip else ""
927
925
  localpath += ".enc" if decrypt else ""
928
- rclone_cmd = f"""rclone copyto '{cloud}:{remotepath.as_posix()}' '{localpath.as_posix()}' {"--progress" if verbose else ""} --transfers={transfers}"""
929
- from machineconfig.utils.terminal import Terminal
930
-
931
- if verbose:
932
- print(f"{'⬇️' * 5} DOWNLOADING with `{rclone_cmd}`")
933
- shell_to_use = "powershell" if sys.platform == "win32" else "bash"
934
- res = Terminal(stdout=None if verbose else subprocess.PIPE).run(rclone_cmd, shell=shell_to_use)
935
- success = res.is_successful(strict_err=False, strict_returcode=True)
936
- if not success:
937
- res.print(capture=False, desc="Cloud Storage Operation")
926
+ from rclone_python import rclone
927
+ try:
928
+ rclone.copyto(in_path=f"{cloud}:{remotepath.as_posix()}", out_path=localpath.as_posix(), )
929
+ except Exception as e:
930
+ print("to_cloud error", e)
938
931
  return None
939
932
  if decrypt:
940
933
  localpath = localpath.decrypt(key=key, pwd=pwd, inplace=True)
@@ -946,17 +939,23 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
946
939
  tmp_path_obj = self.expanduser().absolute()
947
940
  tmp_path_obj.parent.mkdir(parents=True, exist_ok=True)
948
941
  tmp1, tmp2 = tmp_path_obj.as_posix(), self.get_remote_path(root=root, os_specific=os_specific).as_posix()
949
- source, target = (tmp1, f"{cloud}:{tmp2 if rel2home else tmp1}") if sync_up else (f"{cloud}:{tmp2 if rel2home else tmp1}", tmp1) # in bisync direction is irrelavent.
942
+ if sync_up:
943
+ source = tmp1
944
+ target = f"{cloud}:{tmp2 if rel2home else tmp1}"
945
+ else:
946
+ source = f"{cloud}:{tmp2 if rel2home else tmp1}" # in bisync direction is irrelavent.
947
+ target = tmp1
948
+
950
949
  if not sync_down and not sync_up:
951
950
  _ = print(f"SYNCING 🔄️ {source} {'<>' * 7} {target}`") if verbose else None
952
951
  rclone_cmd = f"""rclone bisync '{source}' '{target}' --resync --remove-empty-dirs """
953
952
  else:
954
953
  print(f"SYNCING 🔄️ {source} {'>' * 15} {target}`")
955
954
  rclone_cmd = f"""rclone sync '{source}' '{target}' """
955
+
956
956
  rclone_cmd += f" --progress --transfers={transfers} --verbose"
957
957
  rclone_cmd += " --delete-during" if delete else ""
958
958
  from machineconfig.utils.terminal import Terminal
959
-
960
959
  if verbose:
961
960
  print(rclone_cmd)
962
961
  shell_to_use = "powershell" if sys.platform == "win32" else "bash"
@@ -965,4 +964,5 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
965
964
  if not success:
966
965
  res.print(capture=False, desc="Cloud Storage Operation")
967
966
  return None
967
+
968
968
  return self
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 3.88
3
+ Version: 3.90
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -43,7 +43,7 @@ machineconfig/jobs/linux/msc/cli_agents.sh,sha256=o4DGuavYPfRuvS28r9nyvS2_xk-Ibq
43
43
  machineconfig/jobs/linux/msc/lid.sh,sha256=09LeoSaXCGjCn7YxPcIFQpHroYdglJlEtFU2agarh3I,1302
44
44
  machineconfig/jobs/linux/msc/network.sh,sha256=dmISsh0hioDheinqee3qHfo2k7ClFx6G_GfGDxuflmc,1796
45
45
  machineconfig/jobs/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
- machineconfig/jobs/python/check_installations.py,sha256=o0mrZ-ivdED_7Od1tdtwJ4XSQRfiY6d_HciXLh1PXtY,11126
46
+ machineconfig/jobs/python/check_installations.py,sha256=ksuENfJg0NAo1mWLRnsj1MpZw7Ee7eKw1nWyUQeO7fg,11096
47
47
  machineconfig/jobs/python/create_bootable_media.py,sha256=KKtcPk0rFLQc4eNVP6nbeYX-P7Gpqi0HvfIcUM6rVVs,827
48
48
  machineconfig/jobs/python/python_cargo_build_share.py,sha256=RDe1QiTH3vLQ1wjN0kE5NxMIqwB-_WHz6O3svyuH_VE,2133
49
49
  machineconfig/jobs/python/python_ve_symlink.py,sha256=SgLPZGtnhZ8L5ms2zEohQkJAzPeBkI3mB4DBHjAmzN0,850
@@ -83,7 +83,7 @@ machineconfig/jobs/python_custom_installers/scripts/linux/vscode.sh,sha256=8S0nZ
83
83
  machineconfig/jobs/python_custom_installers/scripts/linux/warp-cli.sh,sha256=PVNLeYWdh3XEFllCVZDYIHBI42btjGlH5jbyXjJGz-Y,3033
84
84
  machineconfig/jobs/python_custom_installers/scripts/linux/wezterm.sh,sha256=m697rRoIIVk-f8JdI1YQmphk-JWpMc5IYbD5YaQ3SeQ,1874
85
85
  machineconfig/jobs/python_generic_installers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- machineconfig/jobs/python_generic_installers/config.json,sha256=FRzNOgyChrtH1YNcmBQi-SPPrsrvw39imUfPDtTYgCY,19930
86
+ machineconfig/jobs/python_generic_installers/config.json,sha256=8oxCQANAy5lFVGUPNjavZT0ro8Su-dGj1fJael3Ohbc,19949
87
87
  machineconfig/jobs/python_generic_installers/config.json.bak,sha256=dkrLpAs-xJ1gvpFd42yuWGoRkkE1MG-8fAhrMNrxt34,20678
88
88
  machineconfig/jobs/python_generic_installers/dev/config.archive.json,sha256=1rZO1-5lxtbVGuXXoTTuvWjs54xlHHIAIIZYDAy8FSA,823
89
89
  machineconfig/jobs/python_generic_installers/dev/config.json,sha256=ItwFXaLlIGwBS2SfmYwsqYU86fAKQmCfLD7vaneZgPA,26928
@@ -112,7 +112,7 @@ machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1,sha256=-7pElYi
112
112
  machineconfig/jobs/windows/msc/cli_agents.bat,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
113
  machineconfig/jobs/windows/msc/cli_agents.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
114
  machineconfig/profile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
- machineconfig/profile/create.py,sha256=X0hk-G8TCC1U8qGQSdc-ktQYb9caO2pEjvihFxoH1Hk,6475
115
+ machineconfig/profile/create.py,sha256=Vn-0C1FslpHOYS2N9jmuYl00l34Ah2VnFE36pRHznuE,6442
116
116
  machineconfig/profile/shell.py,sha256=rseM8irNSv8xAUj8pDucjCuuqJZoNtpSgKt9JOntoM0,9215
117
117
  machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
118
118
  machineconfig/profile/records/linux/apps_summary_report.csv,sha256=pw9djvaRUPalKDLn2sl3odcbD2_Zx3aEupsQ8UPfaaY,2738
@@ -120,7 +120,7 @@ machineconfig/profile/records/linux/apps_summary_report.md,sha256=l77oofA6Rliql0
120
120
  machineconfig/profile/records/windows/apps_summary_report.csv,sha256=nN5BoACBqXgKNczm2t5KaCLdDnxFCIscX8iRkWBm0a4,47
121
121
  machineconfig/profile/records/windows/apps_summary_report.md,sha256=O5hmAcpObaLmOjYLvHg9kkPJryqFwFaP8OsmfPwfR1o,137
122
122
  machineconfig/scripts/__init__.py,sha256=v0cMjnaIo39C3ltLiTf1S0fCTMAqWtEU7zrVenUj4PQ,71
123
- machineconfig/scripts/cloud/init.sh,sha256=yNsseCLMceO50Eg72ra6_NIJCxkGZmpmos1EXe-mvzY,4649
123
+ machineconfig/scripts/cloud/init.sh,sha256=zPn3_hwsHduaRxHs97TTn-BoLaJS44I2XwlLmZudQ80,4646
124
124
  machineconfig/scripts/linux/choose_wezterm_theme,sha256=T7_vS-XvIZErRkfqtlyoZuHEVKFQQwhIeQMFIVTjtxg,145
125
125
  machineconfig/scripts/linux/cloud_copy,sha256=IU5TO7roSUYB-U4Km9bhAZOvlUr4nRJtJf4tqCPIPAs,100
126
126
  machineconfig/scripts/linux/cloud_mount,sha256=QnDUPUv9q3V14PONOwM4tAPHqOopF_uvjEN1tL24jZA,102
@@ -165,11 +165,11 @@ machineconfig/scripts/python/cloud_mount.py,sha256=RFMzRUep2D5HtVXANIi-pab3EkI-W
165
165
  machineconfig/scripts/python/cloud_repo_sync.py,sha256=GBhdUu9BJwhLYmhxxtvqJGLy7xKdQcnH9kkL4jcbzEE,9502
166
166
  machineconfig/scripts/python/cloud_sync.py,sha256=RWGpAfJ9fnN18yNBSgN44dzA38Hmd4879JL5r2pcyrM,3514
167
167
  machineconfig/scripts/python/croshell.py,sha256=tYc8MUVcbvSH8JZxc273z9Kr8LitoKxI7ZdFN-_Ms-s,8945
168
- machineconfig/scripts/python/devops.py,sha256=ws9AzqD-poLndODMFTe5bii3JNsPMsi0BuJJ11ZbPSw,5658
168
+ machineconfig/scripts/python/devops.py,sha256=GD1FLfp76E5bhcs9XhC3Fa6XfMOdfv_qu8kMBOjVtXE,5669
169
169
  machineconfig/scripts/python/devops_add_identity.py,sha256=JfN3ZrYMCgmt4ks_VCfnV9BIIHAsOYO3E0W0wZ15FR8,3791
170
170
  machineconfig/scripts/python/devops_add_ssh_key.py,sha256=KaoX83KltBsmutfKhSfZjd7nP_R1hJ2OLAWRhbswO7o,6889
171
171
  machineconfig/scripts/python/devops_backup_retrieve.py,sha256=jZe5Vki7E2GCMG8hvqUZeOONFC4cNzISoGzq_dMG4GA,5601
172
- machineconfig/scripts/python/devops_devapps_install.py,sha256=Q2suPkfwwdtIN3mjxH6tGZLYC7tZVxdxrGW7d9phiPA,9972
172
+ machineconfig/scripts/python/devops_devapps_install.py,sha256=Do79uYsZKmLuEOxwj54U1W8uLcOluxRuCpWCdv7nN2E,9926
173
173
  machineconfig/scripts/python/devops_update_repos.py,sha256=c5qBc9cuTGDEqDHufkjDT4d_vvJsswv3tlqk9MAulYk,8063
174
174
  machineconfig/scripts/python/dotfile.py,sha256=SRcX-9Ak1jRvF-killBTTm2IWcsNxfiLucH6ZsytAFA,2202
175
175
  machineconfig/scripts/python/fire_agents.py,sha256=Hn27ZGWBRlu3mDyJPf_qg_m0i3AbWbWpA-Ce1VeZjUY,9207
@@ -362,7 +362,7 @@ machineconfig/settings/tmux/.tmux.conf,sha256=55qyCgKHOyg70kJ42GXrHwqAAtRtnsWtdH
362
362
  machineconfig/settings/wsl/.wslconfig,sha256=wL4oWxRw_0vLQXheSLNuGUQqypqEKlVqYALosPI9jhY,1279
363
363
  machineconfig/settings/yazi/keymap.toml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
364
364
  machineconfig/settings/yazi/theme.toml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
365
- machineconfig/settings/yazi/yazi.toml,sha256=VyykCmMioYFUBVnM7ANzOVQvo37F0yLeaakVrfN_SDE,48
365
+ machineconfig/settings/yazi/yazi.toml,sha256=8zn-7VnGernC7fN27va8fvh8Q6UkVwtXYfBHjdTBcF0,44
366
366
  machineconfig/settings/zed/settings.json,sha256=WYuoJycLVhM1-_Haq2VlERds3W7LZFzJ1qJp7lwhnos,789
367
367
  machineconfig/settings/zellij/config.kdl,sha256=J1FOE2hSinVG26LPlvMhTBWKjZAw_2wcoSEZrwKgn5M,10329
368
368
  machineconfig/settings/zellij/config.orig.kdl,sha256=0KyYigBGUD5GdTmH9pE8f66LIFnll44Xz7s9EYD1z8c,10349
@@ -379,7 +379,7 @@ machineconfig/setup_linux/others/openssh-server_add_pub_key.sh,sha256=UiJcD1o4Ue
379
379
  machineconfig/setup_linux/web_shortcuts/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
380
380
  machineconfig/setup_linux/web_shortcuts/ascii_art.sh,sha256=RWcxH_Db7WHH37PclYmc92o6zAS557wGZxcYTuyTUZ0,3550
381
381
  machineconfig/setup_linux/web_shortcuts/croshell.sh,sha256=X9-B1cVptbaFWaWTA-2ELNQx_2ktxu7ZVe48RvpCmkU,316
382
- machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=HK48BqvrqwkRq4veqQkgbNNqXkdjInacyLq5xyp4o3M,7722
382
+ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=EFu176E4T9wKm7MzRPiMaiItiUCHuN-SSTkNqnFOVgU,7719
383
383
  machineconfig/setup_linux/web_shortcuts/ssh.sh,sha256=k6BAY-zAWsi1beOMiZODxw4VOjZCTABZu__gxSET1eU,1924
384
384
  machineconfig/setup_windows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
385
385
  machineconfig/setup_windows/others/docker.ps1,sha256=M8NfsSxH8YlmY92J4rSe1xWOwTW8IFrdgb8cI8Riu2E,311
@@ -387,7 +387,7 @@ machineconfig/setup_windows/others/obs.ps1,sha256=2andchcXpxS3rqZjGaMpY5VShxTAKW
387
387
  machineconfig/setup_windows/web_shortcuts/all.ps1,sha256=L03JJ4Jua_bzgtF3kuDOkuQ-Nqaj_ZcV3CFEkCHD1WI,908
388
388
  machineconfig/setup_windows/web_shortcuts/ascii_art.ps1,sha256=pUVTtgKHOdgaK3hxz7JoMZzTyQ7vm2RfE_OJgB7e4cw,1270
389
389
  machineconfig/setup_windows/web_shortcuts/croshell.ps1,sha256=cTQnegGLGYhuFY3YuuAj2ortN__adA2dznk2E737h4A,644
390
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=m0KplQ3RwezZGRfV0enEzNJ2FRbSGL2LS1uXnRfCWkw,7200
390
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=MEdWzltbnEOMYaqMAx8-TDy_VAs9svx5cZApqgio8-c,7197
391
391
  machineconfig/setup_windows/web_shortcuts/ssh.ps1,sha256=Tj9axEugJE7I3AQ0w1eUGLPb8ufME5jvU5S7VUjlLJE,424
392
392
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
393
393
  machineconfig/setup_windows/wt_and_pwsh/install_fonts.ps1,sha256=JsQfGAMkvirhiUmBNOifMlbum2PfHSs0-Akgj-J-WZw,3177
@@ -397,11 +397,11 @@ machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
397
397
  machineconfig/utils/accessories.py,sha256=W_9dLzjwNTW5JQk_pe3B2ijQ1nA2-8Kdg2r7VBtzgQs,4340
398
398
  machineconfig/utils/code.py,sha256=pKPHInKgXJWeACVbxuE7sMdYeZCbNttaYCsfonGhFfc,4464
399
399
  machineconfig/utils/installer.py,sha256=_sjaIqqHN-7n3mYD-iOIli6Bn2792EjOwE-JC528Qfo,11936
400
- machineconfig/utils/io.py,sha256=6LuQMT7CG26atx5_0P30Ru0zHgLwuvpKHfZLUWIjS-U,2873
400
+ machineconfig/utils/io.py,sha256=ZXB3aataS1IZ_0WMcCRSmoN1nbkvEO-bWYcs-TpngqU,2872
401
401
  machineconfig/utils/links.py,sha256=riNUrG8aGElRszdOPOic4M2AyOcpdcth_-y8JEiZpJ4,10253
402
402
  machineconfig/utils/notifications.py,sha256=vvdsY5IX6XEiILTnt5lNyHxhCi0ljdGX2T_67VRfrG4,9009
403
- machineconfig/utils/options.py,sha256=Fn5Ka3cUtJrJEwjmr0iRrETU6dEtM4y8-lvuYyaSetw,9199
404
- machineconfig/utils/path_extended.py,sha256=jqkVr_leG6mQsDBG84Hu0SjMPtJ7jxODryi85c45jXE,52518
403
+ machineconfig/utils/options.py,sha256=aEFeVbHfbX0d3VjjZcUAQA0jSOsKhKhr7P0kGHYhPd0,9284
404
+ machineconfig/utils/path_extended.py,sha256=nTETtTxzNaxdrapIH3WzkR__b-1k6Lx7SpRAXqmIJN4,51793
405
405
  machineconfig/utils/path_helper.py,sha256=jqOf3TAlw5cqSp4HBAlOqjAR_bzC8_fvjA-_-CooI6Y,8030
406
406
  machineconfig/utils/procs.py,sha256=KjEbrwfbdoi5IBM518scxMDVi7NxTZLHuYiKmwdGlzg,11393
407
407
  machineconfig/utils/scheduler.py,sha256=bUHDviS_HE9_6LaA1k9Nnfz5rr2FJIfrk5qO2FJ-oUs,15119
@@ -422,8 +422,8 @@ machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=CCs5ebomW1ac
422
422
  machineconfig/utils/schemas/installer/installer_types.py,sha256=iAzcALc9z_FAQE9iuGHfX6Z0B1_n3Gt6eC0d6heYik0,599
423
423
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=M1ZFCz_kjRZPhxM19rIYUDR5lDDpwa09odR_ihtIFq0,1932
424
424
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
425
- machineconfig-3.88.dist-info/METADATA,sha256=9lxn7WjqHpXrQZf633ZzqR190I1ZPVSqK0arz77rq_E,6998
426
- machineconfig-3.88.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
427
- machineconfig-3.88.dist-info/entry_points.txt,sha256=rSx_9gXd2stziS1OkNy__jF647hrRxRiF6zolLUELc4,1153
428
- machineconfig-3.88.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
429
- machineconfig-3.88.dist-info/RECORD,,
425
+ machineconfig-3.90.dist-info/METADATA,sha256=mh8TOD9DhsedU4KSQ61JhKaWCKpc4KXKm23-wD8vmOk,6998
426
+ machineconfig-3.90.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
427
+ machineconfig-3.90.dist-info/entry_points.txt,sha256=rSx_9gXd2stziS1OkNy__jF647hrRxRiF6zolLUELc4,1153
428
+ machineconfig-3.90.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
429
+ machineconfig-3.90.dist-info/RECORD,,