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

@@ -208,7 +208,7 @@
208
208
  {
209
209
  "appName": "croc",
210
210
  "repoURL": "https://github.com/schollz/croc",
211
- "doc": "🦎 Easily and securely send things from one computer to another",
211
+ "doc": "🦎 Easily and securely send and share things from one computer to another",
212
212
  "fileNamePattern": {
213
213
  "amd64": {
214
214
  "linux": "croc_{version}_Linux-64bit.tar.gz",
@@ -273,6 +273,23 @@
273
273
  }
274
274
  }
275
275
  },
276
+ {
277
+ "appName": "asciinema",
278
+ "repoURL": "https://github.com/asciinema/asciinema",
279
+ "doc": "🎥 Terminal session recorder",
280
+ "fileNamePattern": {
281
+ "amd64": {
282
+ "linux": "asciinema-x86_64-unknown-linux-gnu",
283
+ "windows": null,
284
+ "macos": "asciinema-x86_64-apple-darwin"
285
+ },
286
+ "arm64": {
287
+ "linux": null,
288
+ "windows": null,
289
+ "macos": null
290
+ }
291
+ }
292
+ },
276
293
  {
277
294
  "appName": "lolcatjs",
278
295
  "repoURL": "CMD",
@@ -1,39 +1,48 @@
1
1
  #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- RANDOM_NAME=$(date +%s%N | sha256sum | head -c 16)
5
- OP_DIR="$HOME/tmp_results/tmp_scripts/machineconfig"
6
- OP_PROGRAM_PATH="$OP_DIR/${RANDOM_NAME}.sh"
7
- export OP_PROGRAM_PATH
8
-
9
- # ANSI color/style codes
10
- BOLD="\033[1m"
11
- RESET="\033[0m"
12
- GREEN="\033[32m"
13
- YELLOW="\033[33m"
14
- BLUE="\033[34m"
15
- RED="\033[31m"
16
-
17
- timestamp=$(date -u +"%Y-%m-%d %H:%M:%SZ")
18
-
19
- printf "%b\n" "${BOLD}${BLUE}🛠️ machineconfig — running mcfg${RESET}"
20
- printf "%b\n" "${BLUE}Timestamp:${RESET} ${timestamp}"
21
- printf "%b\n" "${BLUE}Op program path:${RESET} ${OP_PROGRAM_PATH}"
22
-
23
- # Forward arguments to the mcfg command
24
- mcfg "$@"
25
-
26
- if [[ -f "$OP_PROGRAM_PATH" ]]; then
27
- printf "%b\n" "${GREEN}✅ Found op program:${RESET} ${OP_PROGRAM_PATH}"
28
- bat --style=plain --paging=never "$OP_PROGRAM_PATH"
29
- printf "%b\n" "${GREEN}▶ Running...${RESET}"
30
- . "$OP_PROGRAM_PATH"
31
- status=$?
32
- if [[ $status -eq 0 ]]; then
33
- printf "%b\n" "${GREEN}✅ Completed successfully (exit ${status})${RESET}"
2
+
3
+
4
+ wrap_in_op_program() {
5
+ # set -euo pipefail
6
+
7
+ # ANSI color/style codes
8
+ BOLD="\033[1m"
9
+ RESET="\033[0m"
10
+ GREEN="\033[32m"
11
+ YELLOW="\033[33m"
12
+ BLUE="\033[34m"
13
+ RED="\033[31m"
14
+
15
+ local command="$1"
16
+ shift
17
+ local RANDOM_NAME=$(date +%s%N | sha256sum | head -c 16)
18
+ local OP_DIR="$HOME/tmp_results/tmp_scripts/machineconfig"
19
+ local OP_PROGRAM_PATH="$OP_DIR/${RANDOM_NAME}.sh"
20
+ export OP_PROGRAM_PATH
21
+ local timestamp=$(date -u +"%Y-%m-%d %H:%M:%SZ")
22
+ printf "%b\n" "${BOLD}${BLUE}🛠️ machineconfig — running ${command}${RESET}"
23
+ printf "%b\n" "${BLUE}Timestamp:${RESET} ${timestamp}"
24
+ printf "%b\n" "${BLUE}Op program path:${RESET} ${OP_PROGRAM_PATH}"
25
+
26
+ # Forward arguments to the command
27
+ "$command" "$@"
28
+
29
+ if [[ -f "$OP_PROGRAM_PATH" ]]; then
30
+ printf "%b\n" "${GREEN}✅ Found op program:${RESET} ${OP_PROGRAM_PATH}"
31
+ bat --style=plain --paging=never "$OP_PROGRAM_PATH"
32
+ printf "%b\n" "${GREEN}▶ Running...${RESET}"
33
+ . "$OP_PROGRAM_PATH"
34
+ status=$?
35
+ if [[ $status -eq 0 ]]; then
36
+ printf "%b\n" "${GREEN}✅ Completed successfully (exit ${status})${RESET}"
37
+ else
38
+ printf "%b\n" "${YELLOW}⚠️ Program exited with status ${status}${RESET}"
39
+ fi
34
40
  else
35
- printf "%b\n" "${YELLOW}⚠️ Program exited with status ${status}${RESET}"
41
+ printf "%b\n" "${YELLOW}⚠️ No op program found at: ${OP_PROGRAM_PATH}${RESET}"
36
42
  fi
37
- else
38
- printf "%b\n" "${YELLOW}⚠️ No op program found at: ${OP_PROGRAM_PATH}${RESET}"
43
+ }
44
+
45
+ if [[ $# -gt 0 ]]; then
46
+ wrap_in_op_program "$@"
39
47
  fi
48
+
@@ -2,7 +2,7 @@
2
2
  # /// script
3
3
  # requires-python = ">=3.13"
4
4
  # dependencies = [
5
- # "machineconfig>=6.87",
5
+ # "machineconfig>=6.89",
6
6
  # "textual",
7
7
  # "pyperclip",
8
8
  # ]
@@ -35,7 +35,6 @@ def route(args: FireJobArgs, fire_args: str = "") -> None:
35
35
  else:
36
36
  choice_file = path_obj
37
37
 
38
-
39
38
  repo_root = get_repo_root(Path(choice_file))
40
39
  print(f"💾 Selected file: {choice_file}.\nRepo root: {repo_root}")
41
40
  if args.marimo:
@@ -46,7 +46,7 @@ def path():
46
46
  uv_with = ["textual"]
47
47
  uv_project_dir = None
48
48
  if not Path.home().joinpath("code/machineconfig").exists():
49
- uv_with.append("machineconfig>=6.87")
49
+ uv_with.append("machineconfig>=6.89")
50
50
  else:
51
51
  uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
52
52
  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])
@@ -3,35 +3,42 @@ import typer
3
3
  from typing import Optional, Annotated
4
4
 
5
5
 
6
+ def copy_both_assets():
7
+ import machineconfig.profile.create_helper as create_helper
8
+ create_helper.copy_assets_to_machine(which="scripts")
9
+ create_helper.copy_assets_to_machine(which="settings")
10
+
11
+
6
12
  def update(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-na", help="Copy (overwrite) assets to the machine after the update")] = False):
7
13
  """🔄 UPDATE uv and machineconfig"""
8
14
  # from machineconfig.utils.source_of_truth import LIBRARY_ROOT
9
15
  # repo_root = LIBRARY_ROOT.parent.parent
10
16
  from pathlib import Path
11
17
  if Path.home().joinpath("code", "machineconfig").exists():
12
- code = """
18
+ shell_script = """
13
19
  uv self update
14
20
  cd ~/code/machineconfig
15
21
  git pull
16
22
  uv tool install --upgrade --editable $HOME/code/machineconfig
17
23
  """
18
24
  else:
19
- code = """
25
+ shell_script = """
20
26
  uv self update
21
27
  uv tool install --upgrade machineconfig
22
28
  """
23
29
  import platform
24
30
  if platform.system() == "Windows":
25
- # from machineconfig.utils.code import run_shell_script_after_exit
26
- # run_shell_script_after_exit(code)
27
- print(f'please run {code} in powershell to update machineconfig')
31
+ from machineconfig.utils.code import exit_then_run_shell_script, get_uv_command_executing_python_script
32
+ from machineconfig.utils.meta import lambda_to_python_script
33
+ python_script = lambda_to_python_script(lambda: copy_both_assets(), in_global=True, import_module=False)
34
+ uv_command, _py_file = get_uv_command_executing_python_script(python_script=python_script, uv_with=["machineconfig"], uv_project_dir=None)
35
+ exit_then_run_shell_script(shell_script + "\n" + uv_command, strict=True)
28
36
  else:
29
37
  from machineconfig.utils.code import run_shell_script
30
- run_shell_script(code)
38
+ run_shell_script(shell_script)
31
39
  if not no_copy_assets:
32
- import machineconfig.profile.create_helper as create_helper
33
- create_helper.copy_assets_to_machine(which="scripts")
34
- create_helper.copy_assets_to_machine(which="settings")
40
+ copy_both_assets()
41
+
35
42
  def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-na", help="Copy (overwrite) assets to the machine after the update")] = False):
36
43
  """📋 CLONE machienconfig locally and incorporate to shell profile for faster execution and nightly updates."""
37
44
  from machineconfig.utils.code import run_shell_script
@@ -41,9 +48,9 @@ def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-n
41
48
  else:
42
49
  import platform
43
50
  if platform.system() == "Windows":
44
- run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.87" """)
51
+ run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.89" """)
45
52
  else:
46
- run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.87" """)
53
+ run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.89" """)
47
54
  from machineconfig.profile.create_shell_profile import create_default_shell_profile
48
55
  if not no_copy_assets:
49
56
  create_default_shell_profile() # involves copying assets too
@@ -68,7 +75,7 @@ def navigate():
68
75
  path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
69
76
  from machineconfig.utils.code import run_shell_script
70
77
  if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
71
- else: executable = """--with "machineconfig>=6.87,textual" """
78
+ else: executable = """--with "machineconfig>=6.89,textual" """
72
79
  run_shell_script(f"""uv run {executable} {path}""")
73
80
 
74
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.87"]
83
+ uv_with = ["machineconfig>=6.89"]
84
84
  uv_project_dir = None
85
85
 
86
86
  import tempfile
@@ -124,7 +124,9 @@ def execute_installations(selected_options: list[str]) -> None:
124
124
  console.print("✅ CLI applications installed successfully", style="bold green")
125
125
  except Exception as e:
126
126
  console.print(f"❌ Error installing CLI applications: {e}", style="bold red")
127
- run_shell_script(". $HOME/.bashrc")
127
+ import platform
128
+ if platform.system() != "Windows":
129
+ run_shell_script(". $HOME/.bashrc")
128
130
 
129
131
  if "install_machineconfig" in selected_options:
130
132
  console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
@@ -5,7 +5,7 @@
5
5
  # mkdir ~/data/local
6
6
  # sudo mount -o nolock,noatime,nodiratime,proto=tcp,timeo=600,retrans=2,noac alex-p51s-5:/home/alex/data/local ./data/local
7
7
 
8
- uv run --python 3.14 --with "machineconfig>=6.87" python -m machineconfig.scripts.python.mount_nfs
8
+ uv run --python 3.14 --with "machineconfig>=6.89" python -m machineconfig.scripts.python.mount_nfs
9
9
  # Check if remote server is reachable and share folder exists
10
10
  if ! ping -c 1 "$remote_server" &> /dev/null; then
11
11
  echo "💥 Error: Remote server $remote_server is not reachable."
@@ -1,17 +1,54 @@
1
- # Generate a random name (based on current timestamp hashed with SHA256)
2
- $timestamp = Get-Date -Format o | Get-FileHash -Algorithm SHA256
3
- $randomName = ($timestamp.Hash.Substring(0, 16))
1
+ function warp_in_op_code {
2
+ param(
3
+ [Parameter(Mandatory=$true)]
4
+ [string]$Command,
5
+
6
+ [Parameter(ValueFromRemainingArguments=$true)]
7
+ [string[]]$Arguments
8
+ )
9
+
10
+ # Generate a random name (based on current timestamp hashed with SHA256)
11
+ # Compute SHA256 of the timestamp string (don't pipe the string to Get-FileHash
12
+ # because that attempts to treat the input as a path). Take the first 16 hex
13
+ # chars as the random name.
14
+ $ts = Get-Date -Format o
15
+ try {
16
+ $sha = [System.Security.Cryptography.SHA256]::Create()
17
+ $bytes = [System.Text.Encoding]::UTF8.GetBytes($ts)
18
+ $hashBytes = $sha.ComputeHash($bytes)
19
+ $hash = [System.BitConverter]::ToString($hashBytes).Replace("-", "").ToLower()
20
+ $randomName = $hash.Substring(0, 16)
21
+ } finally {
22
+ if ($sha) { $sha.Dispose() }
23
+ }
4
24
 
5
- # Define the output path
6
- $env:OP_PROGRAM_PATH = "$HOME/tmp_results/tmp_scripts/machineconfig/${randomName}.ps1"
25
+ # Define the output path
26
+ $env:OP_PROGRAM_PATH = "$HOME/tmp_results/tmp_scripts/machineconfig/${randomName}.ps1"
7
27
 
8
- # Run your equivalent command (replace with your actual command)
9
- mcfg @args
28
+ # Run the specified command with its arguments
29
+ & $Command @Arguments
10
30
 
11
- # Check if the file exists
12
- if (Test-Path $env:OP_PROGRAM_PATH) {
13
- Write-Host "Found op program at: $env:OP_PROGRAM_PATH"
14
- & $env:OP_PROGRAM_PATH
15
- } else {
16
- Write-Host "no op program found"
31
+ # Check if the file exists
32
+ if (Test-Path $env:OP_PROGRAM_PATH) {
33
+ Write-Host "Found op program at: $env:OP_PROGRAM_PATH"
34
+ & $env:OP_PROGRAM_PATH
35
+ } else {
36
+ Write-Host "no op program found"
37
+ }
38
+
39
+ # Clean up the temporary environment variable so it doesn't leak to other processes/sessions
40
+ try {
41
+ Remove-Item Env:\OP_PROGRAM_PATH -ErrorAction SilentlyContinue
42
+ } catch {
43
+ # best-effort cleanup; ignore any errors
44
+ }
45
+
46
+ # Also explicitly clear the variable in the current process
47
+ $env:OP_PROGRAM_PATH = $null
17
48
  }
49
+
50
+ # Call the function with any arguments passed to the script
51
+ if ($args.Count -gt 0) {
52
+ warp_in_op_code @args
53
+ }
54
+
@@ -7,7 +7,7 @@ $user = ''
7
7
  $sharePath = ''
8
8
  $driveLetter = ''
9
9
 
10
- uv run --python 3.14 --with "machineconfig>=6.87" python -m machineconfig.scripts.python.mount_ssh
10
+ uv run --python 3.14 --with "machineconfig>=6.89" 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
@@ -51,19 +51,19 @@ map x
51
51
  map c
52
52
  map v
53
53
  map r
54
- map D $diskonaut $env:f
55
- map K $kondo $env:f
54
+ map D $diskonaut $f
55
+ map K $kondo $f
56
56
  map r reload
57
57
 
58
58
 
59
59
  # e edit
60
60
  map e # edit modal key.
61
- map en $nano $env:f
62
- map el $pwsh -File $env:USERPROFILE/.local/bin/lvim.ps1 -- $env:f
63
- map ev $nvim $env:f
64
- map ec $code $env:f
61
+ map en $nano $f
62
+ map el $pwsh -File $env:USERPROFILE/.local/bin/lvim.ps1 -- $f
63
+ map ev $nvim $f
64
+ map ec $code $f
65
65
  map ep $& 'C:\Program Files (x86)\JetBrains\PyCharm Community Edition 2022.2\bin\pycharm.exe' $f
66
- map o $start $env:f
66
+ map o $start $f
67
67
  map <enter> open
68
68
 
69
69
 
@@ -73,27 +73,25 @@ map ww $powershell
73
73
  map wp $pwsh
74
74
  map wc $croshell.ps1
75
75
  map wm $cmd
76
- map i $~/.config/machineconfig/settings/lf/windows/previewer.ps1 $env:f
77
- map R $powershell $env:USERPROFILE/scripts/croshell.ps1 -r $env:f
76
+ map i $~/.config/machineconfig/settings/lf/windows/previewer.ps1 $f
77
+ map R $powershell $env:USERPROFILE/scripts/croshell.ps1 -r $f
78
78
 
79
79
  # o file/folder Operations
80
80
  map o
81
81
  map od cut
82
82
  map op paste
83
83
  map oy copy
84
- map oc $Set-Clipboard -Value $env:f
84
+ map oc $Set-Clipboard -Value $f
85
85
  map c clear
86
86
  map or rename
87
- map <delete> :{{
88
- delete
89
- echo 'FINISHED DELETEING'
90
- }}
87
+ map <delete> delete
88
+ map <del> delete
91
89
  map of reload
92
90
  map os mark-save
93
91
  map ol mark-load
94
92
  map oR mark-remove
95
- map oD !ouch d $env:f
96
- map oC !ouch c $env:f '$env:f'.zip
93
+ map oD !ouch d $f
94
+ map oC !ouch c $f '$f'.zip
97
95
 
98
96
  # j jump
99
97
  map j
@@ -37,23 +37,24 @@ add_to_path_if_not_already \
37
37
  . $CONFIG_ROOT/settings/broot/br.sh
38
38
  . $CONFIG_ROOT/settings/lf/linux/exe/lfcd.sh
39
39
  . $CONFIG_ROOT/settings/tere/terecd.sh
40
+ . $CONFIG_ROOT/scripts/linux/mcfgs
41
+
40
42
  # check if file in ~/dotfiles/machineconfig/init_linux.sh exists and source it
41
43
  if [ -f "$HOME/dotfiles/machineconfig/init_linux.sh" ]; then
42
44
  # echo "Sourcing $HOME/dotfiles/machineconfig/init_linux.sh"
43
45
  source "$HOME/dotfiles/machineconfig/init_linux.sh"
44
46
  fi
45
47
 
46
- # set alias l to lsd -la
47
48
  alias l='lsd -la'
48
- alias d=devops
49
- alias c=cloud
50
- alias a=agents
51
- alias s=sessions
52
- alias ff=ftpx
53
- alias f=fire
54
- alias r=croshell
55
- alias u=utils
56
- alias t=term
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'
57
58
 
58
59
 
59
60
  # alias gcs='gh copilot suggest -t shell'
@@ -24,22 +24,44 @@ Add-ToPathIfNotAlready -Directories @(
24
24
  )
25
25
 
26
26
  # sources ================================================================
27
- . $CONFIG_ROOT\settings\broot\brootcd.ps1
28
- . $CONFIG_ROOT\settings\lf\windows\lfcd.ps1
29
- . $CONFIG_ROOT\settings\tere\terecd.ps1
30
-
31
-
32
- function lsdla { lsd -la }
33
- Set-Alias -Name l -Value lsdla -Option AllScope
34
- function d { devops @args }
35
- function c { cloud @args }
36
- function a { agents @args }
37
- function ss { sessions @args }
38
- function ff { ftpx @args }
39
- function f { fire @args }
40
- function rr { croshell @args }
41
- function u { utils @args }
42
- function t { terminal @args }
27
+ if (Test-Path "$CONFIG_ROOT\scripts\windows\mcfgs.ps1") {
28
+ . $CONFIG_ROOT\settings\broot\brootcd.ps1
29
+ . $CONFIG_ROOT\settings\lf\windows\lfcd.ps1
30
+ . $CONFIG_ROOT\settings\tere\terecd.ps1
31
+ . $CONFIG_ROOT\scripts\windows\mcfgs.ps1
32
+
33
+ function lsdla { lsd -la }
34
+ Set-Alias -Name l -Value lsdla -Option AllScope
35
+ function d { warp_in_op_code devops @args }
36
+ function c { warp_in_op_code cloud @args }
37
+ function a { warp_in_op_code agents @args }
38
+ function ss { warp_in_op_code sessions @args }
39
+ function ff { warp_in_op_code ftpx @args }
40
+ function f { warp_in_op_code fire @args }
41
+ function rr { warp_in_op_code croshell @args }
42
+ function u { warp_in_op_code utils @args }
43
+ function t { warp_in_op_code terminal @args }
44
+
45
+ }
46
+ else {
47
+ Write-Host "Missing config files: $CONFIG_ROOT"
48
+ function lsdla { lsd -la }
49
+ Set-Alias -Name l -Value lsdla -Option AllScope
50
+ function d { devops @args }
51
+ function c { cloud @args }
52
+ function a { agents @args }
53
+ function ss { sessions @args }
54
+ function ff { ftpx @args }
55
+ function f { fire @args }
56
+ function rr { croshell @args }
57
+ function u { utils @args }
58
+ function t { terminal @args }
59
+
60
+ }
61
+
62
+
63
+
64
+ # sources end
43
65
 
44
66
  # try {
45
67
  # Set-Alias -Name gcs -Value {gh copilot suggest -t shell}
@@ -1,7 +1,7 @@
1
1
  #!/bin/bash
2
2
  . <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
3
3
  mcfg() {
4
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.87" mcfg "$@"
4
+ "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.89" mcfg "$@"
5
5
  }
6
6
  alias d="mcfg devops"
7
7
  alias c="mcfg cloud"
@@ -0,0 +1,248 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # macOS GUI Application Installation Script
4
+ # Comprehensive GUI application installation via Homebrew Cask and Mac App Store
5
+ # Supports Intel and Apple Silicon architectures
6
+
7
+ set -e # Exit on any error
8
+
9
+ # Color codes for output
10
+ RED='\033[0;31m'
11
+ GREEN='\033[0;32m'
12
+ YELLOW='\033[1;33m'
13
+ BLUE='\033[0;34m'
14
+ NC='\033[0m' # No Color
15
+
16
+ # Logging functions
17
+ log_info() {
18
+ echo -e "${BLUE}ℹ️ $1${NC}"
19
+ }
20
+
21
+ log_success() {
22
+ echo -e "${GREEN}✅ $1${NC}"
23
+ }
24
+
25
+ log_warning() {
26
+ echo -e "${YELLOW}⚠️ $1${NC}"
27
+ }
28
+
29
+ log_error() {
30
+ echo -e "${RED}❌ $1${NC}"
31
+ }
32
+
33
+ # Architecture detection
34
+ detect_architecture() {
35
+ local arch=$(uname -m)
36
+ if [[ "$arch" == "arm64" ]]; then
37
+ echo "arm64"
38
+ elif [[ "$arch" == "x86_64" ]]; then
39
+ echo "amd64"
40
+ else
41
+ log_warning "Unknown architecture: $arch, defaulting to amd64"
42
+ echo "amd64"
43
+ fi
44
+ }
45
+
46
+ # Check if Homebrew is installed
47
+ check_homebrew() {
48
+ if ! command -v brew &> /dev/null; then
49
+ log_error "Homebrew is not installed. Please run apps.sh first to install Homebrew."
50
+ exit 1
51
+ fi
52
+ log_success "Homebrew found"
53
+ }
54
+
55
+ # Setup Mac App Store CLI
56
+ setup_mas() {
57
+ log_info "Setting up Mac App Store CLI (mas)..."
58
+
59
+ if ! command -v mas &> /dev/null; then
60
+ log_info "Installing mas (Mac App Store CLI)..."
61
+ brew install mas || {
62
+ log_error "Failed to install mas"
63
+ return 1
64
+ }
65
+ else
66
+ log_success "mas already installed"
67
+ fi
68
+
69
+ # Check if user is signed in to Mac App Store
70
+ if ! mas account &> /dev/null; then
71
+ log_warning "Not signed in to Mac App Store. Some applications may not install."
72
+ log_info "Please sign in to the Mac App Store manually to install App Store applications."
73
+ else
74
+ log_success "Signed in to Mac App Store"
75
+ fi
76
+ }
77
+
78
+ # Install a GUI application with error handling
79
+ install_gui_app() {
80
+ local app_name="$1"
81
+ local description="$2"
82
+ local install_cmd="$3"
83
+ local fallback_cmd="$4"
84
+
85
+ log_info "Installing $description..."
86
+
87
+ if eval "$install_cmd"; then
88
+ log_success "$app_name installed successfully"
89
+ return 0
90
+ elif [[ -n "$fallback_cmd" ]]; then
91
+ log_warning "Primary installation failed, trying fallback method..."
92
+ if eval "$fallback_cmd"; then
93
+ log_success "$app_name installed via fallback method"
94
+ return 0
95
+ else
96
+ log_error "Failed to install $app_name via fallback method"
97
+ return 1
98
+ fi
99
+ else
100
+ log_error "Failed to install $app_name"
101
+ return 1
102
+ fi
103
+ }
104
+
105
+ # Install GUI applications from a list
106
+ install_gui_app_list() {
107
+ local group_name="$1"
108
+ shift
109
+ local apps=("$@")
110
+
111
+ log_info "Installing $group_name applications..."
112
+
113
+ local failed_apps=()
114
+ for app_info in "${apps[@]}"; do
115
+ IFS='|' read -r app_name description install_cmd fallback_cmd <<< "$app_info"
116
+ if ! install_gui_app "$app_name" "$description" "$install_cmd" "$fallback_cmd"; then
117
+ failed_apps+=("$app_name")
118
+ fi
119
+ done
120
+
121
+ if [[ ${#failed_apps[@]} -gt 0 ]]; then
122
+ log_warning "$group_name: Failed to install: ${failed_apps[*]}"
123
+ else
124
+ log_success "All $group_name applications installed successfully"
125
+ fi
126
+ }
127
+
128
+ # Main installation function
129
+ main() {
130
+ log_info "Starting macOS GUI application installation..."
131
+ log_info "Detected architecture: $(detect_architecture)"
132
+
133
+ # Check prerequisites
134
+ check_homebrew
135
+ setup_mas
136
+
137
+ # --GROUP:BROWSERS - Web browsers
138
+ local browsers=(
139
+ "brave-browser|Brave Browser - Privacy-focused web browser|brew install --cask brave-browser|"
140
+ "google-chrome|Google Chrome web browser|brew install --cask google-chrome|"
141
+ "firefox|Mozilla Firefox web browser|brew install --cask firefox|"
142
+ "microsoft-edge|Microsoft Edge web browser|brew install --cask microsoft-edge|"
143
+ "safari-technology-preview|Safari Technology Preview|brew install --cask safari-technology-preview|"
144
+ )
145
+
146
+ install_gui_app_list "Browsers" "${browsers[@]}"
147
+
148
+ # --GROUP:CODE_EDITORS - Code editors and IDEs
149
+ local code_editors=(
150
+ "visual-studio-code|Visual Studio Code|brew install --cask visual-studio-code|"
151
+ "cursor|Cursor AI-powered code editor|brew install --cask cursor|"
152
+ "sublime-text|Sublime Text editor|brew install --cask sublime-text|"
153
+ "atom|Atom text editor|brew install --cask atom|"
154
+ "webstorm|JetBrains WebStorm IDE|brew install --cask webstorm|"
155
+ "pycharm|JetBrains PyCharm IDE|brew install --cask pycharm|"
156
+ "intellij-idea|JetBrains IntelliJ IDEA|brew install --cask intellij-idea|"
157
+ "xcode|Xcode development environment|mas install 497799835|brew install --cask xcode"
158
+ )
159
+
160
+ install_gui_app_list "Code Editors & IDEs" "${code_editors[@]}"
161
+
162
+ # --GROUP:PRODUCTIVITY - Productivity and office applications
163
+ local productivity=(
164
+ "obsidian|Obsidian note-taking app|brew install --cask obsidian|"
165
+ "notion|Notion workspace|brew install --cask notion|"
166
+ "bitwarden|Bitwarden password manager|brew install --cask bitwarden|"
167
+ "1password|1Password password manager|brew install --cask 1password|mas install 1333542190"
168
+ "alfred|Alfred productivity app|brew install --cask alfred|"
169
+ "raycast|Raycast launcher and productivity tool|brew install --cask raycast|"
170
+ "rectangle|Rectangle window management|brew install --cask rectangle|"
171
+ "magnet|Magnet window manager|mas install 441258766|brew install --cask magnet"
172
+ "cleanmymac|CleanMyMac X system cleaner|mas install 1339170533|"
173
+ )
174
+
175
+ install_gui_app_list "Productivity" "${productivity[@]}"
176
+
177
+ # --GROUP:MEDIA - Media and entertainment applications
178
+ local media=(
179
+ "vlc|VLC media player|brew install --cask vlc|"
180
+ "obs|OBS Studio for streaming and recording|brew install --cask obs|"
181
+ "handbrake|HandBrake video transcoder|brew install --cask handbrake|"
182
+ "spotify|Spotify music streaming|brew install --cask spotify|mas install 324684580"
183
+ "youtube-music|YouTube Music|brew install --cask youtube-music|"
184
+ "plex|Plex media server|brew install --cask plex|"
185
+ "keka|Keka archive utility|brew install --cask keka|mas install 470158793"
186
+ "the-unarchiver|The Unarchiver|brew install --cask the-unarchiver|mas install 425424353"
187
+ )
188
+
189
+ install_gui_app_list "Media & Entertainment" "${media[@]}"
190
+
191
+ # --GROUP:DEVELOPMENT - Development and system tools
192
+ local development=(
193
+ "docker|Docker Desktop|brew install --cask docker|"
194
+ "postman|Postman API development|brew install --cask postman|"
195
+ "insomnia|Insomnia REST client|brew install --cask insomnia|"
196
+ "github-desktop|GitHub Desktop|brew install --cask github-desktop|"
197
+ "sourcetree|Sourcetree Git client|brew install --cask sourcetree|"
198
+ "iterm2|iTerm2 terminal emulator|brew install --cask iterm2|"
199
+ "warp|Warp modern terminal|brew install --cask warp|"
200
+ "alacritty|Alacritty terminal emulator|brew install --cask alacritty|"
201
+ )
202
+
203
+ install_gui_app_list "Development Tools" "${development[@]}"
204
+
205
+ # --GROUP:DATABASE - Database management tools
206
+ local database=(
207
+ "dbeaver-community|DBeaver database tool|brew install --cask dbeaver-community|"
208
+ "sequel-pro|Sequel Pro MySQL client|brew install --cask sequel-pro|"
209
+ "tableplus|TablePlus database client|brew install --cask tableplus|"
210
+ "redis-insight|RedisInsight Redis GUI|brew install --cask redisinsight|"
211
+ "mongodb-compass|MongoDB Compass|brew install --cask mongodb-compass|"
212
+ )
213
+
214
+ install_gui_app_list "Database Tools" "${database[@]}"
215
+
216
+ # --GROUP:COMMUNICATION - Communication and collaboration
217
+ local communication=(
218
+ "slack|Slack team communication|brew install --cask slack|mas install 803453959"
219
+ "discord|Discord voice and text chat|brew install --cask discord|"
220
+ "zoom|Zoom video conferencing|brew install --cask zoom|"
221
+ "microsoft-teams|Microsoft Teams|brew install --cask microsoft-teams|"
222
+ "whatsapp|WhatsApp Desktop|brew install --cask whatsapp|mas install 1147396723"
223
+ "telegram|Telegram messaging|brew install --cask telegram|mas install 747648890"
224
+ )
225
+
226
+ install_gui_app_list "Communication" "${communication[@]}"
227
+
228
+ # --GROUP:SYSTEM_UTILITIES - System utilities and maintenance
229
+ local system_utilities=(
230
+ "appcleaner|AppCleaner uninstaller|brew install --cask appcleaner|"
231
+ "coconutbattery|CoconutBattery system info|brew install --cask coconutbattery|"
232
+ "disk-utility|Disk Utility (built-in)|echo 'Disk Utility is built into macOS'|"
233
+ "activity-monitor|Activity Monitor (built-in)|echo 'Activity Monitor is built into macOS'|"
234
+ "finder|Finder (built-in)|echo 'Finder is built into macOS'|"
235
+ "homebrew|Homebrew package manager|echo 'Homebrew already installed'|"
236
+ )
237
+
238
+ install_gui_app_list "System Utilities" "${system_utilities[@]}"
239
+
240
+ log_success "macOS GUI application installation completed!"
241
+ log_info "Some applications may require additional setup or signing in to your accounts."
242
+ log_info "Check Applications folder for newly installed apps."
243
+ }
244
+
245
+ # Execute main function if script is run directly
246
+ if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
247
+ main "$@"
248
+ fi
@@ -2,7 +2,7 @@
2
2
 
3
3
  iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
4
4
  function mcfg {
5
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.87" mcfg $args
5
+ & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.89" mcfg $args
6
6
  }
7
7
  function d { mcfg devops @args }
8
8
  function c { mcfg cloud @args }
@@ -82,29 +82,29 @@ def run_shell_script(script: str, display_script: bool = True, clean_env: bool =
82
82
  lexer = "bash"
83
83
  with tempfile.NamedTemporaryFile(mode='w', suffix=suffix, delete=False, encoding='utf-8') as temp_file:
84
84
  temp_file.write(script)
85
- temp_script_path = Path(temp_file.name)
85
+ temp_shell_script_path = Path(temp_file.name)
86
86
  console = Console()
87
87
  if display_script:
88
88
  from rich.syntax import Syntax
89
- console.print(Panel(Syntax(code=script, lexer=lexer), title=f"📄 shell script @ {temp_script_path}", subtitle="shell script being executed"), style="bold red")
89
+ console.print(Panel(Syntax(code=script, lexer=lexer), title=f"📄 shell script @ {temp_shell_script_path}", subtitle="shell script being executed"), style="bold red")
90
90
  env = {} if clean_env else None
91
91
  if platform.system() == "Windows":
92
92
  import subprocess
93
- proc = subprocess.run(f'powershell -ExecutionPolicy Bypass -File "{temp_script_path}"', check=True, shell=True, env=env)
93
+ proc = subprocess.run(f'powershell -ExecutionPolicy Bypass -File "{temp_shell_script_path}"', check=True, shell=True, env=env)
94
94
  elif platform.system() == "Linux" or platform.system() == "Darwin":
95
95
  import subprocess
96
- proc = subprocess.run(f"bash {str(temp_script_path)}", check=True, shell=True, env=env)
96
+ proc = subprocess.run(f"bash {str(temp_shell_script_path)}", check=True, shell=True, env=env)
97
97
  else:
98
98
  raise NotImplementedError(f"Platform {platform.system()} not supported.")
99
99
  # console.print(f"✅ [green]Script executed successfully:[/green] [blue]{temp_script_path}[/blue]")
100
100
  if proc.returncode != 0:
101
- console.print(f"❌ [red]Script execution failed with return code {proc.returncode}:[/red] [blue]{temp_script_path}[/blue]")
101
+ console.print(f"❌ [red]Script execution failed with return code {proc.returncode}:[/red] [blue]{temp_shell_script_path}[/blue]")
102
102
  elif proc.returncode == 0:
103
- console.print(f"✅ [green]Script executed successfully:[/green] [blue]{temp_script_path}[/blue]")
103
+ console.print(f"✅ [green]Script executed successfully:[/green] [blue]{temp_shell_script_path}[/blue]")
104
104
  else:
105
- console.print(f"⚠️ [yellow]Script executed with warnings (return code {proc.returncode}):[/yellow] [blue]{temp_script_path}[/blue]")
106
- temp_script_path.unlink(missing_ok=True)
107
- console.print(f"🗑️ [blue]Temporary script deleted:[/blue] [green]{temp_script_path}[/green]")
105
+ console.print(f"⚠️ [yellow]Script executed with warnings (return code {proc.returncode}):[/yellow] [blue]{temp_shell_script_path}[/blue]")
106
+ temp_shell_script_path.unlink(missing_ok=True)
107
+ console.print(f"🗑️ [blue]Temporary script deleted:[/blue] [green]{temp_shell_script_path}[/green]")
108
108
  return proc
109
109
 
110
110
 
@@ -112,10 +112,18 @@ def exit_then_run_shell_script(script: str, strict: bool = False):
112
112
  import os
113
113
  op_program_path = os.environ.get("OP_PROGRAM_PATH", None)
114
114
  if strict and op_program_path is None:
115
- raise ValueError("OP_PROGRAM_PATH environment variable is not set in strict mode.")
115
+ op_program_path = Path.home().joinpath("tmp_results", "tmp_scripts", "manual_run", f"manual_script_{randstr()}.ps1")
116
+ op_program_path.parent.mkdir(parents=True, exist_ok=True)
117
+ op_program_path.write_text(script, encoding="utf-8")
118
+ print_code(script, lexer="powershell", desc="script to run manually")
119
+ print(f"Please run the script manually via your PowerShell by executing the script @:\n{str(op_program_path)}")
120
+ print("OP_PROGRAM_PATH environment variable is not set in strict mode.")
116
121
  if op_program_path is not None:
117
122
  op_program_path = Path(op_program_path)
118
123
  op_program_path.parent.mkdir(parents=True, exist_ok=True)
119
124
  op_program_path.write_text(script, encoding="utf-8")
125
+ print(f"Handing over to powershell script runner via OP_PROGRAM_PATH @\n{str(op_program_path)}...")
120
126
  else:
121
127
  run_shell_script(script)
128
+ import sys
129
+ sys.exit(0)
@@ -125,7 +125,7 @@ def dynamically_extract_installers_system_groups_from_scripts():
125
125
  if system() == "Windows":
126
126
  from machineconfig.setup_windows import APPS
127
127
  options_system = parse_apps_installer_windows(APPS.read_text(encoding="utf-8"))
128
- elif system() == "Linux" or system() == "Darwin":
128
+ elif system() == "Linux":
129
129
  from machineconfig.setup_linux import APPS
130
130
  options_system = parse_apps_installer_linux(APPS.read_text(encoding="utf-8"))
131
131
  elif system() == "Darwin":
@@ -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.87"
11
+ MACHINECONFIG_VERSION = "machineconfig>=6.89"
12
12
  DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
13
13
 
14
14
  class SSH:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 6.87
3
+ Version: 6.89
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -51,7 +51,7 @@ machineconfig/cluster/templates/cli_trogon.py,sha256=PFWGy8SFYIhT9r3ZV4oIEYfImsQ
51
51
  machineconfig/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  machineconfig/jobs/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  machineconfig/jobs/installer/check_installations.py,sha256=hkHmmT7Bx3_QWRn2v8dCKOzAapFzqHRzbe-Q08GLnKE,10743
54
- machineconfig/jobs/installer/installer_data.json,sha256=O2IuDvPApr1cCGG_HyVJfhT5exd2wmZmxyV81_WRXhQ,78081
54
+ machineconfig/jobs/installer/installer_data.json,sha256=-wPi1iw821_JfVdrKjQ8zBwJcgpJIP1IElK0HKCPARs,78545
55
55
  machineconfig/jobs/installer/package_groups.py,sha256=CvSJogQgnz5HZfGS9DoCoPfmv0qUinLfh76zw4x58Q8,5262
56
56
  machineconfig/jobs/installer/custom/boxes.py,sha256=ws8QRbDn48oKhbQntr54I0nSfkwINbprjTy0HOpuX40,1974
57
57
  machineconfig/jobs/installer/custom/gh.py,sha256=gn7TUSrsLx7uqFqj1Z-iYglS0EYBSgtJ9jWHxaJIfXM,4119
@@ -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=tjlIG2qEpmx1EuMBYflYcp6GfgiFgSj4OMOD-d94xio,1179
113
+ machineconfig/scripts/linux/mcfgs,sha256=EkHRXfqsa6fpvXn1K084R2m__y5_g4_l9Q3u1cvM3dk,1387
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
@@ -123,9 +123,9 @@ machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yy
123
123
  machineconfig/scripts/python/croshell.py,sha256=QyQbVboNqDQHJkUeSsJvdT212t4TW46yat3GBzneqsQ,8649
124
124
  machineconfig/scripts/python/devops.py,sha256=Lv4d-UlyOREj4VTcu_pxswYo54Mawe3XGeKjreGQDYg,2222
125
125
  machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
126
- machineconfig/scripts/python/fire_jobs.py,sha256=t_ciW_Uu9L6fzgrFianT6_mUHCJQeFV21VWsrYJRPRw,13875
126
+ machineconfig/scripts/python/fire_jobs.py,sha256=-xrUlBQ90asQkXuWESiDsD6D05Xuw0-NMmfwBerwSjg,13874
127
127
  machineconfig/scripts/python/ftpx.py,sha256=A13hL_tDYfcsaK9PkshK-0lrUS6KPhPCtwqWtLSo6IM,9764
128
- machineconfig/scripts/python/interactive.py,sha256=zt3g6nGKR_Y5A57UnR4Y5-JpLzrpnCOSaqU1bnaikK0,11666
128
+ machineconfig/scripts/python/interactive.py,sha256=jFHpiQq_lisa51BS4-qUlWPJ1-pmHmPAfA6dixdsOzY,11745
129
129
  machineconfig/scripts/python/mcfg.py,sha256=TB5lZDZDImGqX4_mMSEv4ZoFigIPA0RXn-9H2cmPS6g,2457
130
130
  machineconfig/scripts/python/sessions.py,sha256=Q_fbprawvW1x_E6jKQ-Z2Z5MRurRaepKUvi5z1G4CUw,9531
131
131
  machineconfig/scripts/python/terminal.py,sha256=5D0RlZkx9ut5WlwjDI8j-t_z6u-H_jJD1eKBnWy_TGU,5191
@@ -162,7 +162,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
162
162
  machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
163
163
  machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
164
164
  machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
165
- machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=ItVcsmF6EFYSo_MoR7b1XEfydu1Hw91muE2k88SpXv8,6932
165
+ machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=3Z8MzAdJq6cQPtZwN3XNZJr7inAQzSB0J2uUTSec-Eg,6932
166
166
  machineconfig/scripts/python/helpers_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
167
  machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py,sha256=YD6-rtudHNip8tx85amSmOZZIHBP9khq4az3dF41j6U,5934
168
168
  machineconfig/scripts/python/helpers_agents/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
@@ -192,12 +192,12 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
192
192
  machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
193
193
  machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
194
194
  machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
- machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=rj8Y60RvpGfa7OhZQbrZisRDgeEDXx7Vc_DOWGLTF2I,7218
195
+ machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=g4UeHCf4I80Ty9S2OvR9rFKjZ2okSFkTzRAtMX0Bkio,7218
196
196
  machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=fluxRtD6hlbh131_RmeKr2Dy8tZpeC4H9-wp2sYt0dM,2486
197
197
  machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
198
198
  machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=edeZPhQrm-hvOx80TPt9GNZXlXq9kkTaRSZSpNdku8w,6441
199
199
  machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
200
- machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=vP0FBM1f7qT8A0AtYDdnzOTtcGoJJXbsKFjC41awmMg,6225
200
+ machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=59GtbpF-9WKOJ9YO839yFjxWbbHuqG11o-3qFw_RIcg,6621
201
201
  machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=q9pFJ6AxPuygMr3onMNOKEuuQHbVE_6Qoyo7xRT5FX0,4196
202
202
  machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
203
203
  machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=B9pnosujOxZLpwzJO4YAqeO-2rvvOFIZgrUwGREZXfM,11118
@@ -225,7 +225,7 @@ machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wd
225
225
  machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
226
226
  machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
227
227
  machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
228
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=pWZ11gkxRfN6PPOhPIgyZexA4jBZqMMzQjdT8mBL6OY,10450
228
+ machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=dlB_qyq3M62iRS6cf4raWWPPdNvc6wZuPqBcSLXGCJo,10450
229
229
  machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
230
230
  machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=vSDtrF4829jziwp6WZmGt9G8MJ9jY4hfXqtf0vhkYSE,607
231
231
  machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
@@ -241,7 +241,7 @@ machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdC
241
241
  machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
242
242
  machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=CkIl85hZLtG9k7yXLSzqi88YrilHV4hIUWHAPBwxWjw,8922
243
243
  machineconfig/scripts/python/nw/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
244
- machineconfig/scripts/python/nw/mount_nfs,sha256=alchs6FVme2HpAIa316HvyO29ypnKsCEy64eZ09aEa0,1855
244
+ machineconfig/scripts/python/nw/mount_nfs,sha256=8KMDOhRk7isjam3LR37o1gqpS69LcW8LmeaydCuZcRM,1855
245
245
  machineconfig/scripts/python/nw/mount_nfs.py,sha256=lOMDY4RS7tx8gsCazVR5tNNwFbaRyO2PJlnwBCDQgCM,3573
246
246
  machineconfig/scripts/python/nw/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
247
247
  machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
@@ -255,12 +255,12 @@ machineconfig/scripts/python/nw/wsl_windows_transfer.py,sha256=jHJyFTuks_Kw4cgE8
255
255
  machineconfig/scripts/windows/fzfb.ps1,sha256=Bmngm2aY8hnPa3iKAOK6EPDYdKzGLUc81wYOnJhNoqg,149
256
256
  machineconfig/scripts/windows/fzfg.ps1,sha256=CHJbMrMuZePd4dxwIwz3g4XWAEmWmckuX-Nrx2xgRkg,27
257
257
  machineconfig/scripts/windows/fzfrga.bat,sha256=rU_KBMO6ii2EZ0akMnmDk9vpuhKSUZqkV0o8a8ywXcM,488
258
- machineconfig/scripts/windows/mcfgs.ps1,sha256=uuK5pEz38D3_SOjfhbvkDT8Kt4I62YhNzkExlW8VSps,577
258
+ machineconfig/scripts/windows/mcfgs.ps1,sha256=xX6NdBbiQzWZxmFGvlht2tacIoBUAc7q5aJdHDWOvl8,1768
259
259
  machineconfig/scripts/windows/term.ps1,sha256=nme_OWis84qN-zI2c0rdysNcDIdoaEKajXZhP2QioQs,1742
260
260
  machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
261
261
  machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
262
262
  machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
263
- machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=HiOurQAeM8XLj1LG398K4p7QLa1ItV3GMkxzL9yo8VI,322
263
+ machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=AJYvBLnm1uckb5mqIDeilgAHp1Sd8MwcLoh3g0P9XfQ,322
264
264
  machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
265
265
  machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
266
266
  machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
@@ -300,7 +300,7 @@ machineconfig/settings/lf/windows/fzf_edit.ps1,sha256=TUpOoG2WpnKbjpgECT2_yPsGdh
300
300
  machineconfig/settings/lf/windows/icons,sha256=liVoi5nOaxFyujil2z7Pcu8l5dG7_uurJ9IJD36jVhI,7147
301
301
  machineconfig/settings/lf/windows/leftpane_previewer.ps1,sha256=SjwqXPqrU-5M0RCsYToJs2QHYy51rSTsbr05dihKtzE,87
302
302
  machineconfig/settings/lf/windows/lfcd.ps1,sha256=9mka24wTS2fwu9xUiveCEoodpniAuboZcvbsusQ708E,971
303
- machineconfig/settings/lf/windows/lfrc,sha256=BkLYTO_rhn2EYJuFMkcgTFvDtl_CRYNm4APxsZgXo7g,3337
303
+ machineconfig/settings/lf/windows/lfrc,sha256=7xpBHyvvbvrrk3IkfUzRrnuHx9zfAm_Dpx9rbGncTik,3267
304
304
  machineconfig/settings/lf/windows/mkdir.ps1,sha256=Uluty9BrnS2kMsouiSqmt20GsNPbbTiHrKxwu1FtuME,56
305
305
  machineconfig/settings/lf/windows/mkfile.ps1,sha256=yehhWVXOvhJEJhrKWcchRuh2nptCd6NbP-j4rroOGXo,52
306
306
  machineconfig/settings/lf/windows/previewer.ps1,sha256=Mfg1WDXIBu0GVECWd11MUCBzE20KVfvu63uhcmncZro,206
@@ -331,7 +331,7 @@ machineconfig/settings/rofi/config.rasi,sha256=nDX5B8wdXQYF1fwiOTBRJUI4l_gQbYaLa
331
331
  machineconfig/settings/rofi/config_default.rasi,sha256=rTfKnC-bZuWX1l-lWQACCUOE1ShhkfykAxtXX9PlQHE,4694
332
332
  machineconfig/settings/shells/alacritty/alacritty.toml,sha256=EbL-2Y4QunW1pvRWB2yuLCw8MMPONheJr5LFoWRieUQ,871
333
333
  machineconfig/settings/shells/alacritty/alacritty.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
- machineconfig/settings/shells/bash/init.sh,sha256=JiZ6UUar6nmNiu9-sMemYnxIF6pjVlqxBMwKKq8hu9o,2709
334
+ machineconfig/settings/shells/bash/init.sh,sha256=AYMI1CK-GRnIHMZ231J4_FOcWiBEWNDukpUkD_MBxdA,2909
335
335
  machineconfig/settings/shells/hyper/.hyper.js,sha256=h-HqeYlvPvPD4Ee7828Cxo87uVkzbMGJFqXTZIWoegw,8884
336
336
  machineconfig/settings/shells/ipy/profiles/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
337
337
  machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -339,7 +339,7 @@ machineconfig/settings/shells/ipy/profiles/default/startup/playext.py,sha256=OJ3
339
339
  machineconfig/settings/shells/kitty/kitty.conf,sha256=lDdx-dUX3jbKGb3BkS2f2TOpmgGiS-CI-_-lFvhD5A4,52870
340
340
  machineconfig/settings/shells/nushell/config.nu,sha256=xtko80MPteDXuOJmwJHNFhXmfHT6fIBfmTgsF29GiEc,748
341
341
  machineconfig/settings/shells/nushell/env.nu,sha256=4VmaXb-qP6qnMD5TPzkXMLFNlB5QC4l9HEzCvXZE2GQ,315
342
- machineconfig/settings/shells/pwsh/init.ps1,sha256=5DfRhHt8kMSh74JbW4ALJOH6NRa_MlRgG34ouew7qsc,2000
342
+ machineconfig/settings/shells/pwsh/init.ps1,sha256=_p4j4J7zEeMM3kJidu6-BAqv_ovkKreqHr9rZklKuRk,2758
343
343
  machineconfig/settings/shells/pwsh/profile.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
344
344
  machineconfig/settings/shells/starship/starship.toml,sha256=5rQTY7ZpKnrnhgu2Y9OJKUYMz5lPLIftO1p1VRuVZwQ,1150
345
345
  machineconfig/settings/shells/vtm/settings.xml,sha256=5TNXd-i0eUGo2w3tuhY9aOkwoJdqih8_HO_U6uL2Dts,18262
@@ -377,9 +377,10 @@ machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE3
377
377
  machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
378
378
  machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
379
379
  machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
380
- machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=Q8fQ5Jgw2f_BVEhZjjLXcS2NQh1SBQzKbKB2kb720Ec,488
380
+ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=2yv-ur973krKmANg01QwEAlslK5yuHvEWtsKecf3DwI,488
381
381
  machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
382
382
  machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
383
+ machineconfig/setup_mac/apps_gui.sh,sha256=3alvddg918oMlJB2aUWJWpGGoaq5atlxcaOwhnyXlRI,9517
383
384
  machineconfig/setup_mac/uv.sh,sha256=CSN8oCBKS-LK1vJJqYOhAMcrouTf4Q_F3cpplc_ddMA,1157
384
385
  machineconfig/setup_mac/ssh/openssh_setup.sh,sha256=TxfySnwFYg1UQLXmJbEQ2gfEWIT084F5JvNZI9ncpc0,3537
385
386
  machineconfig/setup_windows/__init__.py,sha256=NnSVZkIBoxoMgkj-_KAqGonH3YziBIWXOKDEcmNAGTY,386
@@ -391,13 +392,13 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
391
392
  machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
392
393
  machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
393
394
  machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
394
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=XEjrxJXFDjTPORszOVX-Iijd3OL4NFww4NVGyCLmIoQ,616
395
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=1qXCXEmsAwQyPJMDcbEgWWFEepQ73_PqwfECNu_Euy4,616
395
396
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
396
397
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
397
398
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
398
399
  machineconfig/utils/accessories.py,sha256=Rs8R0GUb2Ub6YimkgXHnI02CShS5BKlrZdCigVxfPlk,4339
399
- machineconfig/utils/code.py,sha256=yEsBswdx94hZedsb_Gy0-H6_CeivHzOiv8-aK9tGIgg,5823
400
- machineconfig/utils/installer.py,sha256=m92KwGeep0FrT8V42xJDQdcT74HK9RB-xza0Ii50nHA,10376
400
+ machineconfig/utils/code.py,sha256=3YnLsCWSPyDXHl_OlvPueIYXFv_o_jmc06GkvHAV0mw,6451
401
+ machineconfig/utils/installer.py,sha256=F5Xc_2FttmeyK9hYuBo4gr5m7t-IXIq70C4RUbLWJwc,10352
401
402
  machineconfig/utils/io.py,sha256=4dSieoqZO8Vvi4vW8lLoITDHBvmFp4dtl3kyeZHQ6Co,2528
402
403
  machineconfig/utils/links.py,sha256=KM6vIn3hag9FYEzLSHP5MAM9tU_RStw2mCq2_OvmmZA,23672
403
404
  machineconfig/utils/meta.py,sha256=4ocYH3Zi6bVN6FVgXoGIfoasV6oxi67I9rQ8hvyYinc,9892
@@ -409,7 +410,7 @@ machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,
409
410
  machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
410
411
  machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
411
412
  machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
412
- machineconfig/utils/ssh.py,sha256=zsGHp4SOkFIGbqAwBzNRXKT-4JU9pWfDmCy_Q33FNAQ,39008
413
+ machineconfig/utils/ssh.py,sha256=edb5jMEon6Oc8Ec52Sk4H5lLf_YCLj4enqog0gYIGkU,39008
413
414
  machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
414
415
  machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
415
416
  machineconfig/utils/upgrade_packages.py,sha256=3H-U-Le0kn7ACYf_RHMSDav2UGnWzZEqgaL9bC0Yn4s,3695
@@ -438,8 +439,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
438
439
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
439
440
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
440
441
  machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
441
- machineconfig-6.87.dist-info/METADATA,sha256=6qopnVYk46jmfz3hkQF7hsHUy9wItdGY4OImaXalFLA,2928
442
- machineconfig-6.87.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
443
- machineconfig-6.87.dist-info/entry_points.txt,sha256=uf_ZPJa02_y3Fw5Z7m22cq7PwxhYd1QV2FfPNZTl_dQ,519
444
- machineconfig-6.87.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
445
- machineconfig-6.87.dist-info/RECORD,,
442
+ machineconfig-6.89.dist-info/METADATA,sha256=tgqmeGwECkUGlseTGIdDA_URM31IoTJUrwiNyTZSMmk,2928
443
+ machineconfig-6.89.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
444
+ machineconfig-6.89.dist-info/entry_points.txt,sha256=uf_ZPJa02_y3Fw5Z7m22cq7PwxhYd1QV2FfPNZTl_dQ,519
445
+ machineconfig-6.89.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
446
+ machineconfig-6.89.dist-info/RECORD,,