machineconfig 3.92__py3-none-any.whl → 3.94__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 (74) hide show
  1. machineconfig/jobs/{python_custom_installers → installer/custom}/gh.py +22 -7
  2. machineconfig/jobs/{python_custom_installers → installer/custom}/hx.py +13 -4
  3. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/alacritty.py +11 -5
  4. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/brave.py +17 -14
  5. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/bypass_paywall.py +7 -9
  6. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/code.py +13 -13
  7. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/cursor.py +7 -7
  8. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/espanso.py +21 -17
  9. machineconfig/jobs/installer/custom_dev/goes.py +63 -0
  10. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/lvim.py +10 -14
  11. machineconfig/jobs/installer/custom_dev/nerdfont.py +87 -0
  12. machineconfig/{setup_windows/wt_and_pwsh/install_nerd_fonts.py → jobs/installer/custom_dev/nerfont_windows_helper.py} +68 -25
  13. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/redis.py +13 -8
  14. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/wezterm.py +13 -7
  15. machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/winget.py +1 -3
  16. machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/docker.sh +1 -1
  17. machineconfig/jobs/installer/packages_custom_dev.json +226 -0
  18. machineconfig/jobs/installer/packages_custom_essential.json +39 -0
  19. machineconfig/jobs/installer/packages_github_dev.json +1110 -0
  20. machineconfig/jobs/installer/packages_github_essential.json +804 -0
  21. machineconfig/jobs/linux/msc/cli_agents.sh +5 -0
  22. machineconfig/scripts/python/ai/solutions/gemini/settings.json +1 -1
  23. machineconfig/scripts/python/devops_devapps_install.py +31 -20
  24. machineconfig/utils/installer.py +17 -80
  25. machineconfig/utils/installer_utils/github_release_bulk.py +198 -0
  26. machineconfig/utils/installer_utils/installer_class.py +223 -210
  27. machineconfig/utils/schemas/installer/installer_types.py +29 -6
  28. {machineconfig-3.92.dist-info → machineconfig-3.94.dist-info}/METADATA +1 -1
  29. {machineconfig-3.92.dist-info → machineconfig-3.94.dist-info}/RECORD +45 -67
  30. machineconfig/jobs/python_custom_installers/archive/ngrok.py +0 -63
  31. machineconfig/jobs/python_custom_installers/dev/aider.py +0 -37
  32. machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -78
  33. machineconfig/jobs/python_custom_installers/dev/goes.py +0 -55
  34. machineconfig/jobs/python_custom_installers/dev/nerdfont.py +0 -68
  35. machineconfig/jobs/python_custom_installers/dev/reverse_proxy.md +0 -31
  36. machineconfig/jobs/python_custom_installers/docker.py +0 -74
  37. machineconfig/jobs/python_custom_installers/warp-cli.py +0 -71
  38. machineconfig/jobs/python_generic_installers/config.json +0 -603
  39. machineconfig/jobs/python_generic_installers/config.json.bak +0 -414
  40. machineconfig/jobs/python_generic_installers/dev/config.archive.json +0 -18
  41. machineconfig/jobs/python_generic_installers/dev/config.json +0 -825
  42. machineconfig/jobs/python_generic_installers/dev/config.json.bak +0 -565
  43. machineconfig/jobs/python_linux_installers/__init__.py +0 -0
  44. machineconfig/jobs/python_linux_installers/archive/config.json +0 -18
  45. machineconfig/jobs/python_linux_installers/archive/config.json.bak +0 -10
  46. machineconfig/jobs/python_linux_installers/config.json +0 -145
  47. machineconfig/jobs/python_linux_installers/config.json.bak +0 -110
  48. machineconfig/jobs/python_linux_installers/dev/__init__.py +0 -0
  49. machineconfig/jobs/python_linux_installers/dev/config.json +0 -276
  50. machineconfig/jobs/python_linux_installers/dev/config.json.bak +0 -206
  51. machineconfig/jobs/python_windows_installers/__init__.py +0 -0
  52. machineconfig/jobs/python_windows_installers/archive/__init__.py +0 -0
  53. machineconfig/jobs/python_windows_installers/archive/file.json +0 -11
  54. machineconfig/jobs/python_windows_installers/config.json +0 -82
  55. machineconfig/jobs/python_windows_installers/config.json.bak +0 -56
  56. machineconfig/jobs/python_windows_installers/dev/__init__.py +0 -0
  57. machineconfig/jobs/python_windows_installers/dev/config.json +0 -4
  58. machineconfig/jobs/python_windows_installers/dev/config.json.bak +0 -3
  59. /machineconfig/jobs/{python_custom_installers → installer}/__init__.py +0 -0
  60. /machineconfig/jobs/{python_generic_installers → installer/custom_dev}/__init__.py +0 -0
  61. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/brave.sh +0 -0
  62. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/docker_start.sh +0 -0
  63. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/edge.sh +0 -0
  64. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/nerdfont.sh +0 -0
  65. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/pgsql.sh +0 -0
  66. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/redis.sh +0 -0
  67. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/timescaledb.sh +0 -0
  68. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/vscode.sh +0 -0
  69. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/warp-cli.sh +0 -0
  70. /machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/wezterm.sh +0 -0
  71. /machineconfig/{setup_windows/wt_and_pwsh → jobs/installer/powershell_scripts}/install_fonts.ps1 +0 -0
  72. {machineconfig-3.92.dist-info → machineconfig-3.94.dist-info}/WHEEL +0 -0
  73. {machineconfig-3.92.dist-info → machineconfig-3.94.dist-info}/entry_points.txt +0 -0
  74. {machineconfig-3.92.dist-info → machineconfig-3.94.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,10 @@
1
1
  """gh-cli installer"""
2
2
 
3
3
  import platform
4
+ import subprocess
4
5
  from typing import Optional
5
6
  from machineconfig.utils.installer_utils.installer_class import Installer
6
7
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
7
- from machineconfig.utils.terminal import Terminal
8
8
 
9
9
  r"""
10
10
  https://github.com/cli/cli
@@ -23,9 +23,18 @@ config_dict: InstallerData = {
23
23
  "appName": "gh",
24
24
  "repoURL": "https://github.com/cli/cli",
25
25
  "doc": "GitHub CLI",
26
- "filenameTemplate": {"amd64": {"windows": "gh_{}_windows_amd64.zip", "linux": "gh_{}_linux_amd64.tar.gz", "macos": "gh_{}_macOS_amd64.tar.gz"}},
27
- "stripVersion": True,
28
- "exeName": "gh",
26
+ "fileNamePattern": {
27
+ "amd64": {
28
+ "windows": "gh_{version}_windows_amd64.msi",
29
+ "linux": "gh_{version}_linux_amd64.deb",
30
+ "macos": "gh_{version}_macOS_amd64.pkg",
31
+ },
32
+ "arm64": {
33
+ "windows": "gh_{version}_windows_arm64.msi",
34
+ "linux": "gh_{version}_linux_arm64.deb",
35
+ "macos": "gh_{version}_macOS_arm64.pkg",
36
+ },
37
+ },
29
38
  }
30
39
 
31
40
 
@@ -80,7 +89,15 @@ gh auth login --with-token $HOME/dotfiles/creds/git/gh_token.txt
80
89
  🔐 AUTHENTICATION | Setting up GitHub authentication with token...
81
90
  """)
82
91
 
83
- Terminal().run(program, shell="default").print(desc="Installing GitHub Copilot extension", capture=True)
92
+ print("""
93
+ 🔄 EXECUTING | Running GitHub Copilot extension installation and authentication...
94
+ """)
95
+ try:
96
+ subprocess.run(program, shell=True, text=True, check=True)
97
+ print("✅ Command executed successfully")
98
+ except subprocess.CalledProcessError as e:
99
+ print(f"❌ Command failed with exit code {e.returncode}")
100
+ raise
84
101
 
85
102
  print(f"""
86
103
  {"═" * 150}
@@ -90,8 +107,6 @@ gh auth login --with-token $HOME/dotfiles/creds/git/gh_token.txt
90
107
  {"═" * 150}
91
108
  """)
92
109
 
93
- return program
94
-
95
110
 
96
111
  if __name__ == "__main__":
97
112
  pass
@@ -16,11 +16,20 @@ from machineconfig.utils.schemas.installer.installer_types import InstallerData
16
16
 
17
17
  config_dict: InstallerData = {
18
18
  "appName": "hx",
19
- "repoURL": "CUSTOM",
19
+ "repoURL": "CMD",
20
20
  "doc": "Helix is a post-modern modal text editor.",
21
- "filenameTemplate": {"amd64": {"windows": "helix-{}-x86_64-windows.zip", "linux": "helix-{}-x86_64-linux.tar.xz", "macos": ""}, "arm64": {"windows": "", "linux": "", "macos": ""}},
22
- "stripVersion": False,
23
- "exeName": "hx",
21
+ "fileNamePattern": {
22
+ "amd64": {
23
+ "linux": "hx-linux-amd64.tar.xz",
24
+ "macos": "hx-macos-amd64.tar.xz",
25
+ "windows": "hx-windows-amd64.zip",
26
+ },
27
+ "arm64": {
28
+ "linux": "hx-linux-arm64.tar.xz",
29
+ "macos": "hx-macos-arm64.tar.xz",
30
+ "windows": "hx-windows-arm64.zip",
31
+ },
32
+ },
24
33
  }
25
34
 
26
35
 
@@ -1,14 +1,16 @@
1
1
  """alacritty"""
2
2
 
3
3
  import platform
4
+ import subprocess
4
5
  from typing import Optional
5
6
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
6
7
 
7
8
 
8
- config_dict: InstallerData = {"appName": "Alacritty", "repoURL": "CUSTOM", "doc": "Terminal Console", "filenameTemplate": {"amd64": {"windows": "", "linux": "", "macos": ""}}, "stripVersion": False, "exeName": "alacritty"}
9
+ # config_dict: InstallerData = {"appName": "Alacritty", "repoURL": "CMD", "doc": "Terminal Console"}
9
10
 
10
11
 
11
- def main(version: Optional[str]):
12
+ def main(installer_data: InstallerData, version: Optional[str]):
13
+ _ = installer_data
12
14
  print(f"""
13
15
  {"=" * 150}
14
16
  🖥️ ALACRITTY INSTALLER | Installing GPU-accelerated terminal emulator
@@ -56,9 +58,13 @@ git clone https://github.com/alacritty/alacritty-theme ~/.config/alacritty/theme
56
58
  {"=" * 150}
57
59
  """)
58
60
 
59
- # _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
60
- # run script here as it requires user input
61
- return program
61
+ print("🔄 EXECUTING | Running Alacritty installation...")
62
+ try:
63
+ subprocess.run(program, shell=True, text=True, check=True)
64
+ print("✅ Alacritty installation completed successfully")
65
+ except subprocess.CalledProcessError as e:
66
+ print(f"❌ Installation failed with exit code {e.returncode}")
67
+ raise
62
68
 
63
69
 
64
70
  if __name__ == "__main__":
@@ -1,22 +1,21 @@
1
1
  """brave installer"""
2
2
 
3
3
  import platform
4
+ import subprocess
4
5
  from typing import Optional
5
6
 
6
7
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
7
8
 
8
9
 
9
- config_dict: InstallerData = {
10
- "appName": "Brave",
11
- "repoURL": "CUSTOM",
12
- "doc": "Privacy-focused web browser with built-in ad blocking",
13
- "filenameTemplate": {"amd64": {"windows": "", "linux": "", "macos": ""}},
14
- "stripVersion": False,
15
- "exeName": "brave",
16
- }
10
+ # config_dict: InstallerData = {
11
+ # "appName": "Brave",
12
+ # "repoURL": "CMD",
13
+ # "doc": "Privacy-focused web browser with built-in ad blocking",
14
+ # }
17
15
 
18
16
 
19
- def main(version: Optional[str]):
17
+ def main(installer_data: InstallerData, version: Optional[str]):
18
+ _ = installer_data
20
19
  print(f"""
21
20
  {"=" * 150}
22
21
  🦁 BRAVE BROWSER | Installing privacy-focused web browser
@@ -36,11 +35,11 @@ winget install --Name "Brave Browser" --Id Brave.Brave --source winget --accept-
36
35
  elif platform.system() in ["Linux", "Darwin"]:
37
36
  system_name = "Linux" if platform.system() == "Linux" else "macOS"
38
37
  print(f"🐧 Installing Brave Browser on {system_name}...")
39
- import machineconfig.jobs.python_custom_installers as module
38
+ import machineconfig.jobs.installer as module
40
39
  from pathlib import Path
41
40
 
42
41
  if platform.system() == "Linux":
43
- program = Path(module.__file__).parent.joinpath("scripts/linux/brave.sh").read_text(encoding="utf-8")
42
+ program = Path(module.__file__).parent.joinpath("linux_scripts/brave.sh").read_text(encoding="utf-8")
44
43
  else: # Darwin/macOS
45
44
  program = "brew install --cask brave-browser"
46
45
  else:
@@ -62,9 +61,13 @@ winget install --Name "Brave Browser" --Id Brave.Brave --source winget --accept-
62
61
  {"=" * 150}
63
62
  """)
64
63
 
65
- # _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
66
- # run script here as it requires user input
67
- return program
64
+ print("🔄 EXECUTING | Running Brave Browser installation...")
65
+ try:
66
+ subprocess.run(program, shell=True, text=True, check=True)
67
+ print("✅ Brave Browser installation completed successfully")
68
+ except subprocess.CalledProcessError as e:
69
+ print(f"❌ Installation failed with exit code {e.returncode}")
70
+ raise
68
71
 
69
72
 
70
73
  if __name__ == "__main__":
@@ -6,17 +6,15 @@ from machineconfig.utils.schemas.installer.installer_types import InstallerData
6
6
  from machineconfig.utils.path_extended import PathExtended as PathExtended
7
7
 
8
8
 
9
- config_dict: InstallerData = {
10
- "appName": "bypass-paywalls-chrome",
11
- "repoURL": "https://github.com/iamadamdev/bypass-paywalls-chrome",
12
- "doc": """Plugin for chrome to bypass paywalls""",
13
- "filenameTemplate": {"amd64": {"windows": "", "linux": "", "macos": ""}, "arm64": {"windows": "", "linux": "", "macos": ""}},
14
- "stripVersion": True,
15
- "exeName": "",
16
- }
9
+ # config_dict: InstallerData = {
10
+ # "appName": "bypass-paywalls-chrome",
11
+ # "repoURL": "https://github.com/iamadamdev/bypass-paywalls-chrome",
12
+ # "doc": """Plugin for chrome to bypass paywalls""",
13
+ # }
17
14
 
18
15
 
19
- def main(version: Optional[str] = None):
16
+ def main(installer_data: InstallerData, version: Optional[str] = None):
17
+ _ = installer_data
20
18
  print(f"""
21
19
  {"=" * 150}
22
20
  🔓 BYPASS PAYWALL | Installing paywall bypass extension for Chrome
@@ -2,19 +2,12 @@
2
2
 
3
3
  from typing import Optional
4
4
  import platform
5
+ import subprocess
5
6
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
6
7
 
7
- config_dict: InstallerData = {
8
- "appName": "Visual Studio Code",
9
- "repoURL": "CUSTOM",
10
- "doc": "Visual Studio Code",
11
- "filenameTemplate": {"amd64": {"windows": "VSCodeSetup-{}.exe", "linux": "code_{}.deb", "macos": ""}},
12
- "stripVersion": True,
13
- "exeName": "code",
14
- }
15
8
 
16
-
17
- def main(version: Optional[str] = None):
9
+ def main(installer_data: InstallerData, version: Optional[str] = None):
10
+ _ = installer_data
18
11
  print(f"""
19
12
  {"=" * 150}
20
13
  💻 VS CODE INSTALLER | Setting up Visual Studio Code
@@ -25,10 +18,10 @@ def main(version: Optional[str] = None):
25
18
 
26
19
  if platform.system() == "Linux":
27
20
  print("🐧 Installing VS Code on Linux using official script...")
28
- import machineconfig.jobs.python_custom_installers as module
21
+ import machineconfig.jobs.installer as module
29
22
  from pathlib import Path
30
23
 
31
- install_script = Path(module.__file__).parent.joinpath("scripts/linux/vscode.sh").read_text(encoding="utf-8")
24
+ install_script = Path(module.__file__).parent.joinpath("linux_scripts/vscode.sh").read_text(encoding="utf-8")
32
25
  elif platform.system() == "Darwin":
33
26
  print("🍎 Installing VS Code on macOS using Homebrew...")
34
27
  install_script = """brew install --cask visual-studio-code"""
@@ -44,7 +37,14 @@ def main(version: Optional[str] = None):
44
37
  """)
45
38
  raise NotImplementedError(error_msg)
46
39
  _ = version
47
- return install_script
40
+
41
+ print("🔄 EXECUTING | Running VS Code installation...")
42
+ try:
43
+ subprocess.run(install_script, shell=True, text=True, check=True)
44
+ print("✅ VS Code installation completed successfully")
45
+ except subprocess.CalledProcessError as e:
46
+ print(f"❌ Installation failed with exit code {e.returncode}")
47
+ raise
48
48
 
49
49
 
50
50
  if __name__ == "__main__":
@@ -7,7 +7,7 @@ from typing import Optional
7
7
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
8
8
 
9
9
 
10
- config_dict: InstallerData = {"appName": "Cursor", "repoURL": "CUSTOM", "doc": "Cursor", "filenameTemplate": {"amd64": {"windows": "VSCodeSetup-{}.exe", "linux": "code_{}.deb", "macos": ""}}, "stripVersion": True, "exeName": "cursor"}
10
+ # config_dict: InstallerData = {"appName": "Cursor", "repoURL": "CMD", "doc": "Cursor"}
11
11
 
12
12
 
13
13
  def install_linux(version: Optional[str] = None):
@@ -75,19 +75,17 @@ def install_windows(version: Optional[str] = None):
75
75
  # Run the installer silently
76
76
  try:
77
77
  print("Running Cursor installer...")
78
- subprocess.run([str(cursor_installer), "/SILENT"], capture_output=True, text=True, check=True)
78
+ subprocess.run([str(cursor_installer), "/SILENT"], text=True, check=True)
79
79
  print("Cursor installer completed successfully.")
80
80
  except subprocess.CalledProcessError as e:
81
81
  print(f"Installer failed with exit code {e.returncode}")
82
- print(f"Error output: {e.stderr}")
83
82
  # Try alternative silent install flags
84
83
  try:
85
84
  print("Trying alternative silent install...")
86
- subprocess.run([str(cursor_installer), "/S"], capture_output=True, text=True, check=True)
85
+ subprocess.run([str(cursor_installer), "/S"], text=True, check=True)
87
86
  print("Cursor installer completed successfully with /S flag.")
88
87
  except subprocess.CalledProcessError as e2:
89
88
  print(f"Alternative installer also failed with exit code {e2.returncode}")
90
- print(f"Error output: {e2.stderr}")
91
89
  # If silent install fails, run normally and let user handle it
92
90
  print("Running installer in normal mode (user interaction required)...")
93
91
  subprocess.run([str(cursor_installer)])
@@ -102,8 +100,9 @@ def install_windows(version: Optional[str] = None):
102
100
  print("Cursor installation completed. Check your Start Menu or Desktop for Cursor.")
103
101
 
104
102
 
105
- def main(version: Optional[str] = None):
103
+ def main(installer_data: InstallerData, version: Optional[str] = None):
106
104
  """Main installation function that handles both Linux and Windows."""
105
+ _ = installer_data
107
106
  system = platform.system()
108
107
 
109
108
  if system == "Linux":
@@ -115,4 +114,5 @@ def main(version: Optional[str] = None):
115
114
 
116
115
 
117
116
  if __name__ == "__main__":
118
- main()
117
+ pass
118
+ # main()
@@ -1,23 +1,21 @@
1
- """
2
- A text expander is a program that detects when you type a specific keyword and replaces it with something else
1
+ """A text expander is a program that detects when you type a specific keyword and replaces it with something else
3
2
 
4
3
  https://github.com/espanso/espanso
5
4
  """
6
5
 
7
6
  from typing import Optional
7
+ import subprocess
8
8
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
9
9
 
10
- config_dict: InstallerData = {
11
- "appName": "espanso",
12
- "repoURL": "CUSTOM",
13
- "doc": "A text expander.",
14
- "filenameTemplate": {"amd64": {"windows": "Espanso-Win-Installer-x86_64.exe", "linux": "", "macos": "Espanso.dmg"}, "arm64": {"windows": "", "linux": "", "macos": ""}},
15
- "stripVersion": False,
16
- "exeName": "espanso",
17
- }
10
+ # config_dict: InstallerData = {
11
+ # "appName": "espanso",
12
+ # "repoURL": "CMD",
13
+ # "doc": "A text expander.",
14
+ # }
18
15
 
19
16
 
20
- def main(version: Optional[str]):
17
+ def main(installer_data: InstallerData, version: Optional[str]):
18
+ _ = installer_data
21
19
  print(f"""
22
20
  {"=" * 150}
23
21
  ⚡ ESPANSO INSTALLER | Setting up text expansion tool
@@ -29,7 +27,7 @@ def main(version: Optional[str]):
29
27
  _ = version
30
28
  import platform
31
29
 
32
- config_dict["repoURL"] = "https://github.com/espanso/espanso"
30
+ installer_data["repoURL"] = "https://github.com/espanso/espanso"
33
31
  if platform.system() == "Windows":
34
32
  print("🪟 Installing Espanso on Windows...")
35
33
  elif platform.system() in ["Linux", "Darwin"]:
@@ -44,7 +42,7 @@ def main(version: Optional[str]):
44
42
  📦 Using Wayland-specific package
45
43
  {"=" * 150}
46
44
  """)
47
- config_dict["filenameTemplate"]["amd64"]["linux"] = "espanso-debian-wayland-amd64.deb"
45
+ installer_data["fileNamePattern"]["amd64"]["linux"] = "espanso-debian-wayland-amd64.deb"
48
46
  else:
49
47
  print(f"""
50
48
  {"=" * 150}
@@ -52,10 +50,10 @@ def main(version: Optional[str]):
52
50
  📦 Using X11-specific package
53
51
  {"=" * 150}
54
52
  """)
55
- config_dict["filenameTemplate"]["amd64"]["linux"] = "espanso-debian-x11-amd64.deb"
53
+ installer_data["fileNamePattern"]["amd64"]["linux"] = "espanso-debian-x11-amd64.deb"
56
54
  else: # Darwin/macOS
57
55
  print("🍎 Installing Espanso on macOS...")
58
- config_dict["filenameTemplate"]["amd64"]["macos"] = "Espanso.dmg"
56
+ installer_data["fileNamePattern"]["amd64"]["macos"] = "Espanso.dmg"
59
57
  else:
60
58
  error_msg = f"Unsupported platform: {platform.system()}"
61
59
  print(f"""
@@ -68,7 +66,7 @@ def main(version: Optional[str]):
68
66
  print("🚀 Installing Espanso using installer...")
69
67
  from machineconfig.utils.installer_utils.installer_class import Installer
70
68
 
71
- installer = Installer(config_dict)
69
+ installer = Installer(installer_data)
72
70
  installer.install(version=None)
73
71
 
74
72
  config = """
@@ -87,4 +85,10 @@ espanso install actually-all-emojis
87
85
  {"=" * 150}
88
86
  """)
89
87
 
90
- return config
88
+ print("🔄 EXECUTING | Running Espanso configuration...")
89
+ try:
90
+ subprocess.run(config, shell=True, text=True, check=True)
91
+ print("✅ Espanso configuration completed successfully")
92
+ except subprocess.CalledProcessError as e:
93
+ print(f"❌ Configuration failed with exit code {e.returncode}")
94
+ raise
@@ -0,0 +1,63 @@
1
+ """natural language to API
2
+ https://github.com/ print("🔄 EXECUTING | Running Go installation...")
3
+ try:
4
+ subprocess.run(install_script, shell=True, text=True, check=True)
5
+ print("✅ Go installation completed successfully")
6
+ except subprocess.CalledProcessError as e:
7
+ print(f"❌ Installation failed with exit code {e.returncode}")
8
+ raisel/gorilla
9
+ """
10
+
11
+ import subprocess
12
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData
13
+
14
+ # config_dict: InstallerData = {
15
+ # "appName": "Gorilla",
16
+ # "repoURL": "https://github.com/ShishirPatil/gorilla",
17
+ # "doc": "natural language to API",
18
+ # }
19
+
20
+ ve_name = "goex"
21
+
22
+
23
+ def main(installer_data: InstallerData):
24
+ _ = installer_data
25
+ print(f"""
26
+ {"=" * 150}
27
+ 🦍 GORILLA INSTALLER | Natural language to API converter
28
+ 🌐 Source: https://github.com/ShishirPatil/gorilla
29
+ 📦 Virtual Environment: {ve_name}
30
+ {"=" * 150}
31
+ """)
32
+
33
+ print("🔄 Preparing installation script...")
34
+ install_script = """
35
+
36
+ cd ~/code/foreign
37
+ git clone https://github.com/ShishirPatil/gorilla --depth 1
38
+ cd gorilla/goex
39
+ uv sync
40
+ """
41
+
42
+ print(f"""
43
+ {"=" * 150}
44
+ 📋 INSTALLATION STEPS:
45
+ 1️⃣ Creating Python 3.13 virtual environment: {ve_name}
46
+ 2️⃣ Cloning Gorilla repository to ~/code/foreign
47
+ 3️⃣ Installing Gorilla in development mode
48
+ {"=" * 150}
49
+
50
+ ✅ Installation script prepared successfully!
51
+ """)
52
+
53
+ print("🔄 EXECUTING | Running Gorilla installation...")
54
+ try:
55
+ subprocess.run(install_script, shell=True, text=True, check=True)
56
+ print("✅ Gorilla installation completed successfully")
57
+ except subprocess.CalledProcessError as e:
58
+ print(f"❌ Installation failed with exit code {e.returncode}")
59
+ raise
60
+
61
+
62
+ if __name__ == "__main__":
63
+ pass
@@ -11,17 +11,8 @@ _ = Terminal, subprocess
11
11
  # as per https://www.lunarvim.org/docs/installation
12
12
 
13
13
 
14
- config_dict: InstallerData = {
15
- "appName": "lvim",
16
- "repoURL": "CUSTOM",
17
- "doc": "Terminal text editor based on neovim.",
18
- "filenameTemplate": {"amd64": {"windows": "", "linux": "", "macos": ""}, "arm64": {"windows": "", "linux": "", "macos": ""}},
19
- "stripVersion": False,
20
- "exeName": "lvim",
21
- }
22
-
23
-
24
- def main(version: Optional[str]):
14
+ def main(installer_data: InstallerData, version: Optional[str]):
15
+ _ = installer_data
25
16
  print(f"""
26
17
  {"=" * 150}
27
18
  🌙 LUNARVIM INSTALLER | Setting up Neovim-based IDE
@@ -68,9 +59,14 @@ LV_BRANCH='release-1.4/neovim-0.9' bash <(curl -s https://raw.githubusercontent.
68
59
  ⚠️ NOTE: The installer will prompt for user input during installation.
69
60
  """)
70
61
 
71
- # _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
72
- # run script here as it requires user input
73
- return program
62
+ print("🔄 EXECUTING | Running LunarVim installation...")
63
+ try:
64
+ # Run with shell=True and allow interaction for user input
65
+ subprocess.run(program, shell=True, check=True)
66
+ print("✅ LunarVim installation completed successfully")
67
+ except subprocess.CalledProcessError as e:
68
+ print(f"❌ Installation failed with exit code {e.returncode}")
69
+ raise
74
70
 
75
71
 
76
72
  if __name__ == "__main__":
@@ -0,0 +1,87 @@
1
+ """Nerd Fonts installer - Cross-platform font installation"""
2
+
3
+ import platform
4
+ import subprocess
5
+ from typing import Optional
6
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData
7
+
8
+
9
+ def main(installer_data: InstallerData, version: Optional[str]) -> None:
10
+ """Main entry point for Nerd Fonts installation.
11
+
12
+ Args:
13
+ installer_data: Installation configuration data
14
+ version: Specific version to install (None for latest)
15
+ """
16
+ _ = 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
+ """)
24
+
25
+ _ = version
26
+ current_platform = platform.system()
27
+
28
+ if current_platform == "Windows":
29
+ print("🪟 Installing Nerd Fonts on Windows...")
30
+ from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
31
+
32
+ try:
33
+ 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:
41
+ 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
+ """)
48
+ raise RuntimeError(error_msg) from e
49
+
50
+ elif current_platform in ["Linux", "Darwin"]:
51
+ print(f"🐧 Installing Nerd Fonts on {current_platform} using installation script...")
52
+ import machineconfig.jobs.installer as module
53
+ from pathlib import Path
54
+
55
+ 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...")
68
+ try:
69
+ subprocess.run(program, shell=True, text=True, check=True)
70
+ print("✅ Nerd Fonts installation completed successfully")
71
+ except subprocess.CalledProcessError as e:
72
+ print(f"❌ Installation failed with exit code {e.returncode}")
73
+ raise
74
+
75
+ else:
76
+ 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
+ """)
83
+ raise NotImplementedError(error_msg)
84
+
85
+
86
+ if __name__ == "__main__":
87
+ pass