@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
|
@@ -1,25 +1,306 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* get-dependencies - Extract dependency names from package.json
|
|
5
|
+
*
|
|
6
|
+
* Migrated from legacy dotfiles function.
|
|
7
|
+
* Original:
|
|
8
|
+
* get-dependencies() {
|
|
9
|
+
* local package_json_path="$1"
|
|
10
|
+
* local dependency_type_prefix="${2:-dependencies}"
|
|
11
|
+
* ...
|
|
12
|
+
* dependencies=$(jq -r --arg depType "$dependency_type" '.[$depType] | keys[]?' "$package_json_path")
|
|
13
|
+
* echo "$dependencies"
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* This script reads a package.json file and extracts the names of dependencies
|
|
17
|
+
* from a specified dependency type (dependencies, devDependencies, etc.).
|
|
18
|
+
* Unlike the original bash implementation that required jq, this Node.js version
|
|
19
|
+
* uses native JSON parsing and works on all platforms without external tools.
|
|
20
|
+
*
|
|
5
21
|
* @module scripts/get-dependencies
|
|
6
22
|
*/
|
|
7
23
|
|
|
24
|
+
const fs = require('fs');
|
|
25
|
+
const path = require('path');
|
|
26
|
+
const os = require('../utils/common/os');
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Pure Node.js implementation that extracts dependency names from package.json.
|
|
30
|
+
*
|
|
31
|
+
* This function reads a package.json file and outputs the names of packages
|
|
32
|
+
* from the specified dependency type. It works identically on all platforms
|
|
33
|
+
* because it only uses Node.js built-in modules (fs for file reading and
|
|
34
|
+
* JSON.parse for parsing).
|
|
35
|
+
*
|
|
36
|
+
* Why this is better than the original bash implementation:
|
|
37
|
+
* - No external dependency on jq (which must be installed separately)
|
|
38
|
+
* - Consistent behavior across all operating systems
|
|
39
|
+
* - Better error messages with specific file/JSON parsing details
|
|
40
|
+
* - Native JSON parsing is more reliable than command-line jq
|
|
41
|
+
*
|
|
42
|
+
* @param {string[]} args - Command line arguments
|
|
43
|
+
* @param {string} args[0] - Path to package.json file (required)
|
|
44
|
+
* @param {string} [args[1]] - Dependency type prefix: "dev", "peer", "opt", "bundle", or "dependencies" (default: "dependencies")
|
|
45
|
+
* @returns {Promise<void>}
|
|
46
|
+
*/
|
|
47
|
+
async function do_get_dependencies_nodejs(args) {
|
|
48
|
+
const packageJsonPath = args[0];
|
|
49
|
+
const dependencyTypePrefix = args[1] || 'dependencies';
|
|
50
|
+
|
|
51
|
+
// Validate that a path was provided
|
|
52
|
+
if (!packageJsonPath) {
|
|
53
|
+
console.error('Usage: get-dependencies /path/to/package.json [dependency_type]');
|
|
54
|
+
console.error('');
|
|
55
|
+
console.error('Dependency types:');
|
|
56
|
+
console.error(' dependencies - Production dependencies (default)');
|
|
57
|
+
console.error(' dev - Development dependencies');
|
|
58
|
+
console.error(' peer - Peer dependencies');
|
|
59
|
+
console.error(' opt - Optional dependencies');
|
|
60
|
+
console.error(' bundle - Bundled dependencies');
|
|
61
|
+
console.error('');
|
|
62
|
+
console.error('Examples:');
|
|
63
|
+
console.error(' get-dependencies ./package.json');
|
|
64
|
+
console.error(' get-dependencies ./package.json dev');
|
|
65
|
+
console.error(' get-dependencies ../other/package.json peer');
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Resolve the path (handle relative and absolute paths)
|
|
70
|
+
// Use process.cwd() to resolve relative paths from where the command is run
|
|
71
|
+
const resolvedPath = path.isAbsolute(packageJsonPath)
|
|
72
|
+
? packageJsonPath
|
|
73
|
+
: path.resolve(process.cwd(), packageJsonPath);
|
|
74
|
+
|
|
75
|
+
// Check if the file exists
|
|
76
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
77
|
+
console.error(`Error: File not found: ${resolvedPath}`);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Map the prefix to the full dependency type name
|
|
82
|
+
// This matches the original bash implementation's case statement
|
|
83
|
+
const dependencyTypeMap = {
|
|
84
|
+
'dependencies': 'dependencies',
|
|
85
|
+
'dev': 'devDependencies',
|
|
86
|
+
'peer': 'peerDependencies',
|
|
87
|
+
'opt': 'optionalDependencies',
|
|
88
|
+
'bundle': 'bundledDependencies'
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const dependencyType = dependencyTypeMap[dependencyTypePrefix];
|
|
92
|
+
|
|
93
|
+
// Validate the dependency type prefix
|
|
94
|
+
if (!dependencyType) {
|
|
95
|
+
console.error(`Error: Invalid dependency type prefix: ${dependencyTypePrefix}`);
|
|
96
|
+
console.error('');
|
|
97
|
+
console.error('Valid prefixes are:');
|
|
98
|
+
console.error(' dependencies - Production dependencies');
|
|
99
|
+
console.error(' dev - Development dependencies');
|
|
100
|
+
console.error(' peer - Peer dependencies');
|
|
101
|
+
console.error(' opt - Optional dependencies');
|
|
102
|
+
console.error(' bundle - Bundled dependencies');
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Read and parse the package.json file
|
|
107
|
+
let packageJson;
|
|
108
|
+
try {
|
|
109
|
+
const fileContents = fs.readFileSync(resolvedPath, 'utf8');
|
|
110
|
+
packageJson = JSON.parse(fileContents);
|
|
111
|
+
} catch (error) {
|
|
112
|
+
// Distinguish between read errors and parse errors for better debugging
|
|
113
|
+
if (error.code === 'ENOENT') {
|
|
114
|
+
console.error(`Error: File not found: ${resolvedPath}`);
|
|
115
|
+
} else if (error.code === 'EACCES') {
|
|
116
|
+
console.error(`Error: Permission denied reading: ${resolvedPath}`);
|
|
117
|
+
} else if (error instanceof SyntaxError) {
|
|
118
|
+
console.error(`Error: Invalid JSON in ${resolvedPath}`);
|
|
119
|
+
console.error(` ${error.message}`);
|
|
120
|
+
} else {
|
|
121
|
+
console.error(`Error reading file: ${error.message}`);
|
|
122
|
+
}
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Check if the dependency type exists in the package.json
|
|
127
|
+
// If it doesn't exist or is null/undefined, silently exit with success
|
|
128
|
+
// This matches the original bash behavior: return 0 if node doesn't exist
|
|
129
|
+
const dependencies = packageJson[dependencyType];
|
|
130
|
+
if (!dependencies || typeof dependencies !== 'object') {
|
|
131
|
+
// No dependencies of this type - this is not an error, just empty output
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Extract and output the dependency names (keys of the dependencies object)
|
|
136
|
+
// Each name is printed on its own line, matching the original jq output format
|
|
137
|
+
const dependencyNames = Object.keys(dependencies);
|
|
138
|
+
|
|
139
|
+
// If there are no dependencies, silently exit (matches original behavior)
|
|
140
|
+
if (dependencyNames.length === 0) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Print each dependency name on its own line
|
|
145
|
+
// This format matches the original: jq -r '.[$depType] | keys[]?'
|
|
146
|
+
for (const name of dependencyNames) {
|
|
147
|
+
console.log(name);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Extract dependency names on macOS.
|
|
153
|
+
*
|
|
154
|
+
* Delegates to the pure Node.js implementation since JSON parsing
|
|
155
|
+
* works identically on all platforms.
|
|
156
|
+
*
|
|
157
|
+
* @param {string[]} args - Command line arguments
|
|
158
|
+
* @returns {Promise<void>}
|
|
159
|
+
*/
|
|
160
|
+
async function do_get_dependencies_macos(args) {
|
|
161
|
+
return do_get_dependencies_nodejs(args);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Extract dependency names on Ubuntu.
|
|
166
|
+
*
|
|
167
|
+
* Delegates to the pure Node.js implementation since JSON parsing
|
|
168
|
+
* works identically on all platforms.
|
|
169
|
+
*
|
|
170
|
+
* @param {string[]} args - Command line arguments
|
|
171
|
+
* @returns {Promise<void>}
|
|
172
|
+
*/
|
|
173
|
+
async function do_get_dependencies_ubuntu(args) {
|
|
174
|
+
return do_get_dependencies_nodejs(args);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Extract dependency names on Raspberry Pi OS.
|
|
179
|
+
*
|
|
180
|
+
* Delegates to the pure Node.js implementation since JSON parsing
|
|
181
|
+
* works identically on all platforms.
|
|
182
|
+
*
|
|
183
|
+
* @param {string[]} args - Command line arguments
|
|
184
|
+
* @returns {Promise<void>}
|
|
185
|
+
*/
|
|
186
|
+
async function do_get_dependencies_raspbian(args) {
|
|
187
|
+
return do_get_dependencies_nodejs(args);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Extract dependency names on Amazon Linux.
|
|
192
|
+
*
|
|
193
|
+
* Delegates to the pure Node.js implementation since JSON parsing
|
|
194
|
+
* works identically on all platforms.
|
|
195
|
+
*
|
|
196
|
+
* @param {string[]} args - Command line arguments
|
|
197
|
+
* @returns {Promise<void>}
|
|
198
|
+
*/
|
|
199
|
+
async function do_get_dependencies_amazon_linux(args) {
|
|
200
|
+
return do_get_dependencies_nodejs(args);
|
|
201
|
+
}
|
|
202
|
+
|
|
8
203
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
204
|
+
* Extract dependency names on Windows Command Prompt.
|
|
205
|
+
*
|
|
206
|
+
* Delegates to the pure Node.js implementation since JSON parsing
|
|
207
|
+
* works identically on all platforms.
|
|
208
|
+
*
|
|
209
|
+
* @param {string[]} args - Command line arguments
|
|
210
|
+
* @returns {Promise<void>}
|
|
211
|
+
*/
|
|
212
|
+
async function do_get_dependencies_cmd(args) {
|
|
213
|
+
return do_get_dependencies_nodejs(args);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Extract dependency names on Windows PowerShell.
|
|
218
|
+
*
|
|
219
|
+
* Delegates to the pure Node.js implementation since JSON parsing
|
|
220
|
+
* works identically on all platforms.
|
|
11
221
|
*
|
|
12
222
|
* @param {string[]} args - Command line arguments
|
|
13
|
-
* @param {string} args.0 - Path to package.json
|
|
14
|
-
* @param {string} [args.1] - Dependency type: "dev", "peer", "opt", or "dependencies"
|
|
15
223
|
* @returns {Promise<void>}
|
|
16
224
|
*/
|
|
17
|
-
async function
|
|
18
|
-
|
|
225
|
+
async function do_get_dependencies_powershell(args) {
|
|
226
|
+
return do_get_dependencies_nodejs(args);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Extract dependency names in Git Bash on Windows.
|
|
231
|
+
*
|
|
232
|
+
* Delegates to the pure Node.js implementation since JSON parsing
|
|
233
|
+
* works identically on all platforms.
|
|
234
|
+
*
|
|
235
|
+
* @param {string[]} args - Command line arguments
|
|
236
|
+
* @returns {Promise<void>}
|
|
237
|
+
*/
|
|
238
|
+
async function do_get_dependencies_gitbash(args) {
|
|
239
|
+
return do_get_dependencies_nodejs(args);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Main entry point - detects environment and executes appropriate implementation.
|
|
244
|
+
*
|
|
245
|
+
* Extracts and lists dependency names from a package.json file. The output
|
|
246
|
+
* is a list of package names (one per line), which can be piped to other
|
|
247
|
+
* commands or used in scripts.
|
|
248
|
+
*
|
|
249
|
+
* This is useful for:
|
|
250
|
+
* - Auditing what packages are installed
|
|
251
|
+
* - Copying dependencies from one project to another
|
|
252
|
+
* - Comparing dependencies between projects
|
|
253
|
+
* - Scripting package installation workflows
|
|
254
|
+
*
|
|
255
|
+
* Examples:
|
|
256
|
+
* get-dependencies ./package.json # List production dependencies
|
|
257
|
+
* get-dependencies ./package.json dev # List devDependencies
|
|
258
|
+
* get-dependencies ../lib/package.json peer # List peerDependencies
|
|
259
|
+
*
|
|
260
|
+
* @param {string[]} args - Command line arguments
|
|
261
|
+
* @returns {Promise<void>}
|
|
262
|
+
*/
|
|
263
|
+
async function do_get_dependencies(args) {
|
|
264
|
+
const platform = os.detect();
|
|
265
|
+
|
|
266
|
+
const handlers = {
|
|
267
|
+
'macos': do_get_dependencies_macos,
|
|
268
|
+
'ubuntu': do_get_dependencies_ubuntu,
|
|
269
|
+
'debian': do_get_dependencies_ubuntu,
|
|
270
|
+
'raspbian': do_get_dependencies_raspbian,
|
|
271
|
+
'amazon_linux': do_get_dependencies_amazon_linux,
|
|
272
|
+
'rhel': do_get_dependencies_amazon_linux,
|
|
273
|
+
'fedora': do_get_dependencies_ubuntu,
|
|
274
|
+
'linux': do_get_dependencies_ubuntu,
|
|
275
|
+
'wsl': do_get_dependencies_ubuntu,
|
|
276
|
+
'cmd': do_get_dependencies_cmd,
|
|
277
|
+
'windows': do_get_dependencies_cmd,
|
|
278
|
+
'powershell': do_get_dependencies_powershell,
|
|
279
|
+
'gitbash': do_get_dependencies_gitbash
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
const handler = handlers[platform.type];
|
|
283
|
+
if (!handler) {
|
|
284
|
+
console.error(`Platform '${platform.type}' is not supported for this command.`);
|
|
285
|
+
process.exit(1);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
await handler(args);
|
|
19
289
|
}
|
|
20
290
|
|
|
21
|
-
module.exports = {
|
|
291
|
+
module.exports = {
|
|
292
|
+
main: do_get_dependencies,
|
|
293
|
+
do_get_dependencies,
|
|
294
|
+
do_get_dependencies_nodejs,
|
|
295
|
+
do_get_dependencies_macos,
|
|
296
|
+
do_get_dependencies_ubuntu,
|
|
297
|
+
do_get_dependencies_raspbian,
|
|
298
|
+
do_get_dependencies_amazon_linux,
|
|
299
|
+
do_get_dependencies_cmd,
|
|
300
|
+
do_get_dependencies_powershell,
|
|
301
|
+
do_get_dependencies_gitbash
|
|
302
|
+
};
|
|
22
303
|
|
|
23
304
|
if (require.main === module) {
|
|
24
|
-
|
|
305
|
+
do_get_dependencies(process.argv.slice(2));
|
|
25
306
|
}
|