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.
- machineconfig/cluster/sessions_managers/zellij_local.py +2 -2
- machineconfig/cluster/sessions_managers/zellij_utils/monitoring_types.py +17 -7
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +7 -6
- machineconfig/jobs/python_custom_installers/dev/aider.py +9 -1
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +2 -1
- machineconfig/jobs/python_custom_installers/dev/brave.py +10 -1
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +9 -1
- machineconfig/jobs/python_custom_installers/dev/code.py +10 -3
- machineconfig/jobs/python_custom_installers/dev/cursor.py +2 -1
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +7 -6
- machineconfig/jobs/python_custom_installers/dev/espanso.py +13 -5
- machineconfig/jobs/python_custom_installers/dev/goes.py +10 -1
- machineconfig/jobs/python_custom_installers/dev/lvim.py +9 -1
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +9 -1
- machineconfig/jobs/python_custom_installers/dev/redis.py +2 -2
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +3 -1
- machineconfig/jobs/python_custom_installers/dev/winget.py +2 -1
- machineconfig/jobs/python_custom_installers/docker.py +9 -1
- machineconfig/jobs/python_custom_installers/gh.py +11 -2
- machineconfig/jobs/python_custom_installers/hx.py +9 -8
- machineconfig/jobs/python_custom_installers/warp-cli.py +9 -1
- machineconfig/jobs/python_generic_installers/config.json +612 -412
- machineconfig/jobs/python_generic_installers/config.json.bak +414 -0
- machineconfig/jobs/python_generic_installers/dev/config.json +822 -562
- machineconfig/jobs/python_generic_installers/dev/config.json.bak +565 -0
- machineconfig/jobs/python_linux_installers/archive/config.json +16 -8
- machineconfig/jobs/python_linux_installers/archive/config.json.bak +10 -0
- machineconfig/jobs/python_linux_installers/config.json +134 -99
- machineconfig/jobs/python_linux_installers/config.json.bak +110 -0
- machineconfig/jobs/python_linux_installers/dev/config.json +273 -203
- machineconfig/jobs/python_linux_installers/dev/config.json.bak +206 -0
- machineconfig/jobs/python_windows_installers/config.json +74 -48
- machineconfig/jobs/python_windows_installers/config.json.bak +56 -0
- machineconfig/jobs/python_windows_installers/dev/config.json +3 -2
- machineconfig/jobs/python_windows_installers/dev/config.json.bak +3 -0
- machineconfig/scripts/python/devops.py +1 -0
- machineconfig/scripts/python/devops_devapps_install.py +39 -17
- machineconfig/scripts/python/fire_agents.py +4 -0
- machineconfig/setup_windows/wt_and_pwsh/install_nerd_fonts.py +8 -7
- machineconfig/utils/installer.py +45 -31
- machineconfig/utils/installer_utils/installer_abc.py +1 -4
- machineconfig/utils/installer_utils/installer_class.py +108 -102
- machineconfig/utils/path_reduced.py +1 -1
- machineconfig/utils/procs.py +1 -0
- machineconfig/utils/schemas/installer/installer_types.py +20 -0
- machineconfig/utils/utils2.py +2 -0
- {machineconfig-3.2.dist-info → machineconfig-3.3.dist-info}/METADATA +1 -1
- {machineconfig-3.2.dist-info → machineconfig-3.3.dist-info}/RECORD +51 -43
- {machineconfig-3.2.dist-info → machineconfig-3.3.dist-info}/WHEEL +0 -0
- {machineconfig-3.2.dist-info → machineconfig-3.3.dist-info}/entry_points.txt +0 -0
- {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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
|
|
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
|
+
}
|
|
@@ -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
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
66
|
-
|
|
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
|
-
|
|
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
|
-
"
|
|
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
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
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
|
|
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*")]
|