@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
package/src/scripts/dp.js
CHANGED
|
@@ -1,23 +1,442 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* dp - Display running Docker containers in formatted table
|
|
5
|
+
*
|
|
6
|
+
* Migrated from legacy dotfiles alias.
|
|
7
|
+
* Original:
|
|
8
|
+
* dp() {
|
|
9
|
+
* if ! command -v docker &> /dev/null; then
|
|
10
|
+
* echo "Docker is not currently installed."
|
|
11
|
+
* return 1
|
|
12
|
+
* fi
|
|
13
|
+
* docker ps --format '{{.ID}}\t{{.Names}}\t{{.Ports}}'
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* Also found as alias:
|
|
17
|
+
* alias dp="docker ps --format '{{.ID}}\t{{.Names}}\t{{.Ports}}'"
|
|
18
|
+
*
|
|
19
|
+
* This script displays running Docker containers in a clean, formatted table
|
|
20
|
+
* showing the container ID, name, and port mappings. It's a quick way to see
|
|
21
|
+
* what containers are currently running without the extra columns of `docker ps`.
|
|
22
|
+
*
|
|
5
23
|
* @module scripts/dp
|
|
6
24
|
*/
|
|
7
25
|
|
|
26
|
+
const os = require('../utils/common/os');
|
|
27
|
+
const { execSync, spawnSync } = require('child_process');
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Helper function to check if a command exists on the system.
|
|
31
|
+
* Used to detect if Docker is installed before attempting to use it.
|
|
32
|
+
*
|
|
33
|
+
* @param {string} cmd - The command name to check
|
|
34
|
+
* @returns {boolean} True if the command exists, false otherwise
|
|
35
|
+
*/
|
|
36
|
+
function isCommandAvailable(cmd) {
|
|
37
|
+
try {
|
|
38
|
+
// Use 'which' on Unix-like systems, 'where' on Windows
|
|
39
|
+
const checkCmd = process.platform === 'win32' ? `where ${cmd}` : `which ${cmd}`;
|
|
40
|
+
execSync(checkCmd, { stdio: 'ignore' });
|
|
41
|
+
return true;
|
|
42
|
+
} catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Pure Node.js implementation - NOT APPLICABLE for this script.
|
|
49
|
+
*
|
|
50
|
+
* Docker commands require the Docker CLI, which is a system-level tool.
|
|
51
|
+
* There is no pure Node.js way to query Docker containers without shelling
|
|
52
|
+
* out to the Docker CLI or using a Docker SDK library.
|
|
53
|
+
*
|
|
54
|
+
* While Docker does have a REST API that could theoretically be called
|
|
55
|
+
* via Node.js fetch(), it requires knowing the Docker socket location
|
|
56
|
+
* and handling Unix socket connections, which varies by platform.
|
|
57
|
+
* Using the Docker CLI is the most reliable and consistent approach.
|
|
58
|
+
*
|
|
59
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
60
|
+
* @returns {Promise<void>}
|
|
61
|
+
* @throws {Error} Always throws - this function should not be called directly
|
|
62
|
+
*/
|
|
63
|
+
async function do_dp_nodejs(args) {
|
|
64
|
+
// Docker CLI interaction cannot be done in pure Node.js.
|
|
65
|
+
// The Docker CLI is the standard interface for container management.
|
|
66
|
+
throw new Error(
|
|
67
|
+
'do_dp_nodejs should not be called directly. ' +
|
|
68
|
+
'Docker CLI commands require system-level execution.'
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Display running Docker containers on macOS.
|
|
74
|
+
*
|
|
75
|
+
* macOS uses Docker Desktop or Docker installed via Homebrew.
|
|
76
|
+
* The docker CLI command works the same as on Linux.
|
|
77
|
+
*
|
|
78
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
79
|
+
* @returns {Promise<void>}
|
|
80
|
+
*/
|
|
81
|
+
async function do_dp_macos(args) {
|
|
82
|
+
// Check if Docker is installed
|
|
83
|
+
if (!isCommandAvailable('docker')) {
|
|
84
|
+
console.error('Docker is not currently installed.');
|
|
85
|
+
console.error('');
|
|
86
|
+
console.error('Install Docker Desktop for macOS:');
|
|
87
|
+
console.error(' brew install --cask docker');
|
|
88
|
+
console.error('');
|
|
89
|
+
console.error('Or download from: https://www.docker.com/products/docker-desktop');
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
try {
|
|
94
|
+
// Execute docker ps with custom format showing ID, Name, and Ports
|
|
95
|
+
// Using spawnSync for better handling of the output format
|
|
96
|
+
const result = spawnSync('docker', ['ps', '--format', '{{.ID}}\t{{.Names}}\t{{.Ports}}'], {
|
|
97
|
+
stdio: 'inherit',
|
|
98
|
+
encoding: 'utf8'
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
if (result.status !== 0) {
|
|
102
|
+
// If Docker daemon is not running, provide helpful message
|
|
103
|
+
console.error('');
|
|
104
|
+
console.error('Error: Could not connect to Docker daemon.');
|
|
105
|
+
console.error('Make sure Docker Desktop is running.');
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.error('Error executing docker command:', error.message);
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Display running Docker containers on Ubuntu.
|
|
116
|
+
*
|
|
117
|
+
* Ubuntu can have Docker installed via apt, snap, or Docker's official repo.
|
|
118
|
+
* The docker CLI command works the same across all installation methods.
|
|
119
|
+
*
|
|
120
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
121
|
+
* @returns {Promise<void>}
|
|
122
|
+
*/
|
|
123
|
+
async function do_dp_ubuntu(args) {
|
|
124
|
+
// Check if Docker is installed
|
|
125
|
+
if (!isCommandAvailable('docker')) {
|
|
126
|
+
console.error('Docker is not currently installed.');
|
|
127
|
+
console.error('');
|
|
128
|
+
console.error('Install Docker on Ubuntu:');
|
|
129
|
+
console.error(' sudo apt update');
|
|
130
|
+
console.error(' sudo apt install docker.io');
|
|
131
|
+
console.error('');
|
|
132
|
+
console.error('Or use the official Docker repository:');
|
|
133
|
+
console.error(' https://docs.docker.com/engine/install/ubuntu/');
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
try {
|
|
138
|
+
// Execute docker ps with custom format showing ID, Name, and Ports
|
|
139
|
+
const result = spawnSync('docker', ['ps', '--format', '{{.ID}}\t{{.Names}}\t{{.Ports}}'], {
|
|
140
|
+
stdio: 'inherit',
|
|
141
|
+
encoding: 'utf8'
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
if (result.status !== 0) {
|
|
145
|
+
// If Docker daemon is not running or user lacks permissions
|
|
146
|
+
console.error('');
|
|
147
|
+
console.error('Error: Could not connect to Docker daemon.');
|
|
148
|
+
console.error('');
|
|
149
|
+
console.error('Make sure Docker is running:');
|
|
150
|
+
console.error(' sudo systemctl start docker');
|
|
151
|
+
console.error('');
|
|
152
|
+
console.error('To run docker without sudo, add your user to the docker group:');
|
|
153
|
+
console.error(' sudo usermod -aG docker $USER');
|
|
154
|
+
console.error(' (Log out and back in for this to take effect)');
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
} catch (error) {
|
|
158
|
+
console.error('Error executing docker command:', error.message);
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Display running Docker containers on Raspberry Pi OS.
|
|
165
|
+
*
|
|
166
|
+
* Raspberry Pi OS is Debian-based, so Docker installation and usage
|
|
167
|
+
* is similar to Ubuntu/Debian.
|
|
168
|
+
*
|
|
169
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
170
|
+
* @returns {Promise<void>}
|
|
171
|
+
*/
|
|
172
|
+
async function do_dp_raspbian(args) {
|
|
173
|
+
// Check if Docker is installed
|
|
174
|
+
if (!isCommandAvailable('docker')) {
|
|
175
|
+
console.error('Docker is not currently installed.');
|
|
176
|
+
console.error('');
|
|
177
|
+
console.error('Install Docker on Raspberry Pi OS:');
|
|
178
|
+
console.error(' curl -fsSL https://get.docker.com -o get-docker.sh');
|
|
179
|
+
console.error(' sudo sh get-docker.sh');
|
|
180
|
+
console.error(' sudo usermod -aG docker $USER');
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
try {
|
|
185
|
+
// Execute docker ps with custom format showing ID, Name, and Ports
|
|
186
|
+
const result = spawnSync('docker', ['ps', '--format', '{{.ID}}\t{{.Names}}\t{{.Ports}}'], {
|
|
187
|
+
stdio: 'inherit',
|
|
188
|
+
encoding: 'utf8'
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
if (result.status !== 0) {
|
|
192
|
+
console.error('');
|
|
193
|
+
console.error('Error: Could not connect to Docker daemon.');
|
|
194
|
+
console.error('');
|
|
195
|
+
console.error('Make sure Docker is running:');
|
|
196
|
+
console.error(' sudo systemctl start docker');
|
|
197
|
+
console.error('');
|
|
198
|
+
console.error('To run docker without sudo, add your user to the docker group:');
|
|
199
|
+
console.error(' sudo usermod -aG docker $USER');
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
} catch (error) {
|
|
203
|
+
console.error('Error executing docker command:', error.message);
|
|
204
|
+
process.exit(1);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Display running Docker containers on Amazon Linux.
|
|
210
|
+
*
|
|
211
|
+
* Amazon Linux typically has Docker available in its package repository.
|
|
212
|
+
* It uses dnf (Amazon Linux 2023) or yum (Amazon Linux 2) for installation.
|
|
213
|
+
*
|
|
214
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
215
|
+
* @returns {Promise<void>}
|
|
216
|
+
*/
|
|
217
|
+
async function do_dp_amazon_linux(args) {
|
|
218
|
+
// Check if Docker is installed
|
|
219
|
+
if (!isCommandAvailable('docker')) {
|
|
220
|
+
console.error('Docker is not currently installed.');
|
|
221
|
+
console.error('');
|
|
222
|
+
console.error('Install Docker on Amazon Linux:');
|
|
223
|
+
console.error(' sudo yum install docker -y');
|
|
224
|
+
console.error(' sudo systemctl start docker');
|
|
225
|
+
console.error(' sudo usermod -aG docker $USER');
|
|
226
|
+
process.exit(1);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
try {
|
|
230
|
+
// Execute docker ps with custom format showing ID, Name, and Ports
|
|
231
|
+
const result = spawnSync('docker', ['ps', '--format', '{{.ID}}\t{{.Names}}\t{{.Ports}}'], {
|
|
232
|
+
stdio: 'inherit',
|
|
233
|
+
encoding: 'utf8'
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
if (result.status !== 0) {
|
|
237
|
+
console.error('');
|
|
238
|
+
console.error('Error: Could not connect to Docker daemon.');
|
|
239
|
+
console.error('');
|
|
240
|
+
console.error('Make sure Docker is running:');
|
|
241
|
+
console.error(' sudo systemctl start docker');
|
|
242
|
+
console.error('');
|
|
243
|
+
console.error('To run docker without sudo, add your user to the docker group:');
|
|
244
|
+
console.error(' sudo usermod -aG docker $USER');
|
|
245
|
+
process.exit(1);
|
|
246
|
+
}
|
|
247
|
+
} catch (error) {
|
|
248
|
+
console.error('Error executing docker command:', error.message);
|
|
249
|
+
process.exit(1);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Display running Docker containers on Windows Command Prompt.
|
|
255
|
+
*
|
|
256
|
+
* Windows uses Docker Desktop, which provides the docker CLI.
|
|
257
|
+
* The command syntax is the same as Unix systems.
|
|
258
|
+
*
|
|
259
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
260
|
+
* @returns {Promise<void>}
|
|
261
|
+
*/
|
|
262
|
+
async function do_dp_cmd(args) {
|
|
263
|
+
// Check if Docker is installed
|
|
264
|
+
if (!isCommandAvailable('docker')) {
|
|
265
|
+
console.error('Docker is not currently installed.');
|
|
266
|
+
console.error('');
|
|
267
|
+
console.error('Install Docker Desktop for Windows:');
|
|
268
|
+
console.error(' winget install Docker.DockerDesktop');
|
|
269
|
+
console.error('');
|
|
270
|
+
console.error('Or download from: https://www.docker.com/products/docker-desktop');
|
|
271
|
+
process.exit(1);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
try {
|
|
275
|
+
// Execute docker ps with custom format showing ID, Name, and Ports
|
|
276
|
+
const result = spawnSync('docker', ['ps', '--format', '{{.ID}}\t{{.Names}}\t{{.Ports}}'], {
|
|
277
|
+
stdio: 'inherit',
|
|
278
|
+
encoding: 'utf8',
|
|
279
|
+
shell: true // Use shell on Windows for proper command resolution
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
if (result.status !== 0) {
|
|
283
|
+
console.error('');
|
|
284
|
+
console.error('Error: Could not connect to Docker daemon.');
|
|
285
|
+
console.error('Make sure Docker Desktop is running.');
|
|
286
|
+
process.exit(1);
|
|
287
|
+
}
|
|
288
|
+
} catch (error) {
|
|
289
|
+
console.error('Error executing docker command:', error.message);
|
|
290
|
+
process.exit(1);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
8
294
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
295
|
+
* Display running Docker containers on Windows PowerShell.
|
|
296
|
+
*
|
|
297
|
+
* PowerShell uses the same Docker CLI as Command Prompt.
|
|
298
|
+
* Docker Desktop must be running for commands to work.
|
|
11
299
|
*
|
|
12
300
|
* @param {string[]} args - Command line arguments (unused)
|
|
13
301
|
* @returns {Promise<void>}
|
|
14
302
|
*/
|
|
15
|
-
async function
|
|
16
|
-
//
|
|
303
|
+
async function do_dp_powershell(args) {
|
|
304
|
+
// Check if Docker is installed
|
|
305
|
+
if (!isCommandAvailable('docker')) {
|
|
306
|
+
console.error('Docker is not currently installed.');
|
|
307
|
+
console.error('');
|
|
308
|
+
console.error('Install Docker Desktop for Windows:');
|
|
309
|
+
console.error(' winget install Docker.DockerDesktop');
|
|
310
|
+
console.error('');
|
|
311
|
+
console.error('Or download from: https://www.docker.com/products/docker-desktop');
|
|
312
|
+
process.exit(1);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
try {
|
|
316
|
+
// Execute docker ps with custom format showing ID, Name, and Ports
|
|
317
|
+
const result = spawnSync('docker', ['ps', '--format', '{{.ID}}\t{{.Names}}\t{{.Ports}}'], {
|
|
318
|
+
stdio: 'inherit',
|
|
319
|
+
encoding: 'utf8',
|
|
320
|
+
shell: true // Use shell on Windows for proper command resolution
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
if (result.status !== 0) {
|
|
324
|
+
console.error('');
|
|
325
|
+
console.error('Error: Could not connect to Docker daemon.');
|
|
326
|
+
console.error('Make sure Docker Desktop is running.');
|
|
327
|
+
process.exit(1);
|
|
328
|
+
}
|
|
329
|
+
} catch (error) {
|
|
330
|
+
console.error('Error executing docker command:', error.message);
|
|
331
|
+
process.exit(1);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Display running Docker containers on Git Bash.
|
|
337
|
+
*
|
|
338
|
+
* Git Bash runs on Windows and can access the Docker CLI
|
|
339
|
+
* provided by Docker Desktop.
|
|
340
|
+
*
|
|
341
|
+
* @param {string[]} args - Command line arguments (unused)
|
|
342
|
+
* @returns {Promise<void>}
|
|
343
|
+
*/
|
|
344
|
+
async function do_dp_gitbash(args) {
|
|
345
|
+
// Check if Docker is installed
|
|
346
|
+
if (!isCommandAvailable('docker')) {
|
|
347
|
+
console.error('Docker is not currently installed.');
|
|
348
|
+
console.error('');
|
|
349
|
+
console.error('Install Docker Desktop for Windows:');
|
|
350
|
+
console.error(' https://www.docker.com/products/docker-desktop');
|
|
351
|
+
console.error('');
|
|
352
|
+
console.error('Make sure Docker is in your PATH after installation.');
|
|
353
|
+
process.exit(1);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
try {
|
|
357
|
+
// Execute docker ps with custom format showing ID, Name, and Ports
|
|
358
|
+
const result = spawnSync('docker', ['ps', '--format', '{{.ID}}\t{{.Names}}\t{{.Ports}}'], {
|
|
359
|
+
stdio: 'inherit',
|
|
360
|
+
encoding: 'utf8'
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
if (result.status !== 0) {
|
|
364
|
+
console.error('');
|
|
365
|
+
console.error('Error: Could not connect to Docker daemon.');
|
|
366
|
+
console.error('Make sure Docker Desktop is running.');
|
|
367
|
+
process.exit(1);
|
|
368
|
+
}
|
|
369
|
+
} catch (error) {
|
|
370
|
+
console.error('Error executing docker command:', error.message);
|
|
371
|
+
process.exit(1);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Main entry point - detects environment and executes appropriate implementation.
|
|
377
|
+
*
|
|
378
|
+
* The "dp" (Docker Process) command displays running Docker containers in a
|
|
379
|
+
* formatted table showing container ID, name, and port mappings. This provides
|
|
380
|
+
* a quick, clean view of what's running without the extra columns from `docker ps`.
|
|
381
|
+
*
|
|
382
|
+
* The output format is:
|
|
383
|
+
* CONTAINER_ID CONTAINER_NAME PORT_MAPPINGS
|
|
384
|
+
*
|
|
385
|
+
* Example output:
|
|
386
|
+
* abc123def456 my-nginx 0.0.0.0:80->80/tcp
|
|
387
|
+
* 789ghi012jkl my-redis 0.0.0.0:6379->6379/tcp
|
|
388
|
+
*
|
|
389
|
+
* @param {string[]} args - Command line arguments (unused, but could be extended)
|
|
390
|
+
* @returns {Promise<void>}
|
|
391
|
+
*/
|
|
392
|
+
async function do_dp(args) {
|
|
393
|
+
const platform = os.detect();
|
|
394
|
+
|
|
395
|
+
const handlers = {
|
|
396
|
+
'macos': do_dp_macos,
|
|
397
|
+
'ubuntu': do_dp_ubuntu,
|
|
398
|
+
'debian': do_dp_ubuntu,
|
|
399
|
+
'raspbian': do_dp_raspbian,
|
|
400
|
+
'amazon_linux': do_dp_amazon_linux,
|
|
401
|
+
'rhel': do_dp_amazon_linux,
|
|
402
|
+
'fedora': do_dp_ubuntu,
|
|
403
|
+
'linux': do_dp_ubuntu,
|
|
404
|
+
'wsl': do_dp_ubuntu,
|
|
405
|
+
'cmd': do_dp_cmd,
|
|
406
|
+
'windows': do_dp_cmd,
|
|
407
|
+
'powershell': do_dp_powershell,
|
|
408
|
+
'gitbash': do_dp_gitbash
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
const handler = handlers[platform.type];
|
|
412
|
+
if (!handler) {
|
|
413
|
+
console.error(`Platform '${platform.type}' is not supported for this command.`);
|
|
414
|
+
console.error('');
|
|
415
|
+
console.error('Supported platforms:');
|
|
416
|
+
console.error(' - macOS');
|
|
417
|
+
console.error(' - Ubuntu, Debian, and other Linux distributions');
|
|
418
|
+
console.error(' - Raspberry Pi OS');
|
|
419
|
+
console.error(' - Amazon Linux');
|
|
420
|
+
console.error(' - Windows (CMD, PowerShell, Git Bash)');
|
|
421
|
+
process.exit(1);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
await handler(args);
|
|
17
425
|
}
|
|
18
426
|
|
|
19
|
-
module.exports = {
|
|
427
|
+
module.exports = {
|
|
428
|
+
main: do_dp,
|
|
429
|
+
do_dp,
|
|
430
|
+
do_dp_nodejs,
|
|
431
|
+
do_dp_macos,
|
|
432
|
+
do_dp_ubuntu,
|
|
433
|
+
do_dp_raspbian,
|
|
434
|
+
do_dp_amazon_linux,
|
|
435
|
+
do_dp_cmd,
|
|
436
|
+
do_dp_powershell,
|
|
437
|
+
do_dp_gitbash
|
|
438
|
+
};
|
|
20
439
|
|
|
21
440
|
if (require.main === module) {
|
|
22
|
-
|
|
441
|
+
do_dp(process.argv.slice(2));
|
|
23
442
|
}
|