machineconfig 3.2__py3-none-any.whl → 3.3__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 (51) hide show
  1. machineconfig/cluster/sessions_managers/zellij_local.py +2 -2
  2. machineconfig/cluster/sessions_managers/zellij_utils/monitoring_types.py +17 -7
  3. machineconfig/jobs/python_custom_installers/archive/ngrok.py +7 -6
  4. machineconfig/jobs/python_custom_installers/dev/aider.py +9 -1
  5. machineconfig/jobs/python_custom_installers/dev/alacritty.py +2 -1
  6. machineconfig/jobs/python_custom_installers/dev/brave.py +10 -1
  7. machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +9 -1
  8. machineconfig/jobs/python_custom_installers/dev/code.py +10 -3
  9. machineconfig/jobs/python_custom_installers/dev/cursor.py +2 -1
  10. machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +7 -6
  11. machineconfig/jobs/python_custom_installers/dev/espanso.py +13 -5
  12. machineconfig/jobs/python_custom_installers/dev/goes.py +10 -1
  13. machineconfig/jobs/python_custom_installers/dev/lvim.py +9 -1
  14. machineconfig/jobs/python_custom_installers/dev/nerdfont.py +9 -1
  15. machineconfig/jobs/python_custom_installers/dev/redis.py +2 -2
  16. machineconfig/jobs/python_custom_installers/dev/wezterm.py +3 -1
  17. machineconfig/jobs/python_custom_installers/dev/winget.py +2 -1
  18. machineconfig/jobs/python_custom_installers/docker.py +9 -1
  19. machineconfig/jobs/python_custom_installers/gh.py +11 -2
  20. machineconfig/jobs/python_custom_installers/hx.py +9 -8
  21. machineconfig/jobs/python_custom_installers/warp-cli.py +9 -1
  22. machineconfig/jobs/python_generic_installers/config.json +612 -412
  23. machineconfig/jobs/python_generic_installers/config.json.bak +414 -0
  24. machineconfig/jobs/python_generic_installers/dev/config.json +822 -562
  25. machineconfig/jobs/python_generic_installers/dev/config.json.bak +565 -0
  26. machineconfig/jobs/python_linux_installers/archive/config.json +16 -8
  27. machineconfig/jobs/python_linux_installers/archive/config.json.bak +10 -0
  28. machineconfig/jobs/python_linux_installers/config.json +134 -99
  29. machineconfig/jobs/python_linux_installers/config.json.bak +110 -0
  30. machineconfig/jobs/python_linux_installers/dev/config.json +273 -203
  31. machineconfig/jobs/python_linux_installers/dev/config.json.bak +206 -0
  32. machineconfig/jobs/python_windows_installers/config.json +74 -48
  33. machineconfig/jobs/python_windows_installers/config.json.bak +56 -0
  34. machineconfig/jobs/python_windows_installers/dev/config.json +3 -2
  35. machineconfig/jobs/python_windows_installers/dev/config.json.bak +3 -0
  36. machineconfig/scripts/python/devops.py +1 -0
  37. machineconfig/scripts/python/devops_devapps_install.py +39 -17
  38. machineconfig/scripts/python/fire_agents.py +4 -0
  39. machineconfig/setup_windows/wt_and_pwsh/install_nerd_fonts.py +8 -7
  40. machineconfig/utils/installer.py +45 -31
  41. machineconfig/utils/installer_utils/installer_abc.py +1 -4
  42. machineconfig/utils/installer_utils/installer_class.py +108 -102
  43. machineconfig/utils/path_reduced.py +1 -1
  44. machineconfig/utils/procs.py +1 -0
  45. machineconfig/utils/schemas/installer/installer_types.py +20 -0
  46. machineconfig/utils/utils2.py +2 -0
  47. {machineconfig-3.2.dist-info → machineconfig-3.3.dist-info}/METADATA +1 -1
  48. {machineconfig-3.2.dist-info → machineconfig-3.3.dist-info}/RECORD +51 -43
  49. {machineconfig-3.2.dist-info → machineconfig-3.3.dist-info}/WHEEL +0 -0
  50. {machineconfig-3.2.dist-info → machineconfig-3.3.dist-info}/entry_points.txt +0 -0
  51. {machineconfig-3.2.dist-info → machineconfig-3.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,206 @@
1
+ {
2
+ "ytui-music": {
3
+ "repo_url": "https://github.com/sudipghimire533/ytui-music",
4
+ "doc": "🎵 A terminal based YouTube music player written in Rust.",
5
+ "filename_template_windows_amd_64": "",
6
+ "filename_template_windows_arm_64": "",
7
+ "filename_template_linux_amd_64": "ytui_music-linux-amd64",
8
+ "filename_template_linux_arm_64": "",
9
+ "filename_template_macos_amd_64": "",
10
+ "filename_template_macos_arm_64": "",
11
+ "strip_v": true,
12
+ "exe_name": "ytui-music"
13
+ },
14
+ "youtube-tui": {
15
+ "repo_url": "https://github.com/Siriusmart/youtube-tui",
16
+ "doc": "🎵 A terminal based YouTube music player written in Rust.",
17
+ "filename_template_windows_amd_64": "",
18
+ "filename_template_windows_arm_64": "",
19
+ "filename_template_linux_amd_64": "youtube-tui-full_arch-x86_64",
20
+ "filename_template_linux_arm_64": "",
21
+ "filename_template_macos_amd_64": "",
22
+ "filename_template_macos_arm_64": "",
23
+ "strip_v": true,
24
+ "exe_name": "youtube-tui"
25
+ },
26
+ "termusic": {
27
+ "repo_url": "https://github.com/tramhao/termusic",
28
+ "doc": "🎵 A terminal-based music player written in Rust.",
29
+ "filename_template_windows_amd_64": "termusic-{}-x86_64-windows.zip",
30
+ "filename_template_windows_arm_64": "",
31
+ "filename_template_linux_amd_64": "termusic-{}-x86_64-linux.tar.xz",
32
+ "filename_template_linux_arm_64": "",
33
+ "filename_template_macos_amd_64": "termusic-{}-x86_64-macos.tar.xz",
34
+ "filename_template_macos_arm_64": "",
35
+ "strip_v": false,
36
+ "exe_name": "termusic"
37
+ },
38
+ "kronos": {
39
+ "repo_url": "https://github.com/TrevorSatori/kronos",
40
+ "doc": "🎵 A Customizable Terminal Music Player For Offline Listening",
41
+ "filename_template_windows_amd_64": "",
42
+ "filename_template_windows_arm_64": "",
43
+ "filename_template_linux_amd_64": "Kronos",
44
+ "filename_template_linux_arm_64": "",
45
+ "filename_template_macos_amd_64": "",
46
+ "filename_template_macos_arm_64": "",
47
+ "strip_v": true,
48
+ "exe_name": "kronos"
49
+ },
50
+ "transmission": {
51
+ "repo_url": "https://github.com/transmission/transmission",
52
+ "doc": "📥 A fast, easy, and free BitTorrent client.",
53
+ "filename_template_windows_amd_64": "transmission-{}-x64.msi",
54
+ "filename_template_windows_arm_64": "",
55
+ "filename_template_linux_amd_64": "transmission-{}.tar.xz",
56
+ "filename_template_linux_arm_64": "",
57
+ "filename_template_macos_amd_64": "Transmission-{}.dmg",
58
+ "filename_template_macos_arm_64": "Transmission-{}.dmg",
59
+ "strip_v": true,
60
+ "exe_name": "transmission"
61
+ },
62
+ "nnn": {
63
+ "repo_url": "https://github.com/jarun/nnn",
64
+ "doc": "📂 A terminal-based file manager.",
65
+ "filename_template_windows_amd_64": "",
66
+ "filename_template_windows_arm_64": "",
67
+ "filename_template_linux_amd_64": "",
68
+ "filename_template_linux_arm_64": "",
69
+ "filename_template_macos_amd_64": "",
70
+ "filename_template_macos_arm_64": "",
71
+ "strip_v": false,
72
+ "exe_name": "nnn"
73
+ },
74
+ "exa": {
75
+ "repo_url": "https://github.com/ogham/exa",
76
+ "doc": "📂 A modern replacement for ls. lsd alternative.",
77
+ "filename_template_windows_amd_64": "",
78
+ "filename_template_windows_arm_64": "",
79
+ "filename_template_linux_amd_64": "exa-linux-x86_64-{}.zip",
80
+ "filename_template_linux_arm_64": "exa-linux-armv7-{}.zip",
81
+ "filename_template_macos_amd_64": "exa-macos-x86_64-{}.zip",
82
+ "filename_template_macos_arm_64": "",
83
+ "strip_v": false,
84
+ "exe_name": "exa"
85
+ },
86
+ "bytehound": {
87
+ "repo_url": "https://github.com/koute/bytehound",
88
+ "doc": "🔍 Inspecting the memory usage of a running process",
89
+ "filename_template_windows_amd_64": "",
90
+ "filename_template_windows_arm_64": "",
91
+ "filename_template_linux_amd_64": "bytehound-x86_64-unknown-linux-gnu.tgz",
92
+ "filename_template_linux_arm_64": "",
93
+ "filename_template_macos_amd_64": "",
94
+ "filename_template_macos_arm_64": "",
95
+ "strip_v": false,
96
+ "exe_name": "bytehound"
97
+ },
98
+ "atuin": {
99
+ "repo_url": "https://github.com/atuinsh/atuin",
100
+ "doc": "🔍 Shell history search tool. Mcfly alternative",
101
+ "filename_template_windows_amd_64": "",
102
+ "filename_template_windows_arm_64": "",
103
+ "filename_template_linux_amd_64": "atuin-x86_64-unknown-linux-gnu.tar.gz",
104
+ "filename_template_linux_arm_64": "atuin-aarch64-unknown-linux-gnu.tar.gz",
105
+ "filename_template_macos_amd_64": "atuin-x86_64-apple-darwin.tar.gz",
106
+ "filename_template_macos_arm_64": "atuin-aarch64-apple-darwin.tar.gz",
107
+ "strip_v": false,
108
+ "exe_name": "atuin"
109
+ },
110
+ "browsh": {
111
+ "repo_url": "https://github.com/browsh-org/browsh",
112
+ "doc": "🌐 browser in the shell",
113
+ "filename_template_windows_amd_64": "browsh_{}_windows_amd64.exe",
114
+ "filename_template_windows_arm_64": "browsh_{}_windows_arm64.exe",
115
+ "filename_template_linux_amd_64": "browsh_{}_linux_amd64",
116
+ "filename_template_linux_arm_64": "browsh_{}_linux_arm64",
117
+ "filename_template_macos_amd_64": "browsh_{}_darwin_amd64",
118
+ "filename_template_macos_arm_64": "browsh_{}_darwin_arm64",
119
+ "strip_v": true,
120
+ "exe_name": "browsh"
121
+ },
122
+ "carbonyl": {
123
+ "repo_url": "https://github.com/fathyb/carbonyl",
124
+ "doc": "A Chromium based browser built to run in a terminal",
125
+ "filename_template_windows_amd_64": "",
126
+ "filename_template_windows_arm_64": "",
127
+ "filename_template_linux_amd_64": "carbonyl.linux-x86_64.zip",
128
+ "filename_template_linux_arm_64": "carbonyl.linux-arm64.zip",
129
+ "filename_template_macos_amd_64": "carbonyl.macos-x86_64.zip",
130
+ "filename_template_macos_arm_64": "carbonyl.macos-arm64.zip",
131
+ "strip_v": true,
132
+ "exe_name": "carbonyl"
133
+ },
134
+ "patat": {
135
+ "repo_url": "https://github.com/jaspervdj/patat",
136
+ "doc": "🎯 Terminal-based presentations using Pandoc. Presenterm alternative.",
137
+ "filename_template_windows_amd_64": "",
138
+ "filename_template_windows_arm_64": "",
139
+ "filename_template_linux_amd_64": "patat-{}-linux-x86_64.tar.gz",
140
+ "filename_template_linux_arm_64": "",
141
+ "filename_template_macos_amd_64": "",
142
+ "filename_template_macos_arm_64": "patat-{}-darwin-arm64.zip",
143
+ "strip_v": false,
144
+ "exe_name": "patat"
145
+ },
146
+ "SqliteBrowser": {
147
+ "repo_url": "https://github.com/sqlitebrowser/sqlitebrowser",
148
+ "doc": "🗃️ A visual tool to create, design, and edit database files compatible with SQLite.",
149
+ "filename_template_windows_amd_64": "DB.Browser.for.SQLite-{}-win64.zip",
150
+ "filename_template_windows_arm_64": "",
151
+ "filename_template_linux_amd_64": "DB.Browser.for.SQLite-{}-x86.64-v2.AppImage",
152
+ "filename_template_linux_arm_64": "",
153
+ "filename_template_macos_amd_64": "DB.Browser.for.SQLite-{}.dmg",
154
+ "filename_template_macos_arm_64": "DB.Browser.for.SQLite-{}.dmg",
155
+ "strip_v": false,
156
+ "exe_name": "sqlite_browser"
157
+ },
158
+ "DBeaver": {
159
+ "repo_url": "https://github.com/dbeaver/dbeaver",
160
+ "doc": "🗃️ Free universal database tool and SQL client.",
161
+ "filename_template_windows_amd_64": "dbeaver-ce-{}-win32.win32.x86_64.zip",
162
+ "filename_template_windows_arm_64": "",
163
+ "filename_template_linux_amd_64": "dbeaver-ce-{}-linux.gtk.x86_64.tar.gz",
164
+ "filename_template_linux_arm_64": "dbeaver-ce-{}-linux.gtk.aarch64.tar.gz",
165
+ "filename_template_macos_amd_64": "dbeaver-ce-{}-macos-cocoa.x86_64.tar.gz",
166
+ "filename_template_macos_arm_64": "dbeaver-ce-{}-macos-cocoa.aarch64.tar.gz",
167
+ "strip_v": true,
168
+ "exe_name": "dbeaver"
169
+ },
170
+ "rainfrog": {
171
+ "repo_url": "https://github.com/achristmascarl/rainfrog",
172
+ "doc": "🗃️ TUI DB Visualizer",
173
+ "filename_template_windows_amd_64": "rainfrog-{}-x86_64-pc-windows-msvc.tar.gz",
174
+ "filename_template_windows_arm_64": "rainfrog-{}-aarch64-pc-windows-msvc.tar.gz",
175
+ "filename_template_linux_amd_64": "rainfrog-{}-x86_64-unknown-linux-musl.tar.gz",
176
+ "filename_template_linux_arm_64": "rainfrog-{}-aarch64-unknown-linux-musl.tar.gz",
177
+ "filename_template_macos_amd_64": "rainfrog-{}-x86_64-apple-darwin.tar.gz",
178
+ "filename_template_macos_arm_64": "rainfrog-{}-aarch64-apple-darwin.tar.gz",
179
+ "strip_v": false,
180
+ "exe_name": "rainfrog"
181
+ },
182
+ "cpz": {
183
+ "repo_url": "https://github.com/SUPERCILEX/fuc",
184
+ "doc": "📋 Fast copy",
185
+ "filename_template_windows_amd_64": "x86_64-pc-windows-msvc-cpz.exe",
186
+ "filename_template_windows_arm_64": "aarch64-pc-windows-msvc-cpz.exe",
187
+ "filename_template_linux_amd_64": "x86_64-unknown-linux-musl-cpz",
188
+ "filename_template_linux_arm_64": "aarch64-unknown-linux-gnu-cpz",
189
+ "filename_template_macos_amd_64": "x86_64-apple-darwin-cpz",
190
+ "filename_template_macos_arm_64": "aarch64-apple-darwin-cpz",
191
+ "strip_v": true,
192
+ "exe_name": "cpz"
193
+ },
194
+ "rmz": {
195
+ "repo_url": "https://github.com/SUPERCILEX/fuc",
196
+ "doc": "🗑️ Fast remove",
197
+ "filename_template_windows_amd_64": "x86_64-pc-windows-msvc-rmz.exe",
198
+ "filename_template_windows_arm_64": "aarch64-pc-windows-msvc-rmz.exe",
199
+ "filename_template_linux_amd_64": "x86_64-unknown-linux-musl-rmz",
200
+ "filename_template_linux_arm_64": "aarch64-unknown-linux-gnu-rmz",
201
+ "filename_template_macos_amd_64": "x86_64-apple-darwin-rmz",
202
+ "filename_template_macos_arm_64": "aarch64-apple-darwin-rmz",
203
+ "strip_v": true,
204
+ "exe_name": "rmz"
205
+ }
206
+ }
@@ -1,56 +1,82 @@
1
1
  {
2
- "speedtest": {
3
- "repo_url": "https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-win64.zip",
4
- "doc": "🚀 Test your internet connection speed and ping using speedtest.net from the CLI",
5
- "filename_template_windows_amd_64": "speedtest",
6
- "filename_template_windows_arm_64": "speedtest",
7
- "filename_template_linux_amd_64": "speedtest",
8
- "strip_v": false,
9
- "exe_name": "speedtest"
2
+ "version": "1",
3
+ "installers": [
4
+ {
5
+ "appName": "speedtest",
6
+ "repoURL": "https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-win64.zip",
7
+ "doc": "🚀 Test your internet connection speed and ping using speedtest.net from the CLI",
8
+ "filenameTemplate": {
9
+ "amd64": {
10
+ "windows": "speedtest",
11
+ "linux": "speedtest"
12
+ },
13
+ "arm64": {
14
+ "windows": "speedtest"
15
+ }
16
+ },
17
+ "stripVersion": false,
18
+ "exeName": "speedtest"
10
19
  },
11
- "boxes": {
12
- "repo_url": "https://github.com/ascii-boxes/boxes",
13
- "doc": "📦 ASCI draws boxes around text.",
14
- "filename_template_windows_amd_64": "boxes-{}-intel-win32.zip",
15
- "filename_template_windows_arm_64": "",
16
- "filename_template_linux_amd_64": "",
17
- "strip_v": true,
18
- "exe_name": "boxes"
20
+ {
21
+ "appName": "boxes",
22
+ "repoURL": "https://github.com/ascii-boxes/boxes",
23
+ "doc": "📦 ASCI draws boxes around text.",
24
+ "filenameTemplate": {
25
+ "amd64": {
26
+ "windows": "boxes-{}-intel-win32.zip"
27
+ },
28
+ "arm64": {}
29
+ },
30
+ "stripVersion": true,
31
+ "exeName": "boxes"
19
32
  },
20
- "ugrep": {
21
- "repo_url": "https://github.com/Genivia/ugrep",
22
- "doc": "🔍 A fast, portable, feature-rich command-line search tool",
23
- "filename_template_windows_amd_64": "ugrep-windows-x64.zip",
24
- "filename_template_windows_arm_64": "",
25
- "filename_template_linux_amd_64": "",
26
- "strip_v": true,
27
- "exe_name": "ugrep"
33
+ {
34
+ "appName": "ugrep",
35
+ "repoURL": "https://github.com/Genivia/ugrep",
36
+ "doc": "🔍 A fast, portable, feature-rich command-line search tool",
37
+ "filenameTemplate": {
38
+ "amd64": {
39
+ "windows": "ugrep-windows-x64.zip"
40
+ },
41
+ "arm64": {}
42
+ },
43
+ "stripVersion": true,
44
+ "exeName": "ugrep"
28
45
  },
29
- "zoomit": {
30
- "repo_url": "https://download.sysinternals.com/files/ZoomIt.zip",
31
- "doc": "🔍 A screen zoom and annotation tool for presentations",
32
- "filename_template_windows_amd_64": "",
33
- "filename_template_windows_arm_64": "",
34
- "filename_template_linux_amd_64": "",
35
- "strip_v": false,
36
- "exe_name": "ZoomIt.exe"
46
+ {
47
+ "appName": "zoomit",
48
+ "repoURL": "https://download.sysinternals.com/files/ZoomIt.zip",
49
+ "doc": "🔍 A screen zoom and annotation tool for presentations",
50
+ "filenameTemplate": {
51
+ "amd64": {},
52
+ "arm64": {}
53
+ },
54
+ "stripVersion": false,
55
+ "exeName": "ZoomIt.exe"
37
56
  },
38
- "ntop": {
39
- "repo_url": "https://github.com/gsass1/NTop",
40
- "doc": "📊 Like htop, for Windows",
41
- "filename_template_windows_amd_64": "ntop.exe",
42
- "filename_template_windows_arm_64": "",
43
- "filename_template_linux_amd_64": "",
44
- "strip_v": false,
45
- "exe_name": "ntop.exe"
57
+ {
58
+ "appName": "ntop",
59
+ "repoURL": "https://github.com/gsass1/NTop",
60
+ "doc": "📊 Like htop, for Windows",
61
+ "filenameTemplate": {
62
+ "amd64": {
63
+ "windows": "ntop.exe"
64
+ },
65
+ "arm64": {}
66
+ },
67
+ "stripVersion": false,
68
+ "exeName": "ntop.exe"
46
69
  },
47
- "devtunnel": {
48
- "repo_url": "winget install --Id Microsoft.devtunnel --scope user",
49
- "doc": "🔄 devtunnel secure introspectable tunnels to localhost",
50
- "filename_template_windows_amd_64": "",
51
- "filename_template_windows_arm_64": "",
52
- "filename_template_linux_amd_64": "",
53
- "strip_v": false,
54
- "exe_name": "devtunnel"
70
+ {
71
+ "appName": "devtunnel",
72
+ "repoURL": "winget install --Id Microsoft.devtunnel --scope user",
73
+ "doc": "🔄 devtunnel secure introspectable tunnels to localhost",
74
+ "filenameTemplate": {
75
+ "amd64": {},
76
+ "arm64": {}
77
+ },
78
+ "stripVersion": false,
79
+ "exeName": "devtunnel"
55
80
  }
81
+ ]
56
82
  }
@@ -0,0 +1,56 @@
1
+ {
2
+ "speedtest": {
3
+ "repo_url": "https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-win64.zip",
4
+ "doc": "🚀 Test your internet connection speed and ping using speedtest.net from the CLI",
5
+ "filename_template_windows_amd_64": "speedtest",
6
+ "filename_template_windows_arm_64": "speedtest",
7
+ "filename_template_linux_amd_64": "speedtest",
8
+ "strip_v": false,
9
+ "exe_name": "speedtest"
10
+ },
11
+ "boxes": {
12
+ "repo_url": "https://github.com/ascii-boxes/boxes",
13
+ "doc": "📦 ASCI draws boxes around text.",
14
+ "filename_template_windows_amd_64": "boxes-{}-intel-win32.zip",
15
+ "filename_template_windows_arm_64": "",
16
+ "filename_template_linux_amd_64": "",
17
+ "strip_v": true,
18
+ "exe_name": "boxes"
19
+ },
20
+ "ugrep": {
21
+ "repo_url": "https://github.com/Genivia/ugrep",
22
+ "doc": "🔍 A fast, portable, feature-rich command-line search tool",
23
+ "filename_template_windows_amd_64": "ugrep-windows-x64.zip",
24
+ "filename_template_windows_arm_64": "",
25
+ "filename_template_linux_amd_64": "",
26
+ "strip_v": true,
27
+ "exe_name": "ugrep"
28
+ },
29
+ "zoomit": {
30
+ "repo_url": "https://download.sysinternals.com/files/ZoomIt.zip",
31
+ "doc": "🔍 A screen zoom and annotation tool for presentations",
32
+ "filename_template_windows_amd_64": "",
33
+ "filename_template_windows_arm_64": "",
34
+ "filename_template_linux_amd_64": "",
35
+ "strip_v": false,
36
+ "exe_name": "ZoomIt.exe"
37
+ },
38
+ "ntop": {
39
+ "repo_url": "https://github.com/gsass1/NTop",
40
+ "doc": "📊 Like htop, for Windows",
41
+ "filename_template_windows_amd_64": "ntop.exe",
42
+ "filename_template_windows_arm_64": "",
43
+ "filename_template_linux_amd_64": "",
44
+ "strip_v": false,
45
+ "exe_name": "ntop.exe"
46
+ },
47
+ "devtunnel": {
48
+ "repo_url": "winget install --Id Microsoft.devtunnel --scope user",
49
+ "doc": "🔄 devtunnel secure introspectable tunnels to localhost",
50
+ "filename_template_windows_amd_64": "",
51
+ "filename_template_windows_arm_64": "",
52
+ "filename_template_linux_amd_64": "",
53
+ "strip_v": false,
54
+ "exe_name": "devtunnel"
55
+ }
56
+ }
@@ -1,3 +1,4 @@
1
1
  {
2
-
3
- }
2
+ "version": "1",
3
+ "installers": []
4
+ }
@@ -62,6 +62,7 @@ def main(which: Optional[str] = None):
62
62
  elif choice_key == Options.cli_install.value:
63
63
  console.print(Panel("⚙️ Installing development applications...", width=BOX_WIDTH, border_style="blue"))
64
64
  import machineconfig.scripts.python.devops_devapps_install as helper
65
+
65
66
  helper.main(which=None)
66
67
 
67
68
  elif choice_key == Options.sym_new.value:
@@ -1,11 +1,10 @@
1
1
  """Devops Devapps Install"""
2
2
 
3
3
  # import subprocess
4
- from machineconfig.utils.installer_utils.installer_class import Installer
5
4
  from rich.progress import Progress, SpinnerColumn, TextColumn
6
5
  from machineconfig.utils.source_of_truth import LIBRARY_ROOT
7
6
  from machineconfig.utils.options import choose_multiple_options
8
- from machineconfig.utils.installer import get_installers, install_all, get_all_dicts
7
+ from machineconfig.utils.installer import get_installers, install_all
9
8
  from platform import system
10
9
  from typing import Any, Optional, Literal, TypeAlias, get_args
11
10
 
@@ -20,25 +19,35 @@ def main(which: Optional[WHICH_CAT | str]) -> None:
20
19
  if which is not None: # install by name
21
20
  total_messages: list[str] = []
22
21
  for a_which in which.split(",") if type(which) == str else which:
23
- kv = {}
24
- for _category, v in get_all_dicts(system=system()).items():
25
- kv.update(v)
26
- if a_which not in kv:
27
- raise ValueError(f"{a_which=} not found in {kv.keys()}")
22
+ # Use get_installers to get properly converted installer objects
23
+ all_installers = get_installers(system=system(), dev=False) + get_installers(system=system(), dev=True)
24
+
25
+ # Find installer by exe_name or name
26
+ selected_installer = None
27
+ for installer in all_installers:
28
+ exe_name = installer.installer_data.get("exeName", "")
29
+ app_name = installer.installer_data.get("appName", "")
30
+ if exe_name == a_which or app_name == a_which:
31
+ selected_installer = installer
32
+ break
33
+
34
+ if selected_installer is None:
35
+ available_names = [f"{inst.installer_data.get('exeName', 'unknown')} ({inst.installer_data.get('appName', 'unknown')})" for inst in all_installers[:10]] # Show first 10
36
+ raise ValueError(f"{a_which=} not found. Available installers include: {available_names}")
37
+
28
38
  print(f"""
29
39
  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
30
40
  ┃ 🔧 Installing: {a_which}
31
41
  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
32
- installer = Installer.from_dict(name=a_which, d=kv[a_which])
33
- print(installer)
34
- program = installer.install_robust(version=None) # finish the task
35
- total_messages.append(program)
42
+ print(selected_installer)
43
+ message = selected_installer.install_robust(version=None) # finish the task
44
+ total_messages.append(message)
36
45
  for a_message in total_messages:
37
46
  print(a_message)
38
47
  return None
39
48
 
40
49
  # interactive installation
41
- installers = [Installer.from_dict(d=vd, name=name) for __kat, vds in get_all_dicts(system=system()).items() for name, vd in vds.items()]
50
+ installers = get_installers(system=system(), dev=False) + get_installers(system=system(), dev=True)
42
51
 
43
52
  # Check installed programs with progress indicator
44
53
  with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}")) as progress:
@@ -52,20 +61,33 @@ def main(which: Optional[WHICH_CAT | str]) -> None:
52
61
  # print("s"*1000)
53
62
  program_names = choose_multiple_options(msg="", options=options, header="🚀 CHOOSE DEV APP", default="AllEssentials")
54
63
 
55
- total_program = ""
64
+ total_commands = ""
65
+ installation_messages: list[str] = []
56
66
  for _an_idx, a_program_name in enumerate(program_names):
57
67
  print(f"""
58
68
  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
59
69
  ┃ 🔄 Processing: {a_program_name}
60
70
  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
61
71
  if a_program_name in get_args(WHICH_CAT):
62
- total_program += "\n" + get_programs_by_category(program_name=a_program_name) # type: ignore
72
+ shell_commands = get_programs_by_category(program_name=a_program_name) # type: ignore
73
+ total_commands += "\n" + shell_commands
63
74
  else:
64
75
  an_installer = installers[options.index(a_program_name)]
65
- total_program += "\n" + an_installer.install_robust(version=None) # finish the task
66
- import subprocess
76
+ status_message = an_installer.install_robust(version=None) # finish the task - this returns a status message, not a command
77
+ installation_messages.append(status_message)
78
+
79
+ # Print all installation status messages
80
+ print("\n📊 INSTALLATION SUMMARY:")
81
+ print("=" * 50)
82
+ for message in installation_messages:
83
+ print(message)
84
+
85
+ # Only run shell commands if there are any (from category installations)
86
+ if total_commands.strip():
87
+ import subprocess
67
88
 
68
- subprocess.run(total_program, shell=True, check=True)
89
+ print("\n🚀 Running additional shell commands...")
90
+ subprocess.run(total_commands, shell=True, check=True)
69
91
 
70
92
 
71
93
  def get_programs_by_category(program_name: WHICH_CAT):
@@ -153,15 +153,19 @@ manager.run_monitoring_routine()
153
153
  def split_too_many_tabs_to_run_in_sequential_sessions(layout_tabs: list[TabConfig], every: int):
154
154
  from machineconfig.utils.utils2 import split
155
155
  from machineconfig.cluster.sessions_managers.zellij_local_manager import ZellijLocalManager
156
+
156
157
  for idx, layout_tabs_chunk in enumerate(split(layout_tabs, every=every)):
157
158
  a_layout_file: LayoutConfig = {"layoutName": f"split_{idx}", "layoutTabs": layout_tabs_chunk}
158
159
  manager = ZellijLocalManager(session_layouts=[a_layout_file])
159
160
  manager.start_all_sessions(poll_interval=2, poll_seconds=2)
160
161
  manager.run_monitoring_routine(wait_ms=2000)
161
162
  manager.kill_all_sessions()
163
+
164
+
162
165
  def split_too_many_layouts_to_run_in_sequential_sessions(layouts: list[LayoutConfig], every: int):
163
166
  from machineconfig.utils.utils2 import split
164
167
  from machineconfig.cluster.sessions_managers.zellij_local_manager import ZellijLocalManager
168
+
165
169
  for _idx, layout_chunk in enumerate(split(layouts, every=every)):
166
170
  manager = ZellijLocalManager(session_layouts=layout_chunk)
167
171
  manager.start_all_sessions(poll_interval=2, poll_seconds=2)
@@ -9,15 +9,16 @@ from machineconfig.utils.source_of_truth import LIBRARY_ROOT
9
9
  from machineconfig.utils.installer_utils.installer_class import Installer
10
10
  import subprocess
11
11
  from typing import Iterable
12
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData
12
13
 
13
14
 
14
- nerd_fonts = {
15
- "repo_url": "https://github.com/ryanoasis/nerd-fonts",
15
+ nerd_fonts: InstallerData = {
16
+ "appName": "Cascadia Code Nerd Font",
17
+ "repoURL": "https://github.com/ryanoasis/nerd-fonts",
16
18
  "doc": "Nerd Fonts is a project that patches developer targeted fonts with a high number of glyphs (icons)",
17
- "filename_template_windows_amd_64": "CascadiaCode.zip",
18
- "filename_template_linux_amd_64": "CascadiaCode.zip",
19
- "strip_v": False,
20
- "exe_name": "nerd_fonts",
19
+ "filenameTemplate": {"amd64": {"windows": "CascadiaCode.zip", "linux": "CascadiaCode.zip", "macos": ""}, "arm64": {"windows": "", "linux": "", "macos": ""}},
20
+ "stripVersion": False,
21
+ "exeName": "nerd_fonts",
21
22
  }
22
23
 
23
24
 
@@ -64,7 +65,7 @@ def install_nerd_fonts() -> None:
64
65
  return
65
66
  print(f"🔍 Missing fonts detected: {', '.join(missing)}. Proceeding with installation...")
66
67
  print("🔍 Downloading Nerd Fonts package...")
67
- folder, _version_to_be_installed = Installer.from_dict(d=nerd_fonts, name="nerd_fonts").download(version=None)
68
+ folder, _version_to_be_installed = Installer(installer_data=nerd_fonts).download(version=None)
68
69
 
69
70
  print("🧹 Cleaning up unnecessary files...")
70
71
  [p.delete(sure=True) for p in folder.search("*Windows*")]