@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,24 +1,457 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* ncu-update-all - Update all package.json dependencies using npm-check-updates
|
|
5
|
+
*
|
|
6
|
+
* Migrated from legacy dotfiles alias.
|
|
7
|
+
* Original (bash):
|
|
8
|
+
* ncu-update-all(){
|
|
9
|
+
* if ! cmd_exists "ncu"; then
|
|
10
|
+
* printf "ncu is required, please install it!\n"
|
|
11
|
+
* exit 1
|
|
12
|
+
* fi
|
|
13
|
+
* for file in $(find . -type f -name "package.json" -not -path "star/node_modules/star" -not -path "star/bower_components/star"); do
|
|
14
|
+
* if [ -f "$file" ]; then
|
|
15
|
+
* eval "ncu -a -u --packageFile $file"
|
|
16
|
+
* fi
|
|
17
|
+
* done
|
|
18
|
+
* for file in $(find . -type f -name "bower.json" -not -path "star/node_modules/star" -not -path "star/bower_components/star"); do
|
|
19
|
+
* if [ -f "$file" ]; then
|
|
20
|
+
* eval "ncu -a -u -m bower --packageFile $file"
|
|
21
|
+
* fi
|
|
22
|
+
* done
|
|
23
|
+
* }
|
|
24
|
+
* (Note: "star" represents asterisk in the original find command paths)
|
|
25
|
+
*
|
|
26
|
+
* This script recursively finds all package.json and bower.json files and updates
|
|
27
|
+
* their dependencies to the latest versions using npm-check-updates (ncu).
|
|
28
|
+
*
|
|
29
|
+
* Why use ncu (npm-check-updates)?
|
|
30
|
+
* - It understands semver and package versioning semantics
|
|
31
|
+
* - It queries the npm registry for the latest versions
|
|
32
|
+
* - It preserves the version range format (^, ~, etc.)
|
|
33
|
+
* - It handles peer dependencies and optional dependencies correctly
|
|
34
|
+
*
|
|
35
|
+
* This is a case where using the native tool (ncu) is superior to reimplementing
|
|
36
|
+
* in Node.js because ncu is specifically designed for this task and handles
|
|
37
|
+
* many edge cases.
|
|
38
|
+
*
|
|
5
39
|
* @module scripts/ncu-update-all
|
|
6
40
|
*/
|
|
7
41
|
|
|
42
|
+
const os = require('../utils/common/os');
|
|
43
|
+
const fs = require('fs');
|
|
44
|
+
const path = require('path');
|
|
45
|
+
const { execSync, spawnSync } = require('child_process');
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Directory names to exclude from the search.
|
|
49
|
+
* These directories typically contain dependencies or build artifacts
|
|
50
|
+
* and should not be searched for package.json/bower.json files.
|
|
51
|
+
*/
|
|
52
|
+
const EXCLUDED_DIRECTORIES = [
|
|
53
|
+
'node_modules',
|
|
54
|
+
'bower_components',
|
|
55
|
+
'.git',
|
|
56
|
+
'dist',
|
|
57
|
+
'build',
|
|
58
|
+
'coverage'
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Check if a command is available in the system PATH.
|
|
63
|
+
*
|
|
64
|
+
* @param {string} command - The command name to check
|
|
65
|
+
* @returns {boolean} True if the command exists, false otherwise
|
|
66
|
+
*/
|
|
67
|
+
function isCommandAvailable(command) {
|
|
68
|
+
try {
|
|
69
|
+
// Use 'where' on Windows, 'which' on Unix-like systems
|
|
70
|
+
const checkCommand = process.platform === 'win32' ? 'where' : 'which';
|
|
71
|
+
execSync(`${checkCommand} ${command}`, { stdio: 'ignore' });
|
|
72
|
+
return true;
|
|
73
|
+
} catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
8
78
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
79
|
+
* Recursively find files matching a specific name.
|
|
80
|
+
* This walks the directory tree and collects paths to matching files,
|
|
81
|
+
* skipping excluded directories like node_modules.
|
|
82
|
+
*
|
|
83
|
+
* Uses pure Node.js file system operations for cross-platform compatibility.
|
|
84
|
+
*
|
|
85
|
+
* @param {string} rootDir - Starting directory for the search
|
|
86
|
+
* @param {string} targetName - Name of the file to find (e.g., 'package.json')
|
|
87
|
+
* @returns {string[]} Array of absolute paths to found files
|
|
88
|
+
*/
|
|
89
|
+
function findFiles(rootDir, targetName) {
|
|
90
|
+
const results = [];
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Inner recursive function to walk the directory tree.
|
|
94
|
+
* @param {string} currentDir - Current directory being examined
|
|
95
|
+
*/
|
|
96
|
+
function walk(currentDir) {
|
|
97
|
+
let entries;
|
|
98
|
+
|
|
99
|
+
try {
|
|
100
|
+
entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
101
|
+
} catch (err) {
|
|
102
|
+
// Cannot read directory (permission denied, etc.) - skip it
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
for (const entry of entries) {
|
|
107
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
108
|
+
|
|
109
|
+
if (entry.isDirectory()) {
|
|
110
|
+
// Skip excluded directories
|
|
111
|
+
if (EXCLUDED_DIRECTORIES.includes(entry.name)) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
// Recurse into non-excluded directories
|
|
115
|
+
walk(fullPath);
|
|
116
|
+
} else if (entry.isFile() && entry.name === targetName) {
|
|
117
|
+
// Found a matching file
|
|
118
|
+
results.push(fullPath);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Start the walk from the root directory
|
|
124
|
+
walk(rootDir);
|
|
125
|
+
|
|
126
|
+
return results;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Run npm-check-updates on a single package file.
|
|
131
|
+
*
|
|
132
|
+
* @param {string} filePath - Absolute path to the package.json or bower.json file
|
|
133
|
+
* @param {boolean} isBower - True if this is a bower.json file
|
|
134
|
+
* @param {string} startPath - The root path (used for relative path display)
|
|
135
|
+
* @returns {boolean} True if the update succeeded, false otherwise
|
|
136
|
+
*/
|
|
137
|
+
function updatePackageFile(filePath, isBower, startPath) {
|
|
138
|
+
const relativePath = path.relative(startPath, filePath) || filePath;
|
|
139
|
+
|
|
140
|
+
console.log('');
|
|
141
|
+
console.log(`Updating: ${relativePath}`);
|
|
142
|
+
console.log('-'.repeat(50));
|
|
143
|
+
|
|
144
|
+
try {
|
|
145
|
+
// Build the ncu command arguments
|
|
146
|
+
// -a: upgrade all dependencies (including semver-incompatible)
|
|
147
|
+
// -u: update package.json file (not just display)
|
|
148
|
+
// --packageFile: specify the path to the package file
|
|
149
|
+
const args = ['-a', '-u', '--packageFile', filePath];
|
|
150
|
+
|
|
151
|
+
// For bower.json files, add the bower package manager flag
|
|
152
|
+
if (isBower) {
|
|
153
|
+
args.push('-m', 'bower');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Execute ncu with the arguments
|
|
157
|
+
// Using spawnSync to show output in real-time
|
|
158
|
+
const result = spawnSync('ncu', args, {
|
|
159
|
+
stdio: 'inherit', // Show output directly to user
|
|
160
|
+
shell: true // Required for Windows compatibility
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
if (result.status !== 0) {
|
|
164
|
+
console.log(`Warning: ncu exited with status ${result.status} for ${relativePath}`);
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return true;
|
|
169
|
+
} catch (err) {
|
|
170
|
+
console.error(`Error updating ${relativePath}: ${err.message}`);
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Pure Node.js implementation that works on any platform.
|
|
177
|
+
*
|
|
178
|
+
* This implementation:
|
|
179
|
+
* - Uses Node.js fs module to find package files (cross-platform)
|
|
180
|
+
* - Delegates to ncu command for the actual update logic
|
|
181
|
+
*
|
|
182
|
+
* We use ncu (npm-check-updates) because it's the best tool for this job:
|
|
183
|
+
* - Queries npm registry for latest versions
|
|
184
|
+
* - Understands semver version ranges
|
|
185
|
+
* - Handles workspace configurations
|
|
186
|
+
* - Supports many package managers (npm, yarn, pnpm, bower)
|
|
187
|
+
*
|
|
188
|
+
* @param {string[]} args - Command line arguments
|
|
189
|
+
* @param {string} [args[0]] - Optional path to search (defaults to current directory)
|
|
190
|
+
* @returns {Promise<void>}
|
|
191
|
+
*/
|
|
192
|
+
async function do_ncu_update_all_nodejs(args) {
|
|
193
|
+
// Check if ncu is installed
|
|
194
|
+
if (!isCommandAvailable('ncu')) {
|
|
195
|
+
console.error('Error: npm-check-updates (ncu) is required but not installed.');
|
|
196
|
+
console.error('');
|
|
197
|
+
console.error('To install ncu globally, run:');
|
|
198
|
+
console.error(' npm install -g npm-check-updates');
|
|
199
|
+
console.error('');
|
|
200
|
+
console.error('Or with yarn:');
|
|
201
|
+
console.error(' yarn global add npm-check-updates');
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Determine the starting directory
|
|
206
|
+
// If a path is provided as an argument, use it; otherwise use current working directory
|
|
207
|
+
const startPath = args[0] ? path.resolve(args[0]) : process.cwd();
|
|
208
|
+
|
|
209
|
+
// Verify the starting path exists and is a directory
|
|
210
|
+
try {
|
|
211
|
+
const stats = fs.statSync(startPath);
|
|
212
|
+
if (!stats.isDirectory()) {
|
|
213
|
+
console.error(`Error: '${startPath}' is not a directory.`);
|
|
214
|
+
process.exit(1);
|
|
215
|
+
}
|
|
216
|
+
} catch (err) {
|
|
217
|
+
console.error(`Error: Cannot access '${startPath}'.`);
|
|
218
|
+
console.error(err.message);
|
|
219
|
+
process.exit(1);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
console.log('npm-check-updates: Update All Dependencies');
|
|
223
|
+
console.log('==========================================');
|
|
224
|
+
console.log(`Scanning directory: ${startPath}`);
|
|
225
|
+
console.log(`Excluding: ${EXCLUDED_DIRECTORIES.join(', ')}`);
|
|
226
|
+
console.log('');
|
|
227
|
+
|
|
228
|
+
// Find all package.json files
|
|
229
|
+
console.log('Searching for package.json files...');
|
|
230
|
+
const packageJsonFiles = findFiles(startPath, 'package.json');
|
|
231
|
+
console.log(`Found ${packageJsonFiles.length} package.json file(s)`);
|
|
232
|
+
|
|
233
|
+
// Find all bower.json files
|
|
234
|
+
console.log('Searching for bower.json files...');
|
|
235
|
+
const bowerJsonFiles = findFiles(startPath, 'bower.json');
|
|
236
|
+
console.log(`Found ${bowerJsonFiles.length} bower.json file(s)`);
|
|
237
|
+
|
|
238
|
+
const totalFiles = packageJsonFiles.length + bowerJsonFiles.length;
|
|
239
|
+
|
|
240
|
+
if (totalFiles === 0) {
|
|
241
|
+
console.log('');
|
|
242
|
+
console.log('No package.json or bower.json files found in this directory.');
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Track results
|
|
247
|
+
let successCount = 0;
|
|
248
|
+
let failCount = 0;
|
|
249
|
+
|
|
250
|
+
// Process all package.json files
|
|
251
|
+
for (const filePath of packageJsonFiles) {
|
|
252
|
+
const success = updatePackageFile(filePath, false, startPath);
|
|
253
|
+
if (success) {
|
|
254
|
+
successCount++;
|
|
255
|
+
} else {
|
|
256
|
+
failCount++;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Process all bower.json files
|
|
261
|
+
for (const filePath of bowerJsonFiles) {
|
|
262
|
+
const success = updatePackageFile(filePath, true, startPath);
|
|
263
|
+
if (success) {
|
|
264
|
+
successCount++;
|
|
265
|
+
} else {
|
|
266
|
+
failCount++;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Print summary
|
|
271
|
+
console.log('');
|
|
272
|
+
console.log('==========================================');
|
|
273
|
+
console.log('Summary');
|
|
274
|
+
console.log('==========================================');
|
|
275
|
+
console.log(`Total files processed: ${totalFiles}`);
|
|
276
|
+
console.log(`Successful updates: ${successCount}`);
|
|
277
|
+
if (failCount > 0) {
|
|
278
|
+
console.log(`Failed updates: ${failCount}`);
|
|
279
|
+
}
|
|
280
|
+
console.log('');
|
|
281
|
+
console.log('Note: To install the updated dependencies, run:');
|
|
282
|
+
console.log(' npm install (for npm projects)');
|
|
283
|
+
console.log(' yarn install (for yarn projects)');
|
|
284
|
+
console.log(' bower install (for bower projects)');
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Update npm and bower dependencies on macOS.
|
|
289
|
+
*
|
|
290
|
+
* Uses the pure Node.js implementation since the logic is identical
|
|
291
|
+
* across platforms - we use Node.js to find files and delegate to ncu
|
|
292
|
+
* for the actual updates.
|
|
11
293
|
*
|
|
12
294
|
* @param {string[]} args - Command line arguments
|
|
13
|
-
* @param {string} [args.0] - Optional path to search (defaults to current directory)
|
|
14
295
|
* @returns {Promise<void>}
|
|
15
296
|
*/
|
|
16
|
-
async function
|
|
17
|
-
|
|
297
|
+
async function do_ncu_update_all_macos(args) {
|
|
298
|
+
return do_ncu_update_all_nodejs(args);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Update npm and bower dependencies on Ubuntu.
|
|
303
|
+
*
|
|
304
|
+
* Uses the pure Node.js implementation since the logic is identical
|
|
305
|
+
* across platforms.
|
|
306
|
+
*
|
|
307
|
+
* @param {string[]} args - Command line arguments
|
|
308
|
+
* @returns {Promise<void>}
|
|
309
|
+
*/
|
|
310
|
+
async function do_ncu_update_all_ubuntu(args) {
|
|
311
|
+
return do_ncu_update_all_nodejs(args);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Update npm and bower dependencies on Raspberry Pi OS.
|
|
316
|
+
*
|
|
317
|
+
* Uses the pure Node.js implementation since the logic is identical
|
|
318
|
+
* across platforms.
|
|
319
|
+
*
|
|
320
|
+
* @param {string[]} args - Command line arguments
|
|
321
|
+
* @returns {Promise<void>}
|
|
322
|
+
*/
|
|
323
|
+
async function do_ncu_update_all_raspbian(args) {
|
|
324
|
+
return do_ncu_update_all_nodejs(args);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Update npm and bower dependencies on Amazon Linux.
|
|
329
|
+
*
|
|
330
|
+
* Uses the pure Node.js implementation since the logic is identical
|
|
331
|
+
* across platforms.
|
|
332
|
+
*
|
|
333
|
+
* @param {string[]} args - Command line arguments
|
|
334
|
+
* @returns {Promise<void>}
|
|
335
|
+
*/
|
|
336
|
+
async function do_ncu_update_all_amazon_linux(args) {
|
|
337
|
+
return do_ncu_update_all_nodejs(args);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Update npm and bower dependencies on Windows Command Prompt.
|
|
342
|
+
*
|
|
343
|
+
* Uses the pure Node.js implementation since the logic is identical
|
|
344
|
+
* across platforms. The shell: true option in spawnSync handles
|
|
345
|
+
* Windows command execution properly.
|
|
346
|
+
*
|
|
347
|
+
* @param {string[]} args - Command line arguments
|
|
348
|
+
* @returns {Promise<void>}
|
|
349
|
+
*/
|
|
350
|
+
async function do_ncu_update_all_cmd(args) {
|
|
351
|
+
return do_ncu_update_all_nodejs(args);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Update npm and bower dependencies on Windows PowerShell.
|
|
356
|
+
*
|
|
357
|
+
* Uses the pure Node.js implementation since the logic is identical
|
|
358
|
+
* across platforms.
|
|
359
|
+
*
|
|
360
|
+
* @param {string[]} args - Command line arguments
|
|
361
|
+
* @returns {Promise<void>}
|
|
362
|
+
*/
|
|
363
|
+
async function do_ncu_update_all_powershell(args) {
|
|
364
|
+
return do_ncu_update_all_nodejs(args);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Update npm and bower dependencies on Git Bash.
|
|
369
|
+
*
|
|
370
|
+
* Uses the pure Node.js implementation since the logic is identical
|
|
371
|
+
* across platforms.
|
|
372
|
+
*
|
|
373
|
+
* @param {string[]} args - Command line arguments
|
|
374
|
+
* @returns {Promise<void>}
|
|
375
|
+
*/
|
|
376
|
+
async function do_ncu_update_all_gitbash(args) {
|
|
377
|
+
return do_ncu_update_all_nodejs(args);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Main entry point - detects environment and executes appropriate implementation.
|
|
382
|
+
*
|
|
383
|
+
* Recursively finds all package.json and bower.json files in the specified
|
|
384
|
+
* directory (or current directory) and updates their dependencies to the
|
|
385
|
+
* latest versions using npm-check-updates (ncu).
|
|
386
|
+
*
|
|
387
|
+
* Usage:
|
|
388
|
+
* ncu-update-all # Update all packages in current directory
|
|
389
|
+
* ncu-update-all ~/projects # Update all packages in specified directory
|
|
390
|
+
*
|
|
391
|
+
* Requirements:
|
|
392
|
+
* - npm-check-updates must be installed globally
|
|
393
|
+
* - Install with: npm install -g npm-check-updates
|
|
394
|
+
*
|
|
395
|
+
* What it does:
|
|
396
|
+
* 1. Finds all package.json files (excluding node_modules, etc.)
|
|
397
|
+
* 2. Runs 'ncu -a -u' on each package.json to update versions
|
|
398
|
+
* 3. Finds all bower.json files (for legacy projects)
|
|
399
|
+
* 4. Runs 'ncu -a -u -m bower' on each bower.json
|
|
400
|
+
*
|
|
401
|
+
* After running this script, you'll need to run npm/yarn/bower install
|
|
402
|
+
* in each project to actually install the updated dependencies.
|
|
403
|
+
*
|
|
404
|
+
* @param {string[]} args - Command line arguments
|
|
405
|
+
* @returns {Promise<void>}
|
|
406
|
+
*/
|
|
407
|
+
async function do_ncu_update_all(args) {
|
|
408
|
+
const platform = os.detect();
|
|
409
|
+
|
|
410
|
+
const handlers = {
|
|
411
|
+
'macos': do_ncu_update_all_macos,
|
|
412
|
+
'ubuntu': do_ncu_update_all_ubuntu,
|
|
413
|
+
'debian': do_ncu_update_all_ubuntu,
|
|
414
|
+
'raspbian': do_ncu_update_all_raspbian,
|
|
415
|
+
'amazon_linux': do_ncu_update_all_amazon_linux,
|
|
416
|
+
'rhel': do_ncu_update_all_amazon_linux,
|
|
417
|
+
'fedora': do_ncu_update_all_ubuntu,
|
|
418
|
+
'linux': do_ncu_update_all_ubuntu,
|
|
419
|
+
'wsl': do_ncu_update_all_ubuntu,
|
|
420
|
+
'cmd': do_ncu_update_all_cmd,
|
|
421
|
+
'windows': do_ncu_update_all_cmd,
|
|
422
|
+
'powershell': do_ncu_update_all_powershell,
|
|
423
|
+
'gitbash': do_ncu_update_all_gitbash
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
const handler = handlers[platform.type];
|
|
427
|
+
if (!handler) {
|
|
428
|
+
console.error(`Platform '${platform.type}' is not supported for this command.`);
|
|
429
|
+
console.error('');
|
|
430
|
+
console.error('Supported platforms:');
|
|
431
|
+
console.error(' - macOS');
|
|
432
|
+
console.error(' - Ubuntu, Debian, and other Linux distributions');
|
|
433
|
+
console.error(' - Raspberry Pi OS');
|
|
434
|
+
console.error(' - Amazon Linux, RHEL, Fedora');
|
|
435
|
+
console.error(' - Windows (CMD, PowerShell, Git Bash)');
|
|
436
|
+
process.exit(1);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
await handler(args);
|
|
18
440
|
}
|
|
19
441
|
|
|
20
|
-
module.exports = {
|
|
442
|
+
module.exports = {
|
|
443
|
+
main: do_ncu_update_all,
|
|
444
|
+
do_ncu_update_all,
|
|
445
|
+
do_ncu_update_all_nodejs,
|
|
446
|
+
do_ncu_update_all_macos,
|
|
447
|
+
do_ncu_update_all_ubuntu,
|
|
448
|
+
do_ncu_update_all_raspbian,
|
|
449
|
+
do_ncu_update_all_amazon_linux,
|
|
450
|
+
do_ncu_update_all_cmd,
|
|
451
|
+
do_ncu_update_all_powershell,
|
|
452
|
+
do_ncu_update_all_gitbash
|
|
453
|
+
};
|
|
21
454
|
|
|
22
455
|
if (require.main === module) {
|
|
23
|
-
|
|
456
|
+
do_ncu_update_all(process.argv.slice(2));
|
|
24
457
|
}
|