@fredlackey/devutils 0.0.1 → 0.0.2

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.
Files changed (257) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
@@ -0,0 +1,297 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * @fileoverview Install yum-utils - a collection of utilities for YUM/DNF package management.
5
+ *
6
+ * yum-utils provides essential tools for repository management, package debugging,
7
+ * and system administration tasks on Red Hat-based Linux distributions. Key utilities
8
+ * include:
9
+ *
10
+ * - yum-config-manager: Manage yum repository configuration
11
+ * - repoquery: Query yum repositories for package information
12
+ * - yumdownloader: Download RPM packages without installing
13
+ * - package-cleanup: Clean up duplicate, orphaned, or old packages
14
+ * - needs-restarting: Report processes that need restarting after updates
15
+ *
16
+ * Important naming note:
17
+ * - On Amazon Linux 2, RHEL 7, CentOS 7: Install "yum-utils"
18
+ * - On Amazon Linux 2023, RHEL 8+, Fedora 22+: Install "dnf-utils"
19
+ * (the yum-utils package name may still work as an alias)
20
+ *
21
+ * @module installs/yum-utils
22
+ */
23
+
24
+ const os = require('../utils/common/os');
25
+ const shell = require('../utils/common/shell');
26
+
27
+ /**
28
+ * Install yum-utils on macOS.
29
+ *
30
+ * yum-utils is not available for macOS because it is specifically designed for
31
+ * Red Hat-based Linux distributions that use RPM/YUM/DNF package management.
32
+ * macOS uses Homebrew, which is a completely different package management system.
33
+ *
34
+ * @returns {Promise<void>}
35
+ */
36
+ async function install_macos() {
37
+ // yum-utils is a Linux-only package for RPM-based systems
38
+ // macOS does not have YUM/DNF and uses Homebrew instead
39
+ console.log('yum-utils is not available for macOS.');
40
+ return;
41
+ }
42
+
43
+ /**
44
+ * Install yum-utils on Ubuntu/Debian.
45
+ *
46
+ * yum-utils is not available for Ubuntu or Debian because these distributions
47
+ * use APT (Advanced Package Tool) with DEB packages, not YUM/DNF with RPM packages.
48
+ * The underlying package management architectures are fundamentally different.
49
+ *
50
+ * @returns {Promise<void>}
51
+ */
52
+ async function install_ubuntu() {
53
+ // yum-utils is a Linux-only package for RPM-based systems
54
+ // Ubuntu/Debian use APT and do not support YUM/DNF
55
+ console.log('yum-utils is not available for Ubuntu.');
56
+ return;
57
+ }
58
+
59
+ /**
60
+ * Install yum-utils on Ubuntu running in WSL.
61
+ *
62
+ * yum-utils is not available for Ubuntu on WSL because WSL Ubuntu uses APT,
63
+ * not YUM/DNF. Even within WSL, Ubuntu remains a Debian-based distribution
64
+ * with APT package management.
65
+ *
66
+ * @returns {Promise<void>}
67
+ */
68
+ async function install_ubuntu_wsl() {
69
+ // WSL Ubuntu uses the same APT-based system as native Ubuntu
70
+ // yum-utils is not available for Debian-based distributions
71
+ console.log('yum-utils is not available for Ubuntu on WSL.');
72
+ return;
73
+ }
74
+
75
+ /**
76
+ * Install yum-utils on Raspberry Pi OS.
77
+ *
78
+ * yum-utils is not available for Raspberry Pi OS because it is Debian-based
79
+ * and uses APT with DEB packages. YUM/DNF and RPM packages are not part of
80
+ * the Raspberry Pi ecosystem.
81
+ *
82
+ * @returns {Promise<void>}
83
+ */
84
+ async function install_raspbian() {
85
+ // Raspberry Pi OS is Debian-based and uses APT
86
+ // yum-utils is not available for Debian-based distributions
87
+ console.log('yum-utils is not available for Raspberry Pi OS.');
88
+ return;
89
+ }
90
+
91
+ /**
92
+ * Install yum-utils on Amazon Linux using DNF or YUM.
93
+ *
94
+ * This is the primary use case for yum-utils. Amazon Linux is a Red Hat-based
95
+ * distribution that fully supports yum-utils.
96
+ *
97
+ * Installation behavior:
98
+ * - Amazon Linux 2023: Installs "dnf-utils" which provides the same functionality
99
+ * - Amazon Linux 2: Installs "yum-utils" using the yum package manager
100
+ *
101
+ * The function automatically detects which Amazon Linux version is running and
102
+ * uses the appropriate package manager and package name.
103
+ *
104
+ * @returns {Promise<void>}
105
+ */
106
+ async function install_amazon_linux() {
107
+ // Detect the platform to determine which package manager to use
108
+ const platform = os.detect();
109
+ const packageManager = platform.packageManager;
110
+
111
+ // Determine the correct package name based on the package manager:
112
+ // - dnf (AL2023, RHEL 8+): Use "dnf-utils"
113
+ // - yum (AL2, RHEL 7): Use "yum-utils"
114
+ const packageName = packageManager === 'dnf' ? 'dnf-utils' : 'yum-utils';
115
+
116
+ // Check if the package is already installed using rpm query
117
+ // We check for both package names since they provide the same tools
118
+ // Note: rpm -q returns non-zero exit code if ANY package is not found,
119
+ // so we must check the output text rather than relying on exit code
120
+ const checkResult = await shell.exec('rpm -q yum-utils dnf-utils 2>/dev/null');
121
+
122
+ // Check if the output indicates at least one package is installed
123
+ // rpm -q returns "package X is not installed" for missing packages
124
+ // and returns the package version (e.g., "dnf-utils-4.3.0-13.amzn2023.0.5.noarch") for installed ones
125
+ if (checkResult.stdout.trim()) {
126
+ const installedPackages = checkResult.stdout
127
+ .split('\n')
128
+ .filter(line => !line.includes('is not installed') && line.trim());
129
+
130
+ if (installedPackages.length > 0) {
131
+ console.log(`${packageName} is already installed, skipping...`);
132
+ return;
133
+ }
134
+ }
135
+
136
+ // Build the install command using the appropriate package manager
137
+ const installCommand = packageManager === 'dnf'
138
+ ? `sudo dnf install -y ${packageName}`
139
+ : `sudo yum install -y ${packageName}`;
140
+
141
+ // Install the package
142
+ console.log(`Installing ${packageName} via ${packageManager}...`);
143
+ const result = await shell.exec(installCommand);
144
+
145
+ // Check if the installation command succeeded
146
+ if (result.code !== 0) {
147
+ console.log(`Failed to install ${packageName} via ${packageManager}.`);
148
+ console.log(result.stderr || result.stdout);
149
+ return;
150
+ }
151
+
152
+ // Verify the installation succeeded by checking for yum-config-manager
153
+ // This is one of the primary tools provided by yum-utils/dnf-utils
154
+ const verified = shell.commandExists('yum-config-manager');
155
+ if (!verified) {
156
+ console.log('Installation may have failed: yum-config-manager command not found after install.');
157
+ return;
158
+ }
159
+
160
+ console.log(`${packageName} installed successfully.`);
161
+ }
162
+
163
+ /**
164
+ * Install yum-utils on Windows.
165
+ *
166
+ * yum-utils is not available for Windows because it is a Linux-specific tool
167
+ * for managing RPM packages and YUM/DNF repositories. Windows uses completely
168
+ * different package management systems (Chocolatey, winget, or MSI installers).
169
+ *
170
+ * @returns {Promise<void>}
171
+ */
172
+ async function install_windows() {
173
+ // yum-utils is a Linux-only package for RPM-based systems
174
+ // Windows does not have YUM/DNF and uses Chocolatey/winget instead
175
+ console.log('yum-utils is not available for Windows.');
176
+ return;
177
+ }
178
+
179
+ /**
180
+ * Install yum-utils on Git Bash (Windows).
181
+ *
182
+ * yum-utils is not available for Git Bash because Git Bash is a terminal
183
+ * emulator for Windows that does not include Linux package management systems.
184
+ * The yum-utils package requires a full Linux environment with RPM database support.
185
+ *
186
+ * @returns {Promise<void>}
187
+ */
188
+ async function install_gitbash() {
189
+ // Git Bash runs on Windows and does not have access to YUM/DNF/RPM
190
+ // yum-utils requires a full Linux environment
191
+ console.log('yum-utils is not available for Git Bash.');
192
+ return;
193
+ }
194
+
195
+ /**
196
+ * Check if yum-utils is installed on the current system.
197
+ * @returns {Promise<boolean>} True if yum-utils is installed
198
+ */
199
+ async function isInstalled() {
200
+ const platform = os.detect();
201
+ if (['amazon_linux', 'fedora', 'rhel'].includes(platform.type)) {
202
+ // Check if either yum-utils or dnf-utils is installed
203
+ // Note: rpm -q returns non-zero exit code if ANY package is not found,
204
+ // so we check the output text rather than the exit code
205
+ const checkResult = await shell.exec('rpm -q yum-utils dnf-utils 2>/dev/null');
206
+ if (checkResult.stdout.trim()) {
207
+ const installedPackages = checkResult.stdout
208
+ .split('\n')
209
+ .filter(line => !line.includes('is not installed') && line.trim());
210
+ return installedPackages.length > 0;
211
+ }
212
+ return false;
213
+ }
214
+ return false;
215
+ }
216
+
217
+ /**
218
+ * Check if this installer is supported on the current platform.
219
+ * yum-utils is only supported on Red Hat-based Linux distributions.
220
+ * @returns {boolean} True if installation is supported on this platform
221
+ */
222
+ function isEligible() {
223
+ const platform = os.detect();
224
+ return ['amazon_linux', 'fedora', 'rhel'].includes(platform.type);
225
+ }
226
+
227
+ /**
228
+ * Main installation entry point - detects platform and runs appropriate installer.
229
+ *
230
+ * This function detects the current operating system and dispatches to the
231
+ * appropriate platform-specific installer function. yum-utils is only supported
232
+ * on Red Hat-based Linux distributions:
233
+ *
234
+ * - Amazon Linux 2 (YUM)
235
+ * - Amazon Linux 2023 (DNF via dnf-utils)
236
+ * - RHEL 7 (YUM)
237
+ * - RHEL 8+ (DNF via dnf-utils)
238
+ * - CentOS 7 (YUM)
239
+ * - CentOS Stream 8+ (DNF via dnf-utils)
240
+ * - Fedora (DNF via dnf-utils)
241
+ *
242
+ * All other platforms (macOS, Ubuntu, Debian, Windows, etc.) are not supported
243
+ * because they use different package management systems.
244
+ *
245
+ * @returns {Promise<void>}
246
+ */
247
+ async function install() {
248
+ const platform = os.detect();
249
+
250
+ // Map platform types to their corresponding installer functions
251
+ // yum-utils is only supported on Red Hat-based distributions (amazon_linux, rhel, fedora)
252
+ // All other platforms return gracefully with an informational message
253
+ const installers = {
254
+ 'macos': install_macos,
255
+ 'ubuntu': install_ubuntu,
256
+ 'debian': install_ubuntu,
257
+ 'wsl': install_ubuntu_wsl,
258
+ 'raspbian': install_raspbian,
259
+ 'amazon_linux': install_amazon_linux,
260
+ 'fedora': install_amazon_linux,
261
+ 'rhel': install_amazon_linux,
262
+ 'windows': install_windows,
263
+ 'gitbash': install_gitbash,
264
+ };
265
+
266
+ // Look up the installer for the detected platform
267
+ const installer = installers[platform.type];
268
+
269
+ // If no installer exists for this platform, inform the user gracefully
270
+ if (!installer) {
271
+ console.log(`yum-utils is not available for ${platform.type}.`);
272
+ return;
273
+ }
274
+
275
+ // Run the platform-specific installer
276
+ await installer();
277
+ }
278
+
279
+ module.exports = {
280
+ install,
281
+ isInstalled,
282
+ isEligible,
283
+ install_macos,
284
+ install_ubuntu,
285
+ install_ubuntu_wsl,
286
+ install_raspbian,
287
+ install_amazon_linux,
288
+ install_windows,
289
+ install_gitbash,
290
+ };
291
+
292
+ if (require.main === module) {
293
+ install().catch(err => {
294
+ console.error(err.message);
295
+ process.exit(1);
296
+ });
297
+ }