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

Files changed (36) hide show
  1. machineconfig/jobs/installer/custom/gh.py +2 -15
  2. machineconfig/jobs/installer/custom_dev/alacritty.py +41 -26
  3. machineconfig/jobs/installer/custom_dev/brave.py +42 -28
  4. machineconfig/jobs/installer/custom_dev/bypass_paywall.py +30 -19
  5. machineconfig/jobs/installer/custom_dev/code.py +29 -20
  6. machineconfig/jobs/installer/custom_dev/espanso.py +64 -41
  7. machineconfig/jobs/installer/custom_dev/goes.py +41 -36
  8. machineconfig/jobs/installer/custom_dev/lvim.py +49 -33
  9. machineconfig/jobs/installer/custom_dev/nerdfont.py +71 -47
  10. machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +25 -10
  11. machineconfig/jobs/installer/custom_dev/redis.py +51 -33
  12. machineconfig/jobs/installer/installer_data.json +17 -0
  13. machineconfig/jobs/installer/package_groups.py +271 -102
  14. machineconfig/jobs/python/python_cargo_build_share.py +0 -1
  15. machineconfig/jobs/python/python_ve_symlink.py +23 -15
  16. machineconfig/jobs/python/vscode/api.py +16 -8
  17. machineconfig/jobs/python/vscode/sync_code.py +42 -27
  18. machineconfig/scripts/python/cloud_repo_sync.py +8 -4
  19. machineconfig/scripts/python/devops_devapps_install.py +34 -26
  20. machineconfig/scripts/python/helpers/repo_sync_helpers.py +4 -2
  21. machineconfig/scripts/python/interactive.py +24 -23
  22. machineconfig/scripts/python/mount_nfs.py +3 -6
  23. machineconfig/scripts/python/mount_ssh.py +3 -4
  24. machineconfig/scripts/python/sessions.py +10 -9
  25. machineconfig/scripts/python/start_slidev.py +14 -4
  26. machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +36 -22
  27. machineconfig/utils/code.py +11 -2
  28. machineconfig/utils/installer.py +15 -9
  29. machineconfig/utils/path_extended.py +49 -7
  30. machineconfig/utils/ssh.py +22 -12
  31. machineconfig/utils/terminal.py +66 -92
  32. {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/METADATA +1 -1
  33. {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/RECORD +36 -36
  34. {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/WHEEL +0 -0
  35. {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/entry_points.txt +0 -0
  36. {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/top_level.txt +0 -0
@@ -1,29 +1,37 @@
1
1
  """lvim"""
2
2
 
3
- from machineconfig.utils.terminal import Terminal
3
+ from rich import box
4
+ from rich.console import Console
5
+ from rich.panel import Panel
4
6
  import subprocess
5
7
  import platform
6
8
  from typing import Optional
7
9
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
8
10
 
9
11
 
10
- _ = Terminal, subprocess
11
12
  # as per https://www.lunarvim.org/docs/installation
12
13
 
13
14
 
14
- def main(installer_data: InstallerData, version: Optional[str]):
15
+ def main(installer_data: InstallerData, version: Optional[str]) -> None:
16
+ console = Console()
15
17
  _ = installer_data
16
- print(f"""
17
- {"=" * 150}
18
- 🌙 LUNARVIM INSTALLER | Setting up Neovim-based IDE
19
- 🔄 Version: {"latest" if version is None else version}
20
- 📚 Branch: release-1.4/neovim-0.9
21
- {"=" * 150}
22
- """)
18
+ console.print(
19
+ Panel.fit(
20
+ "\n".join(
21
+ [
22
+ f"🔄 Version: {'latest' if version is None else version}",
23
+ "📚 Branch: release-1.4/neovim-0.9",
24
+ ]
25
+ ),
26
+ title="🌙 LunarVim Installer",
27
+ border_style="purple",
28
+ box=box.ROUNDED,
29
+ )
30
+ )
23
31
 
24
32
  _ = version
25
33
  if platform.system() == "Windows":
26
- print("🪟 Installing LunarVim on Windows...")
34
+ console.print("🪟 Installing LunarVim on Windows...", style="bold")
27
35
  program = """
28
36
 
29
37
  pwsh -c "`$LV_BRANCH='release-1.4/neovim-0.9'; iwr https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.4/neovim-0.9/utils/installer/install.ps1 -UseBasicParsing | iex"
@@ -31,7 +39,7 @@ pwsh -c "`$LV_BRANCH='release-1.4/neovim-0.9'; iwr https://raw.githubusercontent
31
39
  """
32
40
  elif platform.system() in ["Linux", "Darwin"]:
33
41
  system_name = "Linux" if platform.system() == "Linux" else "macOS"
34
- print(f"🐧 Installing LunarVim on {system_name}...")
42
+ console.print(f"🐧 Installing LunarVim on {system_name}...", style="bold")
35
43
  program = """
36
44
 
37
45
  LV_BRANCH='release-1.4/neovim-0.9' bash <(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.4/neovim-0.9/utils/installer/install.sh)
@@ -39,33 +47,41 @@ LV_BRANCH='release-1.4/neovim-0.9' bash <(curl -s https://raw.githubusercontent.
39
47
  """
40
48
  else:
41
49
  error_msg = f"Unsupported platform: {platform.system()}"
42
- print(f"""
43
- {"⚠️" * 20}
44
- ❌ ERROR | {error_msg}
45
- {"⚠️" * 20}
46
- """)
50
+ console.print(
51
+ Panel.fit(
52
+ "\n".join([error_msg]),
53
+ title="❌ Error",
54
+ subtitle="⚠️ Unsupported platform",
55
+ border_style="red",
56
+ box=box.ROUNDED,
57
+ )
58
+ )
47
59
  raise NotImplementedError(error_msg)
48
60
 
49
- print(f"""
50
- {"=" * 150}
51
- ℹ️ INFO | LunarVim features:
52
- 📝 IDE-like experience for Neovim
53
- 🔌 Built-in plugin management
54
- 🛠️ LSP configuration out of the box
55
- 🔍 Powerful fuzzy finding
56
- ⚙️ Simple and unified configuration
57
- {"=" * 150}
61
+ console.print(
62
+ Panel.fit(
63
+ "\n".join(
64
+ [
65
+ "📝 IDE-like experience for Neovim",
66
+ "🔌 Built-in plugin management",
67
+ "🛠️ LSP configuration out of the box",
68
+ "🔍 Powerful fuzzy finding",
69
+ "⚙️ Simple and unified configuration",
70
+ "⚠️ Installer will prompt for user input during installation.",
71
+ ]
72
+ ),
73
+ title="ℹ️ LunarVim Features",
74
+ border_style="magenta",
75
+ box=box.ROUNDED,
76
+ )
77
+ )
58
78
 
59
- ⚠️ NOTE: The installer will prompt for user input during installation.
60
- """)
61
-
62
- print("🔄 EXECUTING | Running LunarVim installation...")
79
+ console.print("🔄 EXECUTING | Running LunarVim installation...", style="bold yellow")
63
80
  try:
64
- # Run with shell=True and allow interaction for user input
65
81
  subprocess.run(program, shell=True, check=True)
66
- print("✅ LunarVim installation completed successfully")
82
+ console.print("✅ LunarVim installation completed successfully", style="bold green")
67
83
  except subprocess.CalledProcessError as e:
68
- print(f"❌ Installation failed with exit code {e.returncode}")
84
+ console.print(f"❌ Installation failed with exit code {e.returncode}", style="bold red")
69
85
  raise
70
86
 
71
87
 
@@ -3,83 +3,107 @@
3
3
  import platform
4
4
  import subprocess
5
5
  from typing import Optional
6
+ from rich import box
7
+ from rich.console import Console
8
+ from rich.panel import Panel
6
9
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
7
10
 
8
11
 
9
12
  def main(installer_data: InstallerData, version: Optional[str]) -> None:
10
13
  """Main entry point for Nerd Fonts installation.
11
-
14
+
12
15
  Args:
13
16
  installer_data: Installation configuration data
14
17
  version: Specific version to install (None for latest)
15
18
  """
19
+ console = Console()
16
20
  _ = installer_data
17
- print(f"""
18
- {"=" * 150}
19
- 🔤 NERD FONTS INSTALLER | Installing programming fonts with icons
20
- 💻 Platform: {platform.system()}
21
- 🔄 Version: {"latest" if version is None else version}
22
- {"=" * 150}
23
- """)
21
+ console.print(
22
+ Panel.fit(
23
+ "\n".join([f"💻 Platform: {platform.system()}", f"🔄 Version: {'latest' if version is None else version}"]),
24
+ title="🔤 Nerd Fonts Installer",
25
+ border_style="blue",
26
+ box=box.ROUNDED,
27
+ )
28
+ )
24
29
 
25
30
  _ = version
26
31
  current_platform = platform.system()
27
-
32
+
28
33
  if current_platform == "Windows":
29
- print("🪟 Installing Nerd Fonts on Windows...")
34
+ console.print("🪟 Installing Nerd Fonts on Windows...", style="bold")
30
35
  from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
31
-
36
+
32
37
  try:
33
38
  install_nerd_fonts()
34
- print(f"""
35
- {"=" * 150}
36
- SUCCESS | Nerd Fonts installation completed successfully on Windows
37
- 💡 TIP: Restart your terminal applications to see the new fonts
38
- {"=" * 150}
39
- """)
40
- except Exception as e:
39
+ console.print(
40
+ Panel.fit(
41
+ "\n".join(["💡 Restart terminal applications to see the new fonts."]),
42
+ title="✅ Nerd Fonts Installed",
43
+ border_style="green",
44
+ box=box.ROUNDED,
45
+ )
46
+ )
47
+ except Exception as e: # noqa: BLE001
41
48
  error_msg = f"Windows Nerd Fonts installation failed: {e}"
42
- print(f"""
43
- {"⚠️" * 20}
44
- ❌ ERROR | {error_msg}
45
- 💡 TIP: Try running as administrator or install manually from https://www.nerdfonts.com
46
- {"⚠️" * 20}
47
- """)
49
+ console.print(
50
+ Panel.fit(
51
+ "\n".join(
52
+ [
53
+ error_msg,
54
+ "💡 Try running as administrator or install manually from https://www.nerdfonts.com",
55
+ ]
56
+ ),
57
+ title="❌ Error",
58
+ subtitle="⚠️ Installation issue",
59
+ border_style="red",
60
+ box=box.ROUNDED,
61
+ )
62
+ )
48
63
  raise RuntimeError(error_msg) from e
49
-
64
+
50
65
  elif current_platform in ["Linux", "Darwin"]:
51
- print(f"🐧 Installing Nerd Fonts on {current_platform} using installation script...")
66
+ console.print(f"🐧 Installing Nerd Fonts on {current_platform} using installation script...", style="bold")
52
67
  import machineconfig.jobs.installer as module
53
68
  from pathlib import Path
54
69
 
55
70
  program = Path(module.__file__).parent.joinpath("linux_scripts/nerdfont.sh").read_text(encoding="utf-8")
56
-
57
- print(f"""
58
- {"=" * 150}
59
- ℹ️ INFO | Nerd Fonts features:
60
- 🎨 Programming fonts patched with icons
61
- 🔣 Includes icons from popular sets (FontAwesome, Devicons, etc.)
62
- 🖥️ Perfect for terminals and coding environments
63
- 🧰 Works with many terminal applications and editors
64
- {"=" * 150}
65
- """)
66
-
67
- print("🔄 EXECUTING | Running Nerd Fonts installation...")
71
+
72
+ console.print(
73
+ Panel.fit(
74
+ "\n".join(
75
+ [
76
+ "🎨 Programming fonts patched with icons",
77
+ "🔣 Includes icons from popular sets (FontAwesome, Devicons, etc.)",
78
+ "🖥️ Perfect for terminals and coding environments",
79
+ "🧰 Works with many terminal applications and editors",
80
+ ]
81
+ ),
82
+ title="ℹ️ Nerd Fonts Features",
83
+ border_style="magenta",
84
+ box=box.ROUNDED,
85
+ )
86
+ )
87
+
88
+ console.print("🔄 EXECUTING | Running Nerd Fonts installation...", style="bold yellow")
68
89
  try:
69
90
  subprocess.run(program, shell=True, text=True, check=True)
70
- print("✅ Nerd Fonts installation completed successfully")
91
+ console.print("✅ Nerd Fonts installation completed successfully", style="bold green")
71
92
  except subprocess.CalledProcessError as e:
72
- print(f"❌ Installation failed with exit code {e.returncode}")
93
+ console.print(f"❌ Installation failed with exit code {e.returncode}", style="bold red")
73
94
  raise
74
-
95
+
75
96
  else:
76
97
  error_msg = f"Unsupported platform: {current_platform}"
77
- print(f"""
78
- {"⚠️" * 20}
79
- ERROR | {error_msg}
80
- 💡 TIP: Supported platforms are Windows, Linux, and macOS (Darwin)
81
- {"⚠️" * 20}
82
- """)
98
+ console.print(
99
+ Panel.fit(
100
+ "\n".join([error_msg, "💡 Supported platforms are Windows, Linux, and macOS (Darwin)"]),
101
+ title="❌ Error",
102
+ subtitle="⚠️ Unsupported platform",
103
+ border_style="red",
104
+ box=box.ROUNDED,
105
+ )
106
+ )
83
107
  raise NotImplementedError(error_msg)
84
108
 
85
109
 
@@ -8,6 +8,10 @@ using PowerShell scripts and font enumeration.
8
8
  import subprocess
9
9
  from typing import Iterable
10
10
 
11
+ from rich import box
12
+ from rich.console import Console
13
+ from rich.panel import Panel
14
+
11
15
  from machineconfig.utils.path_extended import PathExtended
12
16
  from machineconfig.utils.source_of_truth import LIBRARY_ROOT
13
17
  from machineconfig.utils.installer_utils.installer_class import Installer
@@ -42,6 +46,13 @@ REQUIRED_FONT_PATTERNS: tuple[str, ...] = (
42
46
  )
43
47
 
44
48
 
49
+ console = Console()
50
+
51
+
52
+ def render_banner(message: str, title: str, border_style: str, box_style: box.Box) -> None:
53
+ console.print(Panel.fit(message, title=title, border_style=border_style, box=box_style, padding=(1, 4)))
54
+
55
+
45
56
  def _list_installed_fonts() -> list[str]:
46
57
  """Return list of installed font file base names (without extension) on Windows.
47
58
 
@@ -64,7 +75,7 @@ def _list_installed_fonts() -> list[str]:
64
75
  fonts = [x.strip().replace("_", "") for x in res.stdout.splitlines() if x.strip() != ""]
65
76
  return fonts
66
77
  except Exception as exc: # noqa: BLE001
67
- print(f"⚠️ Could not enumerate installed fonts (continuing with install). Reason: {exc}")
78
+ console.print(f"⚠️ Could not enumerate installed fonts (continuing with install). Reason: {exc}")
68
79
  return []
69
80
 
70
81
 
@@ -100,26 +111,28 @@ def install_nerd_fonts() -> None:
100
111
  Raises:
101
112
  subprocess.CalledProcessError: If PowerShell installation fails
102
113
  """
103
- print(f"\n{'=' * 80}\n📦 INSTALLING NERD FONTS 📦\n{'=' * 80}")
114
+ console.print()
115
+ render_banner("📦 INSTALLING NERD FONTS 📦", "Nerd Fonts Installer", "magenta", box.DOUBLE)
116
+ console.print()
104
117
 
105
118
  installed = _list_installed_fonts()
106
119
  missing = _missing_required_fonts(installed)
107
120
 
108
121
  if len(missing) == 0:
109
- print("✅ Required Nerd Fonts already installed. Skipping download & install.")
122
+ console.print("✅ Required Nerd Fonts already installed. Skipping download & install.")
110
123
  return
111
124
 
112
- print(f"🔍 Missing fonts detected: {', '.join(missing)}. Proceeding with installation...")
113
- print("🔍 Downloading Nerd Fonts package...")
125
+ console.print(f"🔍 Missing fonts detected: {', '.join(missing)}. Proceeding with installation...")
126
+ console.print("🔍 Downloading Nerd Fonts package...")
114
127
 
115
128
  folder, _version_to_be_installed = Installer(installer_data=nerd_fonts).download(version=None)
116
129
 
117
- print("🧹 Cleaning up unnecessary files...")
130
+ console.print("🧹 Cleaning up unnecessary files...")
118
131
  [p.delete(sure=True) for p in folder.search("*Windows*")]
119
132
  [p.delete(sure=True) for p in folder.search("*readme*")]
120
133
  [p.delete(sure=True) for p in folder.search("*LICENSE*")]
121
134
 
122
- print("⚙️ Installing fonts via PowerShell...")
135
+ console.print("⚙️ Installing fonts via PowerShell...")
123
136
  file = PathExtended.tmpfile(suffix=".ps1")
124
137
  file.parent.mkdir(parents=True, exist_ok=True)
125
138
 
@@ -131,13 +144,15 @@ def install_nerd_fonts() -> None:
131
144
  try:
132
145
  subprocess.run(rf"powershell.exe -executionpolicy Bypass -nologo -noninteractive -File {str(file)}", check=True)
133
146
  except subprocess.CalledProcessError as cpe:
134
- print(f"💥 Font installation script failed: {cpe}")
147
+ console.print(f"💥 Font installation script failed: {cpe}")
135
148
  raise
136
149
  finally:
137
- print("🗑️ Cleaning up temporary files...")
150
+ console.print("🗑️ Cleaning up temporary files...")
138
151
  if folder.exists():
139
152
  folder.delete(sure=True)
140
153
  if file.exists():
141
154
  file.delete(sure=True)
142
155
 
143
- print(f"\n✅ Nerd Fonts installation complete! ✅\n{'=' * 80}")
156
+ console.print()
157
+ render_banner("✅ Nerd Fonts installation complete! ✅", "Nerd Fonts Installer", "green", box.DOUBLE)
158
+ console.print()
@@ -3,34 +3,42 @@
3
3
  import platform
4
4
  import subprocess
5
5
  from typing import Optional
6
+ from rich import box
7
+ from rich.console import Console
8
+ from rich.panel import Panel
6
9
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
7
10
 
8
11
  # config_dict: InstallerData = {"appName": "Redis", "repoURL": "CMD", "doc": "submillisecond fast key-value db"}
9
12
 
10
13
 
11
- def main(installer_data: InstallerData, version: Optional[str]):
14
+ def main(installer_data: InstallerData, version: Optional[str]) -> None:
15
+ console = Console()
12
16
  _ = installer_data
13
- print(f"""
14
- {"=" * 150}
15
- 🗃️ REDIS INSTALLER | Setting up in-memory database
16
- 💻 Platform: {platform.system()}
17
- 🔄 Version: {"latest" if version is None else version}
18
- {"=" * 150}
19
- """)
17
+ console.print(
18
+ Panel.fit(
19
+ "\n".join([f"💻 Platform: {platform.system()}", f"🔄 Version: {'latest' if version is None else version}"]),
20
+ title="🗃️ Redis Installer",
21
+ border_style="red",
22
+ box=box.ROUNDED,
23
+ )
24
+ )
20
25
 
21
26
  _ = version
22
27
  if platform.system() == "Windows":
23
28
  error_msg = "Redis installation not supported on Windows through this installer"
24
- print(f"""
25
- {"⚠️" * 20}
26
- ERROR | {error_msg}
27
- 💡 TIP: Consider using WSL2 or Docker to run Redis on Windows
28
- {"⚠️" * 20}
29
- """)
29
+ console.print(
30
+ Panel.fit(
31
+ "\n".join([error_msg, "💡 Consider using WSL2 or Docker to run Redis on Windows"]),
32
+ title="❌ Error",
33
+ subtitle="⚠️ Unsupported platform",
34
+ border_style="red",
35
+ box=box.ROUNDED,
36
+ )
37
+ )
30
38
  raise NotImplementedError(error_msg)
31
39
  elif platform.system() in ["Linux", "Darwin"]:
32
40
  system_name = "Linux" if platform.system() == "Linux" else "macOS"
33
- print(f"🐧 Installing Redis on {system_name} using installation script...")
41
+ console.print(f"🐧 Installing Redis on {system_name} using installation script...", style="bold")
34
42
  import machineconfig.jobs.installer as module
35
43
  from pathlib import Path
36
44
  if platform.system() == "Linux":
@@ -39,30 +47,40 @@ def main(installer_data: InstallerData, version: Optional[str]):
39
47
  program = "brew install redis"
40
48
  else:
41
49
  error_msg = f"Unsupported platform: {platform.system()}"
42
- print(f"""
43
- {"⚠️" * 20}
44
- ❌ ERROR | {error_msg}
45
- {"⚠️" * 20}
46
- """)
50
+ console.print(
51
+ Panel.fit(
52
+ "\n".join([error_msg]),
53
+ title="❌ Error",
54
+ subtitle="⚠️ Unsupported platform",
55
+ border_style="red",
56
+ box=box.ROUNDED,
57
+ )
58
+ )
47
59
  raise NotImplementedError(error_msg)
48
60
 
49
- print(f"""
50
- {"=" * 150}
51
- ℹ️ INFO | Redis features:
52
- ⚡ In-memory data structure store
53
- 🔑 Key-value database with optional persistence
54
- 🚀 Sub-millisecond response times
55
- 💾 Supports strings, lists, sets, sorted sets, hashes
56
- 🔄 Built-in replication and Lua scripting
57
- {"=" * 150}
58
- """)
61
+ console.print(
62
+ Panel.fit(
63
+ "\n".join(
64
+ [
65
+ "⚡ In-memory data structure store",
66
+ "🔑 Key-value database with optional persistence",
67
+ "🚀 Sub-millisecond response times",
68
+ "💾 Supports strings, lists, sets, sorted sets, hashes",
69
+ "🔄 Built-in replication and Lua scripting",
70
+ ]
71
+ ),
72
+ title="ℹ️ Redis Features",
73
+ border_style="magenta",
74
+ box=box.ROUNDED,
75
+ )
76
+ )
59
77
 
60
- print("🔄 EXECUTING | Running Redis installation...")
78
+ console.print("🔄 EXECUTING | Running Redis installation...", style="bold yellow")
61
79
  try:
62
80
  subprocess.run(program, shell=True, text=True, check=True)
63
- print("✅ Redis installation completed successfully")
81
+ console.print("✅ Redis installation completed successfully", style="bold green")
64
82
  except subprocess.CalledProcessError as e:
65
- print(f"❌ Installation failed with exit code {e.returncode}")
83
+ console.print(f"❌ Installation failed with exit code {e.returncode}", style="bold red")
66
84
  raise
67
85
 
68
86
 
@@ -2110,6 +2110,23 @@
2110
2110
  }
2111
2111
  }
2112
2112
  },
2113
+ {
2114
+ "appName": "auggie",
2115
+ "repoURL": "CMD",
2116
+ "doc": "Terminal-based CLI agents and tools for productivity and coding.",
2117
+ "fileNamePattern": {
2118
+ "amd64": {
2119
+ "linux": "npm install -g @augmentcode/auggie",
2120
+ "windows": "npm install -g @augmentcode/auggie",
2121
+ "macos": "npm install -g @augmentcode/auggie"
2122
+ },
2123
+ "arm64": {
2124
+ "linux": "npm install -g @augmentcode/auggie",
2125
+ "windows": "npm install -g @augmentcode/auggie",
2126
+ "macos": "npm install -g @augmentcode/auggie"
2127
+ }
2128
+ }
2129
+ },
2113
2130
  {
2114
2131
  "appName": "warp",
2115
2132
  "repoURL": "CMD",