@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.
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- 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
|
+
}
|