@fredlackey/devutils 0.0.1 → 0.0.3
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
- package/src/utils/windows/choco.js +82 -26
- package/src/utils/windows/winget.js +89 -27
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Install apt-transport-https - HTTPS transport for APT package manager.
|
|
5
|
+
*
|
|
6
|
+
* apt-transport-https is a package that historically enabled the APT package manager
|
|
7
|
+
* on Debian-based Linux distributions to download packages over HTTPS connections.
|
|
8
|
+
*
|
|
9
|
+
* IMPORTANT: As of APT version 1.5 (included in Ubuntu 18.04+ and Debian 10+), HTTPS
|
|
10
|
+
* support is built directly into APT. The apt-transport-https package now exists only
|
|
11
|
+
* as a "dummy transitional package" for backward compatibility with older scripts.
|
|
12
|
+
*
|
|
13
|
+
* This installer:
|
|
14
|
+
* - On modern systems (APT 1.5+): Reports that HTTPS is already supported
|
|
15
|
+
* - On legacy systems (APT < 1.5): Installs the apt-transport-https package
|
|
16
|
+
* - On non-APT platforms: Gracefully reports the package is not applicable
|
|
17
|
+
*
|
|
18
|
+
* @module installs/apt-transport-https
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const os = require('../utils/common/os');
|
|
22
|
+
const shell = require('../utils/common/shell');
|
|
23
|
+
const apt = require('../utils/ubuntu/apt');
|
|
24
|
+
|
|
25
|
+
// -----------------------------------------------------------------------------
|
|
26
|
+
// Constants
|
|
27
|
+
// -----------------------------------------------------------------------------
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Minimum APT version that has built-in HTTPS support.
|
|
31
|
+
* APT 1.5 introduced native HTTPS transport, making apt-transport-https unnecessary.
|
|
32
|
+
*/
|
|
33
|
+
const APT_HTTPS_BUILTIN_VERSION = 1.5;
|
|
34
|
+
|
|
35
|
+
// -----------------------------------------------------------------------------
|
|
36
|
+
// Helper Functions
|
|
37
|
+
// -----------------------------------------------------------------------------
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Gets the installed APT version number.
|
|
41
|
+
*
|
|
42
|
+
* Parses the output of `apt --version` to extract the major.minor version number.
|
|
43
|
+
* Example output: "apt 2.4.8 (amd64)" -> returns 2.4
|
|
44
|
+
*
|
|
45
|
+
* @returns {Promise<number|null>} The APT version as a float (e.g., 2.4), or null if unavailable
|
|
46
|
+
*/
|
|
47
|
+
async function getAptVersion() {
|
|
48
|
+
// Execute apt --version to get version information
|
|
49
|
+
const result = await shell.exec('apt --version 2>/dev/null');
|
|
50
|
+
|
|
51
|
+
// If the command failed, APT is not available
|
|
52
|
+
if (result.code !== 0 || !result.stdout) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Parse the version number from output like "apt 2.4.8 (amd64)"
|
|
57
|
+
// We use a regex to capture the major.minor portion of the version
|
|
58
|
+
const versionMatch = result.stdout.match(/apt\s+(\d+\.\d+)/i);
|
|
59
|
+
|
|
60
|
+
if (!versionMatch) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Convert the version string to a float for numeric comparison
|
|
65
|
+
return parseFloat(versionMatch[1]);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Checks if the installed APT version has built-in HTTPS support.
|
|
70
|
+
*
|
|
71
|
+
* APT version 1.5 and later include native HTTPS transport, meaning the
|
|
72
|
+
* apt-transport-https package is unnecessary on these systems.
|
|
73
|
+
*
|
|
74
|
+
* @returns {Promise<boolean>} True if APT has built-in HTTPS support
|
|
75
|
+
*/
|
|
76
|
+
async function hasBuiltInHttpsSupport() {
|
|
77
|
+
const aptVersion = await getAptVersion();
|
|
78
|
+
|
|
79
|
+
// If we cannot determine the APT version, assume we need the package
|
|
80
|
+
// (conservative approach for compatibility)
|
|
81
|
+
if (aptVersion === null) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// APT 1.5+ has built-in HTTPS support
|
|
86
|
+
return aptVersion >= APT_HTTPS_BUILTIN_VERSION;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Checks if the HTTPS transport method is available in APT.
|
|
91
|
+
*
|
|
92
|
+
* This function verifies that APT can use HTTPS by checking for the
|
|
93
|
+
* presence of the https method in /usr/lib/apt/methods/.
|
|
94
|
+
*
|
|
95
|
+
* @returns {Promise<boolean>} True if HTTPS transport is available
|
|
96
|
+
*/
|
|
97
|
+
async function isHttpsTransportAvailable() {
|
|
98
|
+
// Check if the https method file exists in APT's methods directory
|
|
99
|
+
const result = await shell.exec('ls /usr/lib/apt/methods/https 2>/dev/null');
|
|
100
|
+
return result.code === 0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// -----------------------------------------------------------------------------
|
|
104
|
+
// Platform-Specific Installation Functions
|
|
105
|
+
// -----------------------------------------------------------------------------
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Install apt-transport-https on macOS.
|
|
109
|
+
*
|
|
110
|
+
* This package is not applicable to macOS. macOS uses Homebrew for package
|
|
111
|
+
* management, which natively supports HTTPS repositories without any
|
|
112
|
+
* additional configuration.
|
|
113
|
+
*
|
|
114
|
+
* @returns {Promise<void>}
|
|
115
|
+
*/
|
|
116
|
+
async function install_macos() {
|
|
117
|
+
// macOS uses Homebrew, not APT - this package is not applicable
|
|
118
|
+
console.log('apt-transport-https is not available for macOS.');
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Install apt-transport-https on Ubuntu/Debian using APT.
|
|
124
|
+
*
|
|
125
|
+
* On modern Ubuntu (18.04+) and Debian (10+) systems, HTTPS support is built
|
|
126
|
+
* into APT itself, making this package unnecessary. This function checks the
|
|
127
|
+
* APT version and either:
|
|
128
|
+
* - Reports that HTTPS is already supported (APT 1.5+)
|
|
129
|
+
* - Installs the transitional package (APT < 1.5)
|
|
130
|
+
*
|
|
131
|
+
* @returns {Promise<void>}
|
|
132
|
+
*/
|
|
133
|
+
async function install_ubuntu() {
|
|
134
|
+
// First, check if APT is available on this system
|
|
135
|
+
if (!apt.isInstalled()) {
|
|
136
|
+
console.log('APT is not available on this system.');
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Check if this system has built-in HTTPS support (APT 1.5+)
|
|
141
|
+
const hasBuiltIn = await hasBuiltInHttpsSupport();
|
|
142
|
+
|
|
143
|
+
if (hasBuiltIn) {
|
|
144
|
+
// Modern system - HTTPS is built into APT
|
|
145
|
+
console.log('HTTPS transport is already built into APT on this system.');
|
|
146
|
+
console.log('The apt-transport-https package is not required.');
|
|
147
|
+
|
|
148
|
+
// Verify HTTPS transport is actually working
|
|
149
|
+
const httpsAvailable = await isHttpsTransportAvailable();
|
|
150
|
+
if (httpsAvailable) {
|
|
151
|
+
console.log('Verified: HTTPS transport is available and working.');
|
|
152
|
+
}
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Legacy system - check if apt-transport-https is already installed
|
|
157
|
+
const isInstalled = await apt.isPackageInstalled('apt-transport-https');
|
|
158
|
+
if (isInstalled) {
|
|
159
|
+
console.log('apt-transport-https is already installed, skipping...');
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Update package lists before installing
|
|
164
|
+
console.log('Updating package lists...');
|
|
165
|
+
const updateResult = await shell.exec('sudo DEBIAN_FRONTEND=noninteractive apt-get update -y');
|
|
166
|
+
if (updateResult.code !== 0) {
|
|
167
|
+
console.log('Warning: Failed to update package lists. Continuing with installation...');
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Install apt-transport-https on this legacy system
|
|
171
|
+
console.log('Installing apt-transport-https via APT...');
|
|
172
|
+
const installResult = await shell.exec('sudo DEBIAN_FRONTEND=noninteractive apt-get install -y apt-transport-https');
|
|
173
|
+
|
|
174
|
+
if (installResult.code !== 0) {
|
|
175
|
+
console.log('Failed to install apt-transport-https.');
|
|
176
|
+
console.log(installResult.stderr || installResult.stdout);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Verify the installation succeeded
|
|
181
|
+
const verified = await isHttpsTransportAvailable();
|
|
182
|
+
if (!verified) {
|
|
183
|
+
console.log('Installation may have failed: HTTPS transport not found after install.');
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
console.log('apt-transport-https installed successfully.');
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Install apt-transport-https on Ubuntu running in WSL.
|
|
192
|
+
*
|
|
193
|
+
* WSL Ubuntu installations follow the same process as native Ubuntu using APT.
|
|
194
|
+
* Modern WSL distributions include APT 1.5+ with built-in HTTPS support.
|
|
195
|
+
*
|
|
196
|
+
* @returns {Promise<void>}
|
|
197
|
+
*/
|
|
198
|
+
async function install_ubuntu_wsl() {
|
|
199
|
+
// WSL Ubuntu uses the same APT-based installation as native Ubuntu
|
|
200
|
+
await install_ubuntu();
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Install apt-transport-https on Raspberry Pi OS using APT.
|
|
205
|
+
*
|
|
206
|
+
* Raspberry Pi OS is based on Debian, so the installation follows the same
|
|
207
|
+
* process as Ubuntu/Debian. Modern Raspberry Pi OS (Buster and later) includes
|
|
208
|
+
* APT 1.5+ with built-in HTTPS support.
|
|
209
|
+
*
|
|
210
|
+
* @returns {Promise<void>}
|
|
211
|
+
*/
|
|
212
|
+
async function install_raspbian() {
|
|
213
|
+
// Raspberry Pi OS uses the same APT-based installation as Ubuntu/Debian
|
|
214
|
+
await install_ubuntu();
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Install apt-transport-https on Amazon Linux.
|
|
219
|
+
*
|
|
220
|
+
* This package is not applicable to Amazon Linux. Amazon Linux uses DNF
|
|
221
|
+
* (Amazon Linux 2023) or YUM (Amazon Linux 2) as its package manager,
|
|
222
|
+
* not APT. Both DNF and YUM natively support HTTPS repositories.
|
|
223
|
+
*
|
|
224
|
+
* @returns {Promise<void>}
|
|
225
|
+
*/
|
|
226
|
+
async function install_amazon_linux() {
|
|
227
|
+
// Amazon Linux uses DNF/YUM, not APT - this package is not applicable
|
|
228
|
+
console.log('apt-transport-https is not available for Amazon Linux.');
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Install apt-transport-https on Windows.
|
|
234
|
+
*
|
|
235
|
+
* This package is not applicable to Windows. Windows uses Chocolatey or
|
|
236
|
+
* winget for command-line package management, not APT. Both package managers
|
|
237
|
+
* natively support HTTPS for all operations.
|
|
238
|
+
*
|
|
239
|
+
* @returns {Promise<void>}
|
|
240
|
+
*/
|
|
241
|
+
async function install_windows() {
|
|
242
|
+
// Windows uses Chocolatey/winget, not APT - this package is not applicable
|
|
243
|
+
console.log('apt-transport-https is not available for Windows.');
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Install apt-transport-https on Git Bash.
|
|
249
|
+
*
|
|
250
|
+
* This package is not applicable to Git Bash. Git Bash is a terminal emulator
|
|
251
|
+
* for Windows that provides a Unix-like command-line environment but does not
|
|
252
|
+
* include or use APT for package management.
|
|
253
|
+
*
|
|
254
|
+
* @returns {Promise<void>}
|
|
255
|
+
*/
|
|
256
|
+
async function install_gitbash() {
|
|
257
|
+
// Git Bash does not use APT - this package is not applicable
|
|
258
|
+
console.log('apt-transport-https is not available for Git Bash.');
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// -----------------------------------------------------------------------------
|
|
263
|
+
// Eligibility Check
|
|
264
|
+
// -----------------------------------------------------------------------------
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Check if apt-transport-https (or built-in HTTPS support) is installed.
|
|
268
|
+
*
|
|
269
|
+
* This function checks whether HTTPS transport is available for APT.
|
|
270
|
+
* On modern systems (APT 1.5+), HTTPS is built-in and always returns true.
|
|
271
|
+
* On legacy systems, it checks if the apt-transport-https package is installed.
|
|
272
|
+
*
|
|
273
|
+
* @returns {Promise<boolean>} True if HTTPS transport is available
|
|
274
|
+
*/
|
|
275
|
+
async function isInstalled() {
|
|
276
|
+
const platform = os.detect();
|
|
277
|
+
|
|
278
|
+
// Only applicable on Debian-based systems
|
|
279
|
+
if (!['ubuntu', 'debian', 'wsl', 'raspbian'].includes(platform.type)) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Check if APT has built-in HTTPS support (APT 1.5+)
|
|
284
|
+
const hasBuiltIn = await hasBuiltInHttpsSupport();
|
|
285
|
+
if (hasBuiltIn) {
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// On legacy systems, check if the package is installed
|
|
290
|
+
return await apt.isPackageInstalled('apt-transport-https');
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Check if this installer is supported on the current platform.
|
|
295
|
+
*
|
|
296
|
+
* apt-transport-https can be installed on Debian-based systems:
|
|
297
|
+
* - Ubuntu
|
|
298
|
+
* - Debian
|
|
299
|
+
* - Raspberry Pi OS (raspbian)
|
|
300
|
+
* - WSL (Ubuntu)
|
|
301
|
+
*
|
|
302
|
+
* @returns {boolean} True if installation is supported on this platform
|
|
303
|
+
*/
|
|
304
|
+
function isEligible() {
|
|
305
|
+
const platform = os.detect();
|
|
306
|
+
return ['ubuntu', 'debian', 'wsl', 'raspbian'].includes(platform.type);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// -----------------------------------------------------------------------------
|
|
310
|
+
// Main Installation Entry Point
|
|
311
|
+
// -----------------------------------------------------------------------------
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Main installation entry point - detects platform and runs appropriate installer.
|
|
315
|
+
*
|
|
316
|
+
* This function detects the current operating system and dispatches to the
|
|
317
|
+
* appropriate platform-specific installer function. apt-transport-https is only
|
|
318
|
+
* applicable to Debian-based systems (Ubuntu, Debian, Raspberry Pi OS, WSL).
|
|
319
|
+
*
|
|
320
|
+
* Supported platforms:
|
|
321
|
+
* - Ubuntu/Debian (APT) - installs package on legacy systems, reports built-in on modern
|
|
322
|
+
* - Raspberry Pi OS (APT) - same as Ubuntu
|
|
323
|
+
* - Ubuntu on WSL (APT) - same as Ubuntu
|
|
324
|
+
*
|
|
325
|
+
* Not applicable platforms (returns gracefully):
|
|
326
|
+
* - macOS (uses Homebrew)
|
|
327
|
+
* - Amazon Linux/RHEL (uses DNF/YUM)
|
|
328
|
+
* - Windows (uses Chocolatey/winget)
|
|
329
|
+
* - Git Bash (no package manager)
|
|
330
|
+
*
|
|
331
|
+
* @returns {Promise<void>}
|
|
332
|
+
*/
|
|
333
|
+
async function install() {
|
|
334
|
+
const platform = os.detect();
|
|
335
|
+
|
|
336
|
+
// Map platform types to their corresponding installer functions
|
|
337
|
+
// Multiple platform types can map to the same installer (e.g., debian and ubuntu)
|
|
338
|
+
const installers = {
|
|
339
|
+
'macos': install_macos,
|
|
340
|
+
'ubuntu': install_ubuntu,
|
|
341
|
+
'debian': install_ubuntu,
|
|
342
|
+
'wsl': install_ubuntu_wsl,
|
|
343
|
+
'raspbian': install_raspbian,
|
|
344
|
+
'amazon_linux': install_amazon_linux,
|
|
345
|
+
'fedora': install_amazon_linux,
|
|
346
|
+
'rhel': install_amazon_linux,
|
|
347
|
+
'windows': install_windows,
|
|
348
|
+
'gitbash': install_gitbash,
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
// Look up the installer for the detected platform
|
|
352
|
+
const installer = installers[platform.type];
|
|
353
|
+
|
|
354
|
+
// If no installer exists for this platform, inform the user gracefully
|
|
355
|
+
if (!installer) {
|
|
356
|
+
console.log(`apt-transport-https is not available for ${platform.type}.`);
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Run the platform-specific installer
|
|
361
|
+
await installer();
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// -----------------------------------------------------------------------------
|
|
365
|
+
// Module Exports
|
|
366
|
+
// -----------------------------------------------------------------------------
|
|
367
|
+
|
|
368
|
+
module.exports = {
|
|
369
|
+
install,
|
|
370
|
+
isInstalled,
|
|
371
|
+
isEligible,
|
|
372
|
+
install_macos,
|
|
373
|
+
install_ubuntu,
|
|
374
|
+
install_ubuntu_wsl,
|
|
375
|
+
install_raspbian,
|
|
376
|
+
install_amazon_linux,
|
|
377
|
+
install_windows,
|
|
378
|
+
install_gitbash,
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
// -----------------------------------------------------------------------------
|
|
382
|
+
// Direct Execution Handler
|
|
383
|
+
// -----------------------------------------------------------------------------
|
|
384
|
+
|
|
385
|
+
if (require.main === module) {
|
|
386
|
+
install().catch(err => {
|
|
387
|
+
console.error(err.message);
|
|
388
|
+
process.exit(1);
|
|
389
|
+
});
|
|
390
|
+
}
|