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,41 +1,65 @@
1
1
  """
2
- setup file for each shell can be found in $profile. The settings.json is the config file for Terminal.
3
- https://glitchbone.github.io/vscode-base16-term/#/3024
2
+ Windows-specific Nerd Fonts installation helper module.
4
3
 
4
+ This module provides Windows-specific functionality for installing Nerd Fonts
5
+ using PowerShell scripts and font enumeration.
5
6
  """
6
7
 
7
- from machineconfig.utils.path_extended import PathExtended as PathExtended
8
- from machineconfig.utils.source_of_truth import LIBRARY_ROOT
9
- from machineconfig.utils.installer_utils.installer_class import Installer
10
8
  import subprocess
11
9
  from typing import Iterable
10
+
11
+ from machineconfig.utils.path_extended import PathExtended
12
+ from machineconfig.utils.source_of_truth import LIBRARY_ROOT
13
+ from machineconfig.utils.installer_utils.installer_class import Installer
12
14
  from machineconfig.utils.schemas.installer.installer_types import InstallerData
13
15
 
14
16
 
17
+ # Nerd Fonts installer configuration data
15
18
  nerd_fonts: InstallerData = {
16
19
  "appName": "Cascadia Code Nerd Font",
17
20
  "repoURL": "https://github.com/ryanoasis/nerd-fonts",
18
21
  "doc": "Nerd Fonts is a project that patches developer targeted fonts with a high number of glyphs (icons)",
19
- "filenameTemplate": {"amd64": {"windows": "CascadiaCode.zip", "linux": "CascadiaCode.zip", "macos": ""}, "arm64": {"windows": "", "linux": "", "macos": ""}},
20
- "stripVersion": False,
21
- "exeName": "nerd_fonts",
22
+ "fileNamePattern": {
23
+ "amd64": {
24
+ "windows": "CaskaydiaCoveNerdFontWindows.zip",
25
+ "linux": "CaskaydiaCoveNerdFontLinux.zip",
26
+ "macos": "CaskaydiaCoveNerdFontMac.zip",
27
+ },
28
+ "arm64": {
29
+ "windows": "CaskaydiaCoveNerdFontWindows.zip",
30
+ "linux": "CaskaydiaCoveNerdFontLinux.zip",
31
+ "macos": "CaskaydiaCoveNerdFontMac.zip",
32
+ }
33
+ }
22
34
  }
23
35
 
24
36
 
25
37
  # Patterns to match any installed variant (NF, Nerd Font, Mono, Propo, style weights) of Cascadia/Caskaydia
26
38
  # We'll compile them at runtime for flexibility. Keep them simple to avoid false positives.
27
- REQUIRED_FONT_PATTERNS: tuple[str, ...] = (r"caskaydiacove.*(nf|nerd ?font)", r"cascadiacode.*(nf|nerd ?font)")
39
+ REQUIRED_FONT_PATTERNS: tuple[str, ...] = (
40
+ r"caskaydiacove.*(nf|nerd ?font)",
41
+ r"cascadiacode.*(nf|nerd ?font)"
42
+ )
28
43
 
29
44
 
30
45
  def _list_installed_fonts() -> list[str]:
31
46
  """Return list of installed font file base names (without extension) on Windows.
32
47
 
33
- Uses PowerShell to enumerate c:\\windows\\fonts because Python on *nix host can't rely on that path.
48
+ Uses PowerShell to enumerate C:\\Windows\\Fonts because Python on *nix host can't rely on that path.
34
49
  If PowerShell call fails (e.g. running on non-Windows), returns empty list so install proceeds.
50
+
51
+ Returns:
52
+ List of installed font base names
35
53
  """
36
54
  try:
37
55
  # Query only base names to make substring matching simpler; remove underscores like the PS script does.
38
- cmd = ["powershell.exe", "-NoLogo", "-NonInteractive", "-Command", "Get-ChildItem -Path C:/Windows/Fonts -File | Select-Object -ExpandProperty BaseName"]
56
+ cmd = [
57
+ "powershell.exe",
58
+ "-NoLogo",
59
+ "-NonInteractive",
60
+ "-Command",
61
+ "Get-ChildItem -Path C:/Windows/Fonts -File | Select-Object -ExpandProperty BaseName"
62
+ ]
39
63
  res = subprocess.run(cmd, capture_output=True, text=True, check=True) # noqa: S603 S607 (trusted command)
40
64
  fonts = [x.strip().replace("_", "") for x in res.stdout.splitlines() if x.strip() != ""]
41
65
  return fonts
@@ -45,6 +69,14 @@ def _list_installed_fonts() -> list[str]:
45
69
 
46
70
 
47
71
  def _missing_required_fonts(installed_fonts: Iterable[str]) -> list[str]:
72
+ """Check which required font patterns are missing from installed fonts.
73
+
74
+ Args:
75
+ installed_fonts: List of installed font names
76
+
77
+ Returns:
78
+ List of missing font patterns
79
+ """
48
80
  import re
49
81
 
50
82
  installed_norm = [f.lower().replace(" ", "") for f in installed_fonts]
@@ -57,14 +89,29 @@ def _missing_required_fonts(installed_fonts: Iterable[str]) -> list[str]:
57
89
 
58
90
 
59
91
  def install_nerd_fonts() -> None:
92
+ """Install Nerd Fonts on Windows using PowerShell script.
93
+
94
+ This function:
95
+ 1. Checks if required fonts are already installed
96
+ 2. Downloads the font package if needed
97
+ 3. Installs fonts using PowerShell script
98
+ 4. Cleans up temporary files
99
+
100
+ Raises:
101
+ subprocess.CalledProcessError: If PowerShell installation fails
102
+ """
60
103
  print(f"\n{'=' * 80}\n📦 INSTALLING NERD FONTS 📦\n{'=' * 80}")
104
+
61
105
  installed = _list_installed_fonts()
62
106
  missing = _missing_required_fonts(installed)
107
+
63
108
  if len(missing) == 0:
64
109
  print("✅ Required Nerd Fonts already installed. Skipping download & install.")
65
110
  return
111
+
66
112
  print(f"🔍 Missing fonts detected: {', '.join(missing)}. Proceeding with installation...")
67
113
  print("🔍 Downloading Nerd Fonts package...")
114
+
68
115
  folder, _version_to_be_installed = Installer(installer_data=nerd_fonts).download(version=None)
69
116
 
70
117
  print("🧹 Cleaning up unnecessary files...")
@@ -75,26 +122,22 @@ def install_nerd_fonts() -> None:
75
122
  print("⚙️ Installing fonts via PowerShell...")
76
123
  file = PathExtended.tmpfile(suffix=".ps1")
77
124
  file.parent.mkdir(parents=True, exist_ok=True)
125
+
78
126
  raw_content = LIBRARY_ROOT.joinpath("setup_windows/wt_and_pwsh/install_fonts.ps1").read_text(encoding="utf-8").replace(r".\fonts-to-be-installed", str(folder))
79
127
  # PowerShell 5.1 can choke on certain unicode chars in some locales; keep ASCII only.
80
128
  content = "".join(ch for ch in raw_content if ord(ch) < 128)
81
129
  file.write_text(content, encoding="utf-8")
130
+
82
131
  try:
83
132
  subprocess.run(rf"powershell.exe -executionpolicy Bypass -nologo -noninteractive -File {str(file)}", check=True)
84
133
  except subprocess.CalledProcessError as cpe:
85
- print(f"💥 Font installation script failed (continuing without abort): {cpe}")
86
- return
134
+ print(f"💥 Font installation script failed: {cpe}")
135
+ raise
136
+ finally:
137
+ print("🗑️ Cleaning up temporary files...")
138
+ if folder.exists():
139
+ folder.delete(sure=True)
140
+ if file.exists():
141
+ file.delete(sure=True)
87
142
 
88
- print("🗑️ Cleaning up temporary files...")
89
- folder.delete(sure=True)
90
143
  print(f"\n✅ Nerd Fonts installation complete! ✅\n{'=' * 80}")
91
-
92
-
93
- def main():
94
- print(f"\n{'=' * 80}\n🎨 POWERSHELL THEME SETUP 🎨\n{'=' * 80}")
95
- install_nerd_fonts()
96
- print(f"\n✅ All PowerShell theme components installed successfully! ✅\n{'=' * 80}")
97
-
98
-
99
- if __name__ == "__main__":
100
- pass
@@ -1,13 +1,15 @@
1
1
  """nedis installer"""
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
- config_dict: InstallerData = {"appName": "Redis", "repoURL": "CUSTOM", "doc": "submillisecond fast key-value db", "filenameTemplate": {"amd64": {"windows": "", "linux": "", "macos": ""}}, "stripVersion": False, "exeName": "redis"}
8
+ # config_dict: InstallerData = {"appName": "Redis", "repoURL": "CMD", "doc": "submillisecond fast key-value db"}
8
9
 
9
10
 
10
- def main(version: Optional[str]):
11
+ def main(installer_data: InstallerData, version: Optional[str]):
12
+ _ = installer_data
11
13
  print(f"""
12
14
  {"=" * 150}
13
15
  🗃️ REDIS INSTALLER | Setting up in-memory database
@@ -29,11 +31,10 @@ def main(version: Optional[str]):
29
31
  elif platform.system() in ["Linux", "Darwin"]:
30
32
  system_name = "Linux" if platform.system() == "Linux" else "macOS"
31
33
  print(f"🐧 Installing Redis on {system_name} using installation script...")
32
- import machineconfig.jobs.python_custom_installers as module
34
+ import machineconfig.jobs.installer as module
33
35
  from pathlib import Path
34
-
35
36
  if platform.system() == "Linux":
36
- program = Path(module.__file__).parent.joinpath("scripts/linux/redis.sh").read_text(encoding="utf-8")
37
+ program = Path(module.__file__).parent.joinpath("linux_scripts/redis.sh").read_text(encoding="utf-8")
37
38
  else: # Darwin/macOS
38
39
  program = "brew install redis"
39
40
  else:
@@ -56,9 +57,13 @@ def main(version: Optional[str]):
56
57
  {"=" * 150}
57
58
  """)
58
59
 
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
60
+ print("🔄 EXECUTING | Running Redis installation...")
61
+ try:
62
+ subprocess.run(program, shell=True, text=True, check=True)
63
+ print("✅ Redis installation completed successfully")
64
+ except subprocess.CalledProcessError as e:
65
+ print(f"❌ Installation failed with exit code {e.returncode}")
66
+ raise
62
67
 
63
68
 
64
69
  if __name__ == "__main__":
@@ -1,15 +1,17 @@
1
1
  """wezterm 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 = {"appName": "Wezterm", "repoURL": "CUSTOM", "doc": "Modern, GPU-accelerated terminal emulator", "filenameTemplate": {"amd64": {"windows": "", "linux": "", "macos": ""}}, "stripVersion": False, "exeName": "wezterm"}
10
+ # config_dict: InstallerData = {"appName": "Wezterm", "repoURL": "CMD", "doc": "Modern, GPU-accelerated terminal emulator"}
10
11
 
11
12
 
12
- def main(version: Optional[str]):
13
+ def main(installer_data: InstallerData, version: Optional[str]):
14
+ _ = installer_data
13
15
  print(f"""
14
16
  {"═" * 150}
15
17
  🖥️ WEZTERM INSTALLER | Modern, GPU-accelerated terminal emulator
@@ -33,11 +35,11 @@ def main(version: Optional[str]):
33
35
  print(f"""
34
36
  🐧 {system_name} SETUP | Installing WezTerm terminal emulator...
35
37
  """)
36
- import machineconfig.jobs.python_custom_installers as module
38
+ import machineconfig.jobs.installer as module
37
39
  from pathlib import Path
38
40
 
39
41
  if platform.system() == "Linux":
40
- program = Path(module.__file__).parent.joinpath("scripts/linux/wezterm.sh").read_text(encoding="utf-8")
42
+ program = Path(module.__file__).parent.joinpath("linux_scripts/wezterm.sh").read_text(encoding="utf-8")
41
43
  else: # Darwin/macOS
42
44
  program = "brew install --cask wezterm"
43
45
  else:
@@ -61,9 +63,13 @@ def main(version: Optional[str]):
61
63
  {"═" * 150}
62
64
  """)
63
65
 
64
- # _res = Terminal(stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).run_script(script=program, shell="default").print(desc="Running custom installer", capture=True)
65
- # run script here as it requires user input
66
- return program
66
+ print("🔄 EXECUTING | Running WezTerm installation...")
67
+ try:
68
+ subprocess.run(program, shell=True, text=True, check=True)
69
+ print("✅ WezTerm installation completed successfully")
70
+ except subprocess.CalledProcessError as e:
71
+ print(f"❌ Installation failed with exit code {e.returncode}")
72
+ raise
67
73
 
68
74
 
69
75
  if __name__ == "__main__":
@@ -3,10 +3,9 @@ import requests
3
3
  import tempfile
4
4
  from pathlib import Path
5
5
  from typing import Optional
6
- from machineconfig.utils.schemas.installer.installer_types import InstallerData
7
6
 
8
7
 
9
- config_dict: InstallerData = {"appName": "winget", "repoURL": "CUSTOM", "doc": "winget installer", "filenameTemplate": {"amd64": {"windows": "", "linux": "", "macos": ""}}, "stripVersion": False, "exeName": "winget"}
8
+ # config_dict: InstallerData = {"appName": "winget", "repoURL": "CMD", "doc": "winget installer"}
10
9
 
11
10
 
12
11
  def is_winget_available() -> bool:
@@ -93,7 +92,6 @@ def install_msix_package(package_path: Path) -> bool:
93
92
 
94
93
  result = subprocess.run(
95
94
  powershell_cmd,
96
- capture_output=True,
97
95
  text=True,
98
96
  timeout=300, # 5 minutes timeout
99
97
  )
@@ -105,7 +105,7 @@ docker run hello-world || echo "⚠️ Docker hello-world test failed (you may n
105
105
 
106
106
  echo "👥 Adding current user to docker group..."
107
107
  sudo groupadd docker 2>/dev/null || echo "ℹ️ Docker group already exists"
108
- sudo usermod -aG docker $USER || echo "⚠️ Failed to add user to docker group"
108
+ sudo usermod -aG docker $(whoami) || echo "⚠️ Failed to add user to docker group"
109
109
 
110
110
  echo """#=======================================================================
111
111
  ✅ INSTALLATION COMPLETE | Docker has been installed successfully
@@ -0,0 +1,226 @@
1
+ {
2
+ "version": "1",
3
+ "installers": [
4
+ {
5
+ "appName": "Visual Studio Code",
6
+ "repoURL": "CMD",
7
+ "doc": "Visual Studio Code",
8
+ "fileNamePattern": {
9
+ "amd64": {
10
+ "linux": "code.py",
11
+ "windows": "code.py",
12
+ "macos": "code.py"
13
+ },
14
+ "arm64": {
15
+ "linux": "code.py",
16
+ "windows": "code.py",
17
+ "macos": "code.py"
18
+ }
19
+ }
20
+ },
21
+ {
22
+ "appName": "aider-chat",
23
+ "repoURL": "CMD",
24
+ "doc": "Aider Chat",
25
+ "fileNamePattern": {
26
+ "amd64": {
27
+ "linux": "uv tool install --force --python python3.13 aider-chat@latest",
28
+ "windows": "uv tool install --force --python python3.13 aider-chat@latest",
29
+ "macos": "uv tool install --force --python python3.13 aider-chat@latest"
30
+ },
31
+ "arm64": {
32
+ "linux": "uv tool install --force --python python3.13 aider-chat@latest",
33
+ "windows": "uv tool install --force --python python3.13 aider-chat@latest",
34
+ "macos": "uv tool install --force --python python3.13 aider-chat@latest"
35
+ }
36
+ }
37
+ },
38
+ {
39
+ "appName": "Alacritty",
40
+ "repoURL": "CMD",
41
+ "doc": "Terminal Console",
42
+ "fileNamePattern": {
43
+ "amd64": {
44
+ "linux": "alacritty.py",
45
+ "windows": "alacritty.py",
46
+ "macos": "alacritty.py"
47
+ },
48
+ "arm64": {
49
+ "linux": "alacritty.py",
50
+ "windows": "alacritty.py",
51
+ "macos": "alacritty.py"
52
+ }
53
+ }
54
+ },
55
+ {
56
+ "appName": "Brave",
57
+ "repoURL": "CMD",
58
+ "doc": "Privacy-focused web browser with built-in ad blocking",
59
+ "fileNamePattern": {
60
+ "amd64": {
61
+ "linux": "brave.py",
62
+ "windows": "brave.py",
63
+ "macos": "brave.py"
64
+ },
65
+ "arm64": {
66
+ "linux": "brave.py",
67
+ "windows": "brave.py",
68
+ "macos": "brave.py"
69
+ }
70
+ }
71
+ },
72
+ {
73
+ "appName": "bypass-paywalls-chrome",
74
+ "repoURL": "https://github.com/iamadamdev/bypass-paywalls-chrome",
75
+ "doc": "Plugin for chrome to bypass paywalls",
76
+ "fileNamePattern": {
77
+ "amd64": {
78
+ "linux": "bypass_paywall.py",
79
+ "windows": "bypass_paywall.py",
80
+ "macos": "bypass_paywall.py"
81
+ },
82
+ "arm64": {
83
+ "linux": "bypass_paywall.py",
84
+ "windows": "bypass_paywall.py",
85
+ "macos": "bypass_paywall.py"
86
+ }
87
+ }
88
+ },
89
+ {
90
+ "appName": "Cursor",
91
+ "repoURL": "CMD",
92
+ "doc": "Cursor",
93
+ "fileNamePattern": {
94
+ "amd64": {
95
+ "linux": "cursor.py",
96
+ "windows": "cursor.py",
97
+ "macos": "cursor.py"
98
+ },
99
+ "arm64": {
100
+ "linux": "cursor.py",
101
+ "windows": "cursor.py",
102
+ "macos": "cursor.py"
103
+ }
104
+ }
105
+ },
106
+ {
107
+ "appName": "espanso",
108
+ "repoURL": "CMD",
109
+ "doc": "A text expander.",
110
+ "fileNamePattern": {
111
+ "amd64": {
112
+ "linux": "espanso.py",
113
+ "windows": "espanso.py",
114
+ "macos": "espanso.py"
115
+ },
116
+ "arm64": {
117
+ "linux": "espanso.py",
118
+ "windows": "espanso.py",
119
+ "macos": "espanso.py"
120
+ }
121
+ }
122
+ },
123
+ {
124
+ "appName": "Gorilla",
125
+ "repoURL": "https://github.com/ShishirPatil/gorilla",
126
+ "doc": "natural language to API",
127
+ "fileNamePattern": {
128
+ "amd64": {
129
+ "linux": "goes.py",
130
+ "windows": "goes.py",
131
+ "macos": "goes.py"
132
+ },
133
+ "arm64": {
134
+ "linux": "goes.py",
135
+ "windows": "goes.py",
136
+ "macos": "goes.py"
137
+ }
138
+ }
139
+ },
140
+ {
141
+ "appName": "lvim",
142
+ "repoURL": "CMD",
143
+ "doc": "Terminal text editor based on neovim.",
144
+ "fileNamePattern": {
145
+ "amd64": {
146
+ "linux": "lvim.py",
147
+ "windows": "lvim.py",
148
+ "macos": "lvim.py"
149
+ },
150
+ "arm64": {
151
+ "linux": "lvim.py",
152
+ "windows": "lvim.py",
153
+ "macos": "lvim.py"
154
+ }
155
+ }
156
+ },
157
+ {
158
+ "appName": "nerdfont",
159
+ "repoURL": "CMD",
160
+ "doc": "lightweight containerization",
161
+ "fileNamePattern": {
162
+ "amd64": {
163
+ "linux": "nerdfont.py",
164
+ "windows": "nerdfont.py",
165
+ "macos": "nerdfont.py"
166
+ },
167
+ "arm64": {
168
+ "linux": "nerdfont.py",
169
+ "windows": "nerdfont.py",
170
+ "macos": "nerdfont.py"
171
+ }
172
+ }
173
+ },
174
+ {
175
+ "appName": "Redis",
176
+ "repoURL": "CMD",
177
+ "doc": "submillisecond fast key-value db",
178
+ "fileNamePattern": {
179
+ "amd64": {
180
+ "linux": "redis.py",
181
+ "windows": "redis.py",
182
+ "macos": "redis.py"
183
+ },
184
+ "arm64": {
185
+ "linux": "redis.py",
186
+ "windows": "redis.py",
187
+ "macos": "redis.py"
188
+ }
189
+ }
190
+ },
191
+ {
192
+ "appName": "Wezterm",
193
+ "repoURL": "CMD",
194
+ "doc": "Modern, GPU-accelerated terminal emulator",
195
+ "fileNamePattern": {
196
+ "amd64": {
197
+ "linux": "wezterm.py",
198
+ "windows": "wezterm.py",
199
+ "macos": "wezterm.py"
200
+ },
201
+ "arm64": {
202
+ "linux": "wezterm.py",
203
+ "windows": "wezterm.py",
204
+ "macos": "wezterm.py"
205
+ }
206
+ }
207
+ },
208
+ {
209
+ "appName": "winget",
210
+ "repoURL": "CMD",
211
+ "doc": "winget installer",
212
+ "fileNamePattern": {
213
+ "amd64": {
214
+ "linux": "winget.py",
215
+ "windows": "winget.py",
216
+ "macos": "winget.py"
217
+ },
218
+ "arm64": {
219
+ "linux": "winget.py",
220
+ "windows": "winget.py",
221
+ "macos": "winget.py"
222
+ }
223
+ }
224
+ }
225
+ ]
226
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "version": "1",
3
+ "installers": [
4
+ {
5
+ "appName": "gh",
6
+ "repoURL": "CMD",
7
+ "doc": "GitHub CLI",
8
+ "fileNamePattern": {
9
+ "amd64": {
10
+ "windows": "gh.py",
11
+ "linux": "gh.py",
12
+ "macos": "gh.py"
13
+ },
14
+ "arm64": {
15
+ "windows": "gh.py",
16
+ "linux": "gh.py",
17
+ "macos": "gh.py"
18
+ }
19
+ }
20
+ },
21
+ {
22
+ "appName": "hx",
23
+ "repoURL": "CMD",
24
+ "doc": "Helix is a post-modern modal text editor.",
25
+ "fileNamePattern": {
26
+ "amd64": {
27
+ "linux": "hx.py",
28
+ "windows": "hx.py",
29
+ "macos": "hx.py"
30
+ },
31
+ "arm64": {
32
+ "linux": "hx.py",
33
+ "windows": "hx.py",
34
+ "macos": "hx.py"
35
+ }
36
+ }
37
+ }
38
+ ]
39
+ }