@fredlackey/devutils 0.0.18 → 0.0.19
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 +32 -150
- package/package.json +5 -82
- package/bin/dev.js +0 -16
- package/files/README.md +0 -0
- package/files/claude/.claude/commands/setup-context.md +0 -3
- package/files/monorepos/_archive/README.md +0 -36
- package/files/monorepos/_legacy/README.md +0 -36
- package/files/monorepos/ai-docs/README.md +0 -33
- package/files/monorepos/apps/README.md +0 -24
- package/files/monorepos/docs/README.md +0 -40
- package/files/monorepos/packages/README.md +0 -25
- package/files/monorepos/research/README.md +0 -29
- package/files/monorepos/scripts/README.md +0 -24
- package/src/cli.js +0 -72
- package/src/commands/README.md +0 -41
- package/src/commands/configure.js +0 -199
- package/src/commands/identity.js +0 -1630
- package/src/commands/ignore.js +0 -247
- package/src/commands/install.js +0 -526
- package/src/commands/setup.js +0 -246
- package/src/commands/status.js +0 -223
- package/src/commands/update.js +0 -142
- package/src/commands/version.js +0 -100
- package/src/completion.js +0 -284
- package/src/constants.js +0 -45
- package/src/ignore/claude-code.txt +0 -10
- package/src/ignore/docker.txt +0 -18
- package/src/ignore/linux.txt +0 -23
- package/src/ignore/macos.txt +0 -36
- package/src/ignore/node.txt +0 -55
- package/src/ignore/terraform.txt +0 -37
- package/src/ignore/vscode.txt +0 -18
- package/src/ignore/windows.txt +0 -35
- package/src/index.js +0 -0
- package/src/installs/README.md +0 -399
- package/src/installs/adobe-creative-cloud.js +0 -546
- package/src/installs/adobe-creative-cloud.md +0 -605
- package/src/installs/appcleaner.js +0 -321
- package/src/installs/appcleaner.md +0 -699
- package/src/installs/apt-transport-https.js +0 -390
- package/src/installs/apt-transport-https.md +0 -678
- package/src/installs/atomicparsley.js +0 -642
- package/src/installs/atomicparsley.md +0 -795
- package/src/installs/aws-cli.js +0 -797
- package/src/installs/aws-cli.md +0 -727
- package/src/installs/balena-etcher.js +0 -710
- package/src/installs/balena-etcher.md +0 -761
- package/src/installs/bambu-studio.js +0 -1143
- package/src/installs/bambu-studio.md +0 -780
- package/src/installs/bash-completion.js +0 -575
- package/src/installs/bash-completion.md +0 -833
- package/src/installs/bash.js +0 -417
- package/src/installs/bash.md +0 -993
- package/src/installs/beyond-compare.js +0 -603
- package/src/installs/beyond-compare.md +0 -813
- package/src/installs/brave-browser.js +0 -968
- package/src/installs/brave-browser.md +0 -650
- package/src/installs/build-essential.js +0 -529
- package/src/installs/build-essential.md +0 -977
- package/src/installs/ca-certificates.js +0 -618
- package/src/installs/ca-certificates.md +0 -937
- package/src/installs/caffeine.js +0 -508
- package/src/installs/caffeine.md +0 -839
- package/src/installs/camtasia.js +0 -596
- package/src/installs/camtasia.md +0 -762
- package/src/installs/chatgpt.js +0 -476
- package/src/installs/chatgpt.md +0 -814
- package/src/installs/chocolatey.js +0 -456
- package/src/installs/chocolatey.md +0 -661
- package/src/installs/chrome-canary.js +0 -419
- package/src/installs/chrome-canary.md +0 -641
- package/src/installs/chromium.js +0 -667
- package/src/installs/chromium.md +0 -838
- package/src/installs/claude-code.js +0 -576
- package/src/installs/claude-code.md +0 -1173
- package/src/installs/cloudflare-warp.js +0 -900
- package/src/installs/cloudflare-warp.md +0 -1047
- package/src/installs/comet-browser.js +0 -588
- package/src/installs/comet-browser.md +0 -731
- package/src/installs/curl.js +0 -379
- package/src/installs/curl.md +0 -714
- package/src/installs/cursor.js +0 -579
- package/src/installs/cursor.md +0 -970
- package/src/installs/dbeaver.js +0 -924
- package/src/installs/dbeaver.md +0 -939
- package/src/installs/dbschema.js +0 -692
- package/src/installs/dbschema.md +0 -925
- package/src/installs/dependencies.md +0 -453
- package/src/installs/development-tools.js +0 -600
- package/src/installs/development-tools.md +0 -977
- package/src/installs/docker.js +0 -1029
- package/src/installs/docker.md +0 -1109
- package/src/installs/drawio.js +0 -1019
- package/src/installs/drawio.md +0 -795
- package/src/installs/elmedia-player.js +0 -347
- package/src/installs/elmedia-player.md +0 -556
- package/src/installs/ffmpeg.js +0 -889
- package/src/installs/ffmpeg.md +0 -852
- package/src/installs/file.js +0 -464
- package/src/installs/file.md +0 -987
- package/src/installs/gemini-cli.js +0 -811
- package/src/installs/gemini-cli.md +0 -1153
- package/src/installs/git.js +0 -400
- package/src/installs/git.md +0 -907
- package/src/installs/gitego.js +0 -949
- package/src/installs/gitego.md +0 -1172
- package/src/installs/go.js +0 -931
- package/src/installs/go.md +0 -958
- package/src/installs/google-antigravity.js +0 -913
- package/src/installs/google-antigravity.md +0 -1075
- package/src/installs/google-chrome.js +0 -833
- package/src/installs/google-chrome.md +0 -862
- package/src/installs/gpg.js +0 -480
- package/src/installs/gpg.md +0 -1056
- package/src/installs/homebrew.js +0 -1028
- package/src/installs/homebrew.md +0 -988
- package/src/installs/imageoptim.js +0 -968
- package/src/installs/imageoptim.md +0 -1119
- package/src/installs/installers.json +0 -4032
- package/src/installs/installers.json.tmp +0 -3953
- package/src/installs/jq.js +0 -400
- package/src/installs/jq.md +0 -809
- package/src/installs/keyboard-maestro.js +0 -719
- package/src/installs/keyboard-maestro.md +0 -825
- package/src/installs/kiro.js +0 -864
- package/src/installs/kiro.md +0 -1015
- package/src/installs/latex.js +0 -789
- package/src/installs/latex.md +0 -1095
- package/src/installs/lftp.js +0 -356
- package/src/installs/lftp.md +0 -907
- package/src/installs/lsb-release.js +0 -346
- package/src/installs/lsb-release.md +0 -814
- package/src/installs/messenger.js +0 -847
- package/src/installs/messenger.md +0 -900
- package/src/installs/microsoft-office.js +0 -568
- package/src/installs/microsoft-office.md +0 -760
- package/src/installs/microsoft-teams.js +0 -801
- package/src/installs/microsoft-teams.md +0 -886
- package/src/installs/moom.js +0 -326
- package/src/installs/moom.md +0 -570
- package/src/installs/node.js +0 -904
- package/src/installs/node.md +0 -1153
- package/src/installs/nordpass.js +0 -716
- package/src/installs/nordpass.md +0 -921
- package/src/installs/nordvpn.js +0 -892
- package/src/installs/nordvpn.md +0 -1052
- package/src/installs/nvm.js +0 -995
- package/src/installs/nvm.md +0 -1057
- package/src/installs/ohmyzsh.js +0 -529
- package/src/installs/ohmyzsh.md +0 -1094
- package/src/installs/openssh.js +0 -804
- package/src/installs/openssh.md +0 -1056
- package/src/installs/pandoc.js +0 -662
- package/src/installs/pandoc.md +0 -1036
- package/src/installs/parallels-desktop.js +0 -431
- package/src/installs/parallels-desktop.md +0 -446
- package/src/installs/pinentry.js +0 -510
- package/src/installs/pinentry.md +0 -1142
- package/src/installs/pngyu.js +0 -869
- package/src/installs/pngyu.md +0 -896
- package/src/installs/postman.js +0 -799
- package/src/installs/postman.md +0 -940
- package/src/installs/procps.js +0 -425
- package/src/installs/procps.md +0 -851
- package/src/installs/safari-tech-preview.js +0 -374
- package/src/installs/safari-tech-preview.md +0 -533
- package/src/installs/sfnt2woff.js +0 -658
- package/src/installs/sfnt2woff.md +0 -795
- package/src/installs/shellcheck.js +0 -481
- package/src/installs/shellcheck.md +0 -1005
- package/src/installs/slack.js +0 -741
- package/src/installs/slack.md +0 -865
- package/src/installs/snagit.js +0 -585
- package/src/installs/snagit.md +0 -844
- package/src/installs/software-properties-common.js +0 -372
- package/src/installs/software-properties-common.md +0 -805
- package/src/installs/spotify.js +0 -877
- package/src/installs/spotify.md +0 -901
- package/src/installs/studio-3t.js +0 -823
- package/src/installs/studio-3t.md +0 -918
- package/src/installs/sublime-text.js +0 -804
- package/src/installs/sublime-text.md +0 -914
- package/src/installs/superwhisper.js +0 -706
- package/src/installs/superwhisper.md +0 -630
- package/src/installs/tailscale.js +0 -745
- package/src/installs/tailscale.md +0 -1100
- package/src/installs/tar.js +0 -389
- package/src/installs/tar.md +0 -946
- package/src/installs/termius.js +0 -798
- package/src/installs/termius.md +0 -844
- package/src/installs/terraform.js +0 -779
- package/src/installs/terraform.md +0 -899
- package/src/installs/tfenv.js +0 -778
- package/src/installs/tfenv.md +0 -1091
- package/src/installs/tidal.js +0 -771
- package/src/installs/tidal.md +0 -864
- package/src/installs/tmux.js +0 -346
- package/src/installs/tmux.md +0 -1030
- package/src/installs/tree.js +0 -411
- package/src/installs/tree.md +0 -833
- package/src/installs/unzip.js +0 -460
- package/src/installs/unzip.md +0 -879
- package/src/installs/vim.js +0 -421
- package/src/installs/vim.md +0 -1040
- package/src/installs/vlc.js +0 -821
- package/src/installs/vlc.md +0 -927
- package/src/installs/vscode.js +0 -843
- package/src/installs/vscode.md +0 -1002
- package/src/installs/wget.js +0 -420
- package/src/installs/wget.md +0 -791
- package/src/installs/whatsapp.js +0 -729
- package/src/installs/whatsapp.md +0 -854
- package/src/installs/winpty.js +0 -352
- package/src/installs/winpty.md +0 -620
- package/src/installs/woff2.js +0 -553
- package/src/installs/woff2.md +0 -977
- package/src/installs/wsl.js +0 -572
- package/src/installs/wsl.md +0 -699
- package/src/installs/xcode-clt.js +0 -520
- package/src/installs/xcode-clt.md +0 -351
- package/src/installs/xcode.js +0 -560
- package/src/installs/xcode.md +0 -573
- package/src/installs/yarn.js +0 -824
- package/src/installs/yarn.md +0 -1074
- package/src/installs/yq.js +0 -654
- package/src/installs/yq.md +0 -944
- package/src/installs/yt-dlp.js +0 -701
- package/src/installs/yt-dlp.md +0 -946
- package/src/installs/yum-utils.js +0 -297
- package/src/installs/yum-utils.md +0 -648
- package/src/installs/zoom.js +0 -759
- package/src/installs/zoom.md +0 -884
- package/src/installs/zsh.js +0 -455
- package/src/installs/zsh.md +0 -1008
- package/src/scripts/README.md +0 -617
- package/src/scripts/STATUS.md +0 -208
- package/src/scripts/afk.js +0 -411
- package/src/scripts/backup-all.js +0 -746
- package/src/scripts/backup-source.js +0 -727
- package/src/scripts/brewd.js +0 -389
- package/src/scripts/brewi.js +0 -520
- package/src/scripts/brewr.js +0 -527
- package/src/scripts/brews.js +0 -477
- package/src/scripts/brewu.js +0 -504
- package/src/scripts/c.js +0 -201
- package/src/scripts/ccurl.js +0 -341
- package/src/scripts/certbot-crontab-init.js +0 -504
- package/src/scripts/certbot-init.js +0 -657
- package/src/scripts/ch.js +0 -355
- package/src/scripts/claude-danger.js +0 -268
- package/src/scripts/clean-dev.js +0 -435
- package/src/scripts/clear-dns-cache.js +0 -541
- package/src/scripts/clone.js +0 -435
- package/src/scripts/code-all.js +0 -437
- package/src/scripts/count-files.js +0 -211
- package/src/scripts/count-folders.js +0 -211
- package/src/scripts/count.js +0 -264
- package/src/scripts/d.js +0 -219
- package/src/scripts/datauri.js +0 -389
- package/src/scripts/delete-files.js +0 -380
- package/src/scripts/docker-clean.js +0 -426
- package/src/scripts/dp.js +0 -442
- package/src/scripts/e.js +0 -390
- package/src/scripts/empty-trash.js +0 -513
- package/src/scripts/evm.js +0 -444
- package/src/scripts/fetch-github-repos.js +0 -456
- package/src/scripts/get-channel.js +0 -345
- package/src/scripts/get-course.js +0 -399
- package/src/scripts/get-dependencies.js +0 -306
- package/src/scripts/get-folder.js +0 -799
- package/src/scripts/get-tunes.js +0 -426
- package/src/scripts/get-video.js +0 -367
- package/src/scripts/git-backup.js +0 -577
- package/src/scripts/git-clone.js +0 -493
- package/src/scripts/git-pup.js +0 -319
- package/src/scripts/git-push.js +0 -396
- package/src/scripts/h.js +0 -622
- package/src/scripts/hide-desktop-icons.js +0 -499
- package/src/scripts/hide-hidden-files.js +0 -538
- package/src/scripts/install-dependencies-from.js +0 -456
- package/src/scripts/ips.js +0 -663
- package/src/scripts/iso.js +0 -370
- package/src/scripts/killni.js +0 -577
- package/src/scripts/ll.js +0 -467
- package/src/scripts/local-ip.js +0 -325
- package/src/scripts/m.js +0 -524
- package/src/scripts/map.js +0 -309
- package/src/scripts/mkd.js +0 -351
- package/src/scripts/ncu-update-all.js +0 -457
- package/src/scripts/nginx-init.js +0 -718
- package/src/scripts/npmi.js +0 -382
- package/src/scripts/o.js +0 -511
- package/src/scripts/org-by-date.js +0 -338
- package/src/scripts/p.js +0 -224
- package/src/scripts/packages.js +0 -330
- package/src/scripts/path.js +0 -225
- package/src/scripts/ports.js +0 -597
- package/src/scripts/q.js +0 -305
- package/src/scripts/refresh-files.js +0 -394
- package/src/scripts/remove-smaller-files.js +0 -516
- package/src/scripts/rename-files-with-date.js +0 -533
- package/src/scripts/resize-image.js +0 -539
- package/src/scripts/rm-safe.js +0 -669
- package/src/scripts/s.js +0 -540
- package/src/scripts/set-git-public.js +0 -365
- package/src/scripts/show-desktop-icons.js +0 -475
- package/src/scripts/show-hidden-files.js +0 -472
- package/src/scripts/tpa.js +0 -280
- package/src/scripts/tpo.js +0 -280
- package/src/scripts/u.js +0 -505
- package/src/scripts/vpush.js +0 -437
- package/src/scripts/y.js +0 -283
- package/src/utils/README.md +0 -95
- package/src/utils/common/apps.js +0 -143
- package/src/utils/common/display.js +0 -157
- package/src/utils/common/network.js +0 -185
- package/src/utils/common/os.js +0 -294
- package/src/utils/common/package-manager.js +0 -301
- package/src/utils/common/privileges.js +0 -138
- package/src/utils/common/shell.js +0 -261
- package/src/utils/macos/apps.js +0 -228
- package/src/utils/macos/brew.js +0 -315
- package/src/utils/ubuntu/apt.js +0 -307
- package/src/utils/ubuntu/desktop.js +0 -292
- package/src/utils/ubuntu/snap.js +0 -344
- package/src/utils/ubuntu/systemd.js +0 -286
- package/src/utils/windows/choco.js +0 -465
- package/src/utils/windows/env.js +0 -246
- package/src/utils/windows/registry.js +0 -269
- package/src/utils/windows/shell.js +0 -240
- package/src/utils/windows/winget.js +0 -489
package/src/scripts/brewu.js
DELETED
|
@@ -1,504 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* brewu - Update, upgrade, and cleanup Homebrew
|
|
5
|
-
*
|
|
6
|
-
* Migrated from legacy dotfiles alias.
|
|
7
|
-
* Original: alias brewu="brew update --quiet && brew upgrade && brew cleanup"
|
|
8
|
-
*
|
|
9
|
-
* This script performs a full Homebrew maintenance cycle:
|
|
10
|
-
* 1. brew update --quiet - Fetch latest formulae from Homebrew's git repository
|
|
11
|
-
* 2. brew upgrade - Upgrade all outdated packages to their latest versions
|
|
12
|
-
* 3. brew cleanup - Remove old versions of installed packages to free disk space
|
|
13
|
-
*
|
|
14
|
-
* This is a common maintenance routine that keeps your Homebrew installation
|
|
15
|
-
* up-to-date and prevents disk space bloat from accumulated old package versions.
|
|
16
|
-
*
|
|
17
|
-
* @module scripts/brewu
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
const os = require('../utils/common/os');
|
|
21
|
-
const shell = require('../utils/common/shell');
|
|
22
|
-
const { spawnSync } = require('child_process');
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Check if Homebrew is installed and available in PATH.
|
|
26
|
-
*
|
|
27
|
-
* Uses the shell utility to search for the `brew` command in PATH.
|
|
28
|
-
* This works on both macOS and Linux where Linuxbrew may be installed.
|
|
29
|
-
*
|
|
30
|
-
* @returns {boolean} True if brew command is available, false otherwise
|
|
31
|
-
*/
|
|
32
|
-
function isBrewInstalled() {
|
|
33
|
-
return shell.commandExists('brew');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Run a brew subcommand with real-time output streaming.
|
|
38
|
-
*
|
|
39
|
-
* This helper function executes a single brew subcommand (like update, upgrade,
|
|
40
|
-
* or cleanup) and streams the output directly to the console so users can see
|
|
41
|
-
* progress in real-time. Returns the exit code so the caller can decide whether
|
|
42
|
-
* to continue with the next step.
|
|
43
|
-
*
|
|
44
|
-
* @param {string} subcommand - The brew subcommand to run (e.g., 'update', 'upgrade')
|
|
45
|
-
* @param {string[]} [subcommandArgs] - Additional arguments for the subcommand
|
|
46
|
-
* @returns {number} The exit code from the brew command (0 = success)
|
|
47
|
-
*/
|
|
48
|
-
function runBrewCommand(subcommand, subcommandArgs = []) {
|
|
49
|
-
const result = spawnSync('brew', [subcommand, ...subcommandArgs], {
|
|
50
|
-
stdio: 'inherit', // Stream output directly to console
|
|
51
|
-
shell: false // Run brew directly without shell interpretation
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
return result.status || 0;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Pure Node.js implementation - not applicable for this command.
|
|
59
|
-
*
|
|
60
|
-
* This function cannot be implemented in pure Node.js because the `brew`
|
|
61
|
-
* commands require Homebrew to be installed. The update/upgrade/cleanup
|
|
62
|
-
* operations interact with Homebrew's internal package management system
|
|
63
|
-
* which cannot be replicated without Homebrew itself.
|
|
64
|
-
*
|
|
65
|
-
* Platform-specific functions should NOT call this function. They should
|
|
66
|
-
* either run the brew commands directly (on platforms with Homebrew support)
|
|
67
|
-
* or display guidance about equivalent commands for their platform.
|
|
68
|
-
*
|
|
69
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
70
|
-
* @returns {Promise<void>}
|
|
71
|
-
* @throws {Error} Always throws - this function should not be called directly
|
|
72
|
-
*/
|
|
73
|
-
async function do_brewu_nodejs(args) {
|
|
74
|
-
throw new Error(
|
|
75
|
-
'do_brewu_nodejs cannot be implemented in pure Node.js.\n' +
|
|
76
|
-
'The Homebrew update/upgrade/cleanup commands require Homebrew to be installed.\n' +
|
|
77
|
-
'Use the platform-specific functions instead.'
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Run brew update, upgrade, and cleanup on macOS.
|
|
83
|
-
*
|
|
84
|
-
* macOS is the primary platform for Homebrew. This function checks if
|
|
85
|
-
* Homebrew is installed and then runs the three-step maintenance cycle:
|
|
86
|
-
* update (fetch latest formulae), upgrade (update packages), and cleanup
|
|
87
|
-
* (remove old versions).
|
|
88
|
-
*
|
|
89
|
-
* The commands are run sequentially, stopping if any step fails. This
|
|
90
|
-
* matches the behavior of the original alias which used && to chain commands.
|
|
91
|
-
*
|
|
92
|
-
* @param {string[]} args - Command line arguments (currently unused)
|
|
93
|
-
* @returns {Promise<void>}
|
|
94
|
-
*/
|
|
95
|
-
async function do_brewu_macos(args) {
|
|
96
|
-
// Check if Homebrew is installed
|
|
97
|
-
if (!isBrewInstalled()) {
|
|
98
|
-
console.error('Error: Homebrew is not installed.');
|
|
99
|
-
console.error('');
|
|
100
|
-
console.error('To install Homebrew, run:');
|
|
101
|
-
console.error(' /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"');
|
|
102
|
-
console.error('');
|
|
103
|
-
console.error('Or use the devutils installer:');
|
|
104
|
-
console.error(' dev install homebrew');
|
|
105
|
-
process.exit(1);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Step 1: Update Homebrew's formulae (fetch latest package info)
|
|
109
|
-
// Using --quiet to reduce output noise during the fetch
|
|
110
|
-
console.log('==> Updating Homebrew...');
|
|
111
|
-
const updateCode = runBrewCommand('update', ['--quiet']);
|
|
112
|
-
if (updateCode !== 0) {
|
|
113
|
-
console.error('Error: brew update failed with exit code', updateCode);
|
|
114
|
-
process.exit(updateCode);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Step 2: Upgrade all outdated packages
|
|
118
|
-
console.log('');
|
|
119
|
-
console.log('==> Upgrading packages...');
|
|
120
|
-
const upgradeCode = runBrewCommand('upgrade');
|
|
121
|
-
if (upgradeCode !== 0) {
|
|
122
|
-
console.error('Error: brew upgrade failed with exit code', upgradeCode);
|
|
123
|
-
process.exit(upgradeCode);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// Step 3: Cleanup old versions to free disk space
|
|
127
|
-
console.log('');
|
|
128
|
-
console.log('==> Cleaning up...');
|
|
129
|
-
const cleanupCode = runBrewCommand('cleanup');
|
|
130
|
-
if (cleanupCode !== 0) {
|
|
131
|
-
console.error('Error: brew cleanup failed with exit code', cleanupCode);
|
|
132
|
-
process.exit(cleanupCode);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
console.log('');
|
|
136
|
-
console.log('Homebrew maintenance complete!');
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Run brew update, upgrade, and cleanup on Ubuntu.
|
|
141
|
-
*
|
|
142
|
-
* Homebrew (Linuxbrew) can be installed on Ubuntu and other Linux distributions.
|
|
143
|
-
* This function checks if Homebrew is installed and runs the maintenance cycle.
|
|
144
|
-
* If Homebrew is not installed, it provides guidance for both installing
|
|
145
|
-
* Homebrew and using APT's built-in update commands.
|
|
146
|
-
*
|
|
147
|
-
* @param {string[]} args - Command line arguments (currently unused)
|
|
148
|
-
* @returns {Promise<void>}
|
|
149
|
-
*/
|
|
150
|
-
async function do_brewu_ubuntu(args) {
|
|
151
|
-
// Check if Homebrew is installed (Linuxbrew)
|
|
152
|
-
if (!isBrewInstalled()) {
|
|
153
|
-
console.error('Error: Homebrew (Linuxbrew) is not installed.');
|
|
154
|
-
console.error('');
|
|
155
|
-
console.error('On Ubuntu, you can either:');
|
|
156
|
-
console.error('');
|
|
157
|
-
console.error('1. Install Homebrew for Linux:');
|
|
158
|
-
console.error(' /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"');
|
|
159
|
-
console.error('');
|
|
160
|
-
console.error('2. Use APT update commands instead:');
|
|
161
|
-
console.error(' sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y');
|
|
162
|
-
console.error('');
|
|
163
|
-
console.error(' Or use the devutils command:');
|
|
164
|
-
console.error(' u # Updates system packages');
|
|
165
|
-
process.exit(1);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// Run the same update/upgrade/cleanup cycle as macOS
|
|
169
|
-
console.log('==> Updating Homebrew...');
|
|
170
|
-
const updateCode = runBrewCommand('update', ['--quiet']);
|
|
171
|
-
if (updateCode !== 0) {
|
|
172
|
-
console.error('Error: brew update failed with exit code', updateCode);
|
|
173
|
-
process.exit(updateCode);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
console.log('');
|
|
177
|
-
console.log('==> Upgrading packages...');
|
|
178
|
-
const upgradeCode = runBrewCommand('upgrade');
|
|
179
|
-
if (upgradeCode !== 0) {
|
|
180
|
-
console.error('Error: brew upgrade failed with exit code', upgradeCode);
|
|
181
|
-
process.exit(upgradeCode);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
console.log('');
|
|
185
|
-
console.log('==> Cleaning up...');
|
|
186
|
-
const cleanupCode = runBrewCommand('cleanup');
|
|
187
|
-
if (cleanupCode !== 0) {
|
|
188
|
-
console.error('Error: brew cleanup failed with exit code', cleanupCode);
|
|
189
|
-
process.exit(cleanupCode);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
console.log('');
|
|
193
|
-
console.log('Homebrew maintenance complete!');
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Run brew update, upgrade, and cleanup on Raspberry Pi OS.
|
|
198
|
-
*
|
|
199
|
-
* Homebrew can be installed on Raspberry Pi OS (64-bit ARM).
|
|
200
|
-
* This function checks if Homebrew is installed and runs the maintenance cycle.
|
|
201
|
-
* If not available, it provides guidance for APT-based updates.
|
|
202
|
-
*
|
|
203
|
-
* @param {string[]} args - Command line arguments (currently unused)
|
|
204
|
-
* @returns {Promise<void>}
|
|
205
|
-
*/
|
|
206
|
-
async function do_brewu_raspbian(args) {
|
|
207
|
-
// Check if Homebrew is installed
|
|
208
|
-
if (!isBrewInstalled()) {
|
|
209
|
-
console.error('Error: Homebrew is not installed.');
|
|
210
|
-
console.error('');
|
|
211
|
-
console.error('On Raspberry Pi OS, you can either:');
|
|
212
|
-
console.error('');
|
|
213
|
-
console.error('1. Install Homebrew (64-bit Raspberry Pi OS only):');
|
|
214
|
-
console.error(' /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"');
|
|
215
|
-
console.error('');
|
|
216
|
-
console.error('2. Use APT update commands instead:');
|
|
217
|
-
console.error(' sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y');
|
|
218
|
-
console.error('');
|
|
219
|
-
console.error(' Or use the devutils command:');
|
|
220
|
-
console.error(' u # Updates system packages');
|
|
221
|
-
process.exit(1);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// Run the update/upgrade/cleanup cycle
|
|
225
|
-
console.log('==> Updating Homebrew...');
|
|
226
|
-
const updateCode = runBrewCommand('update', ['--quiet']);
|
|
227
|
-
if (updateCode !== 0) {
|
|
228
|
-
console.error('Error: brew update failed with exit code', updateCode);
|
|
229
|
-
process.exit(updateCode);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
console.log('');
|
|
233
|
-
console.log('==> Upgrading packages...');
|
|
234
|
-
const upgradeCode = runBrewCommand('upgrade');
|
|
235
|
-
if (upgradeCode !== 0) {
|
|
236
|
-
console.error('Error: brew upgrade failed with exit code', upgradeCode);
|
|
237
|
-
process.exit(upgradeCode);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
console.log('');
|
|
241
|
-
console.log('==> Cleaning up...');
|
|
242
|
-
const cleanupCode = runBrewCommand('cleanup');
|
|
243
|
-
if (cleanupCode !== 0) {
|
|
244
|
-
console.error('Error: brew cleanup failed with exit code', cleanupCode);
|
|
245
|
-
process.exit(cleanupCode);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
console.log('');
|
|
249
|
-
console.log('Homebrew maintenance complete!');
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Run brew update, upgrade, and cleanup on Amazon Linux.
|
|
254
|
-
*
|
|
255
|
-
* Homebrew can be installed on Amazon Linux, though it's less common.
|
|
256
|
-
* This function checks if Homebrew is installed and provides guidance
|
|
257
|
-
* for DNF/YUM-based package manager updates if not available.
|
|
258
|
-
*
|
|
259
|
-
* @param {string[]} args - Command line arguments (currently unused)
|
|
260
|
-
* @returns {Promise<void>}
|
|
261
|
-
*/
|
|
262
|
-
async function do_brewu_amazon_linux(args) {
|
|
263
|
-
// Check if Homebrew is installed
|
|
264
|
-
if (!isBrewInstalled()) {
|
|
265
|
-
console.error('Error: Homebrew is not installed.');
|
|
266
|
-
console.error('');
|
|
267
|
-
console.error('On Amazon Linux, Homebrew is not the standard package manager.');
|
|
268
|
-
console.error('');
|
|
269
|
-
console.error('Use DNF/YUM update commands instead:');
|
|
270
|
-
console.error(' sudo dnf upgrade -y && sudo dnf autoremove -y');
|
|
271
|
-
console.error(' # or for older Amazon Linux:');
|
|
272
|
-
console.error(' sudo yum update -y && sudo yum autoremove -y');
|
|
273
|
-
console.error('');
|
|
274
|
-
console.error('Or use the devutils command:');
|
|
275
|
-
console.error(' u # Updates system packages');
|
|
276
|
-
console.error('');
|
|
277
|
-
console.error('To install Homebrew anyway:');
|
|
278
|
-
console.error(' /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"');
|
|
279
|
-
process.exit(1);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
// Run the update/upgrade/cleanup cycle
|
|
283
|
-
console.log('==> Updating Homebrew...');
|
|
284
|
-
const updateCode = runBrewCommand('update', ['--quiet']);
|
|
285
|
-
if (updateCode !== 0) {
|
|
286
|
-
console.error('Error: brew update failed with exit code', updateCode);
|
|
287
|
-
process.exit(updateCode);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
console.log('');
|
|
291
|
-
console.log('==> Upgrading packages...');
|
|
292
|
-
const upgradeCode = runBrewCommand('upgrade');
|
|
293
|
-
if (upgradeCode !== 0) {
|
|
294
|
-
console.error('Error: brew upgrade failed with exit code', upgradeCode);
|
|
295
|
-
process.exit(upgradeCode);
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
console.log('');
|
|
299
|
-
console.log('==> Cleaning up...');
|
|
300
|
-
const cleanupCode = runBrewCommand('cleanup');
|
|
301
|
-
if (cleanupCode !== 0) {
|
|
302
|
-
console.error('Error: brew cleanup failed with exit code', cleanupCode);
|
|
303
|
-
process.exit(cleanupCode);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
console.log('');
|
|
307
|
-
console.log('Homebrew maintenance complete!');
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* Handle brewu command in Windows Command Prompt.
|
|
312
|
-
*
|
|
313
|
-
* Homebrew is not available on Windows. This function informs the user
|
|
314
|
-
* and provides guidance for equivalent package manager update commands using
|
|
315
|
-
* Chocolatey or winget.
|
|
316
|
-
*
|
|
317
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
318
|
-
* @returns {Promise<void>}
|
|
319
|
-
*/
|
|
320
|
-
async function do_brewu_cmd(args) {
|
|
321
|
-
console.error('Error: Homebrew is not available on Windows.');
|
|
322
|
-
console.error('');
|
|
323
|
-
console.error('Windows uses different package managers. Try these alternatives:');
|
|
324
|
-
console.error('');
|
|
325
|
-
console.error('For Chocolatey (if installed):');
|
|
326
|
-
console.error(' choco upgrade all -y # Upgrade all packages');
|
|
327
|
-
console.error('');
|
|
328
|
-
console.error('For winget (Windows Package Manager):');
|
|
329
|
-
console.error(' winget upgrade --all # Upgrade all packages');
|
|
330
|
-
console.error('');
|
|
331
|
-
console.error('Or use the devutils command:');
|
|
332
|
-
console.error(' u # Updates system packages');
|
|
333
|
-
process.exit(1);
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
/**
|
|
337
|
-
* Handle brewu command in Windows PowerShell.
|
|
338
|
-
*
|
|
339
|
-
* Homebrew is not available on Windows. This function informs the user
|
|
340
|
-
* and provides guidance for equivalent package manager update commands.
|
|
341
|
-
*
|
|
342
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
343
|
-
* @returns {Promise<void>}
|
|
344
|
-
*/
|
|
345
|
-
async function do_brewu_powershell(args) {
|
|
346
|
-
console.error('Error: Homebrew is not available on Windows.');
|
|
347
|
-
console.error('');
|
|
348
|
-
console.error('Windows uses different package managers. Try these alternatives:');
|
|
349
|
-
console.error('');
|
|
350
|
-
console.error('For Chocolatey (if installed):');
|
|
351
|
-
console.error(' choco upgrade all -y # Upgrade all packages');
|
|
352
|
-
console.error('');
|
|
353
|
-
console.error('For winget (Windows Package Manager):');
|
|
354
|
-
console.error(' winget upgrade --all # Upgrade all packages');
|
|
355
|
-
console.error('');
|
|
356
|
-
console.error('For Windows Update via PowerShell:');
|
|
357
|
-
console.error(' Install-Module PSWindowsUpdate -Force');
|
|
358
|
-
console.error(' Get-WindowsUpdate');
|
|
359
|
-
console.error(' Install-WindowsUpdate -AcceptAll');
|
|
360
|
-
console.error('');
|
|
361
|
-
console.error('Or use the devutils command:');
|
|
362
|
-
console.error(' u # Updates system packages');
|
|
363
|
-
process.exit(1);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
/**
|
|
367
|
-
* Run brew update, upgrade, and cleanup from Git Bash on Windows.
|
|
368
|
-
*
|
|
369
|
-
* Git Bash runs on Windows where Homebrew is not natively available.
|
|
370
|
-
* However, if the user has installed Homebrew in WSL or another Linux
|
|
371
|
-
* environment, it may be accessible. This function checks for brew
|
|
372
|
-
* availability and provides appropriate guidance.
|
|
373
|
-
*
|
|
374
|
-
* @param {string[]} args - Command line arguments (currently unused)
|
|
375
|
-
* @returns {Promise<void>}
|
|
376
|
-
*/
|
|
377
|
-
async function do_brewu_gitbash(args) {
|
|
378
|
-
// Check if Homebrew is available (unlikely in Git Bash, but possible via WSL interop)
|
|
379
|
-
if (isBrewInstalled()) {
|
|
380
|
-
// Brew is somehow available, run it
|
|
381
|
-
console.log('==> Updating Homebrew...');
|
|
382
|
-
const updateCode = runBrewCommand('update', ['--quiet']);
|
|
383
|
-
if (updateCode !== 0) {
|
|
384
|
-
console.error('Error: brew update failed with exit code', updateCode);
|
|
385
|
-
process.exit(updateCode);
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
console.log('');
|
|
389
|
-
console.log('==> Upgrading packages...');
|
|
390
|
-
const upgradeCode = runBrewCommand('upgrade');
|
|
391
|
-
if (upgradeCode !== 0) {
|
|
392
|
-
console.error('Error: brew upgrade failed with exit code', upgradeCode);
|
|
393
|
-
process.exit(upgradeCode);
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
console.log('');
|
|
397
|
-
console.log('==> Cleaning up...');
|
|
398
|
-
const cleanupCode = runBrewCommand('cleanup');
|
|
399
|
-
if (cleanupCode !== 0) {
|
|
400
|
-
console.error('Error: brew cleanup failed with exit code', cleanupCode);
|
|
401
|
-
process.exit(cleanupCode);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
console.log('');
|
|
405
|
-
console.log('Homebrew maintenance complete!');
|
|
406
|
-
return;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
// Homebrew not available, provide guidance
|
|
410
|
-
console.error('Error: Homebrew is not available in Git Bash on Windows.');
|
|
411
|
-
console.error('');
|
|
412
|
-
console.error('Git Bash runs on Windows which uses different package managers.');
|
|
413
|
-
console.error('');
|
|
414
|
-
console.error('Options:');
|
|
415
|
-
console.error('');
|
|
416
|
-
console.error('1. Use Chocolatey (from PowerShell or CMD):');
|
|
417
|
-
console.error(' choco upgrade all -y # Upgrade all packages');
|
|
418
|
-
console.error('');
|
|
419
|
-
console.error('2. Use winget (Windows Package Manager):');
|
|
420
|
-
console.error(' winget upgrade --all # Upgrade all packages');
|
|
421
|
-
console.error('');
|
|
422
|
-
console.error('3. If you have WSL installed, you can run brew commands there:');
|
|
423
|
-
console.error(' wsl brew update && wsl brew upgrade && wsl brew cleanup');
|
|
424
|
-
console.error('');
|
|
425
|
-
console.error('Or use the devutils command:');
|
|
426
|
-
console.error(' u # Updates system packages');
|
|
427
|
-
process.exit(1);
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
/**
|
|
431
|
-
* Main entry point - detects environment and executes appropriate implementation.
|
|
432
|
-
*
|
|
433
|
-
* Runs a full Homebrew maintenance cycle: update, upgrade, and cleanup.
|
|
434
|
-
* This is equivalent to running:
|
|
435
|
-
* brew update --quiet && brew upgrade && brew cleanup
|
|
436
|
-
*
|
|
437
|
-
* The update step fetches the latest package information from Homebrew's
|
|
438
|
-
* repository. The upgrade step updates all outdated packages to their
|
|
439
|
-
* latest versions. The cleanup step removes old versions of packages
|
|
440
|
-
* to free up disk space.
|
|
441
|
-
*
|
|
442
|
-
* On platforms where Homebrew is not available, provides guidance for
|
|
443
|
-
* equivalent update commands using the native package manager.
|
|
444
|
-
*
|
|
445
|
-
* @param {string[]} args - Command line arguments (currently unused)
|
|
446
|
-
* @returns {Promise<void>}
|
|
447
|
-
*/
|
|
448
|
-
async function do_brewu(args) {
|
|
449
|
-
const platform = os.detect();
|
|
450
|
-
|
|
451
|
-
const handlers = {
|
|
452
|
-
'macos': do_brewu_macos,
|
|
453
|
-
'ubuntu': do_brewu_ubuntu,
|
|
454
|
-
'raspbian': do_brewu_raspbian,
|
|
455
|
-
'amazon_linux': do_brewu_amazon_linux,
|
|
456
|
-
'cmd': do_brewu_cmd,
|
|
457
|
-
'powershell': do_brewu_powershell,
|
|
458
|
-
'gitbash': do_brewu_gitbash
|
|
459
|
-
};
|
|
460
|
-
|
|
461
|
-
const handler = handlers[platform.type];
|
|
462
|
-
if (!handler) {
|
|
463
|
-
// Handle other Linux distros that might have Homebrew
|
|
464
|
-
if (platform.type === 'debian' || platform.type === 'fedora' ||
|
|
465
|
-
platform.type === 'rhel' || platform.type === 'linux') {
|
|
466
|
-
// Try ubuntu handler as fallback for generic Linux
|
|
467
|
-
await do_brewu_ubuntu(args);
|
|
468
|
-
return;
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
// Handle Windows platform type
|
|
472
|
-
if (platform.type === 'windows') {
|
|
473
|
-
await do_brewu_cmd(args);
|
|
474
|
-
return;
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
console.error(`Platform '${platform.type}' is not supported for this command.`);
|
|
478
|
-
console.error('');
|
|
479
|
-
console.error('The brewu command is a shortcut for Homebrew maintenance:');
|
|
480
|
-
console.error(' brew update --quiet && brew upgrade && brew cleanup');
|
|
481
|
-
console.error('');
|
|
482
|
-
console.error('Homebrew is available on macOS and Linux.');
|
|
483
|
-
process.exit(1);
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
await handler(args);
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
module.exports = {
|
|
490
|
-
main: do_brewu,
|
|
491
|
-
do_brewu,
|
|
492
|
-
do_brewu_nodejs,
|
|
493
|
-
do_brewu_macos,
|
|
494
|
-
do_brewu_ubuntu,
|
|
495
|
-
do_brewu_raspbian,
|
|
496
|
-
do_brewu_amazon_linux,
|
|
497
|
-
do_brewu_cmd,
|
|
498
|
-
do_brewu_powershell,
|
|
499
|
-
do_brewu_gitbash
|
|
500
|
-
};
|
|
501
|
-
|
|
502
|
-
if (require.main === module) {
|
|
503
|
-
do_brewu(process.argv.slice(2));
|
|
504
|
-
}
|
package/src/scripts/c.js
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* c - Clear the terminal screen
|
|
5
|
-
*
|
|
6
|
-
* Migrated from legacy dotfiles alias.
|
|
7
|
-
* Original: alias c="clear"
|
|
8
|
-
*
|
|
9
|
-
* This script clears the terminal screen, providing a clean workspace.
|
|
10
|
-
* It uses pure Node.js ANSI escape sequences which work across all platforms,
|
|
11
|
-
* making the implementation identical on macOS, Linux, and Windows.
|
|
12
|
-
*
|
|
13
|
-
* @module scripts/c
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
const os = require('../utils/common/os');
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Pure Node.js implementation that works on any platform.
|
|
20
|
-
*
|
|
21
|
-
* This function clears the terminal screen using ANSI escape sequences.
|
|
22
|
-
* These sequences are understood by virtually all modern terminal emulators:
|
|
23
|
-
*
|
|
24
|
-
* - ESC[2J : Clears the entire screen
|
|
25
|
-
* - ESC[H : Moves the cursor to the home position (top-left corner)
|
|
26
|
-
*
|
|
27
|
-
* This approach is preferred over shelling out to `clear` or `cls` because:
|
|
28
|
-
* 1. It works identically on all platforms
|
|
29
|
-
* 2. It requires no external commands
|
|
30
|
-
* 3. It's faster (no process spawn overhead)
|
|
31
|
-
* 4. It's more reliable (no dependency on external tools)
|
|
32
|
-
*
|
|
33
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
34
|
-
* @returns {Promise<void>}
|
|
35
|
-
*/
|
|
36
|
-
async function do_c_nodejs(args) {
|
|
37
|
-
// ANSI escape sequence to clear screen and move cursor to home position
|
|
38
|
-
// \x1b is the escape character (ESC)
|
|
39
|
-
// [2J clears the entire screen
|
|
40
|
-
// [H moves the cursor to row 1, column 1 (home position)
|
|
41
|
-
//
|
|
42
|
-
// Note: Some terminals also support \x1b[3J to clear the scrollback buffer,
|
|
43
|
-
// but we only clear the visible screen to match the behavior of `clear` on Unix.
|
|
44
|
-
process.stdout.write('\x1b[2J\x1b[H');
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Clear the terminal screen on macOS.
|
|
49
|
-
*
|
|
50
|
-
* Uses the pure Node.js implementation since ANSI escape sequences
|
|
51
|
-
* work perfectly in Terminal.app, iTerm2, and all other macOS terminals.
|
|
52
|
-
*
|
|
53
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
54
|
-
* @returns {Promise<void>}
|
|
55
|
-
*/
|
|
56
|
-
async function do_c_macos(args) {
|
|
57
|
-
return do_c_nodejs(args);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Clear the terminal screen on Ubuntu.
|
|
62
|
-
*
|
|
63
|
-
* Uses the pure Node.js implementation since ANSI escape sequences
|
|
64
|
-
* work in all Ubuntu terminal emulators (GNOME Terminal, Konsole, xterm, etc.).
|
|
65
|
-
*
|
|
66
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
67
|
-
* @returns {Promise<void>}
|
|
68
|
-
*/
|
|
69
|
-
async function do_c_ubuntu(args) {
|
|
70
|
-
return do_c_nodejs(args);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Clear the terminal screen on Raspberry Pi OS.
|
|
75
|
-
*
|
|
76
|
-
* Uses the pure Node.js implementation since ANSI escape sequences
|
|
77
|
-
* work in Raspberry Pi OS terminals (LXTerminal, xterm, etc.).
|
|
78
|
-
*
|
|
79
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
80
|
-
* @returns {Promise<void>}
|
|
81
|
-
*/
|
|
82
|
-
async function do_c_raspbian(args) {
|
|
83
|
-
return do_c_nodejs(args);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Clear the terminal screen on Amazon Linux.
|
|
88
|
-
*
|
|
89
|
-
* Uses the pure Node.js implementation since ANSI escape sequences
|
|
90
|
-
* work in all Linux terminals, including those used with Amazon Linux.
|
|
91
|
-
*
|
|
92
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
93
|
-
* @returns {Promise<void>}
|
|
94
|
-
*/
|
|
95
|
-
async function do_c_amazon_linux(args) {
|
|
96
|
-
return do_c_nodejs(args);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Clear the terminal screen in Windows Command Prompt.
|
|
101
|
-
*
|
|
102
|
-
* Uses the pure Node.js implementation. Windows 10 and later support
|
|
103
|
-
* ANSI escape sequences natively in CMD when virtual terminal processing
|
|
104
|
-
* is enabled (which is the default in modern Windows).
|
|
105
|
-
*
|
|
106
|
-
* For older Windows versions, Node.js handles this automatically through
|
|
107
|
-
* its terminal handling layer.
|
|
108
|
-
*
|
|
109
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
110
|
-
* @returns {Promise<void>}
|
|
111
|
-
*/
|
|
112
|
-
async function do_c_cmd(args) {
|
|
113
|
-
return do_c_nodejs(args);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Clear the terminal screen in Windows PowerShell.
|
|
118
|
-
*
|
|
119
|
-
* Uses the pure Node.js implementation. PowerShell on Windows 10 and later
|
|
120
|
-
* fully supports ANSI escape sequences.
|
|
121
|
-
*
|
|
122
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
123
|
-
* @returns {Promise<void>}
|
|
124
|
-
*/
|
|
125
|
-
async function do_c_powershell(args) {
|
|
126
|
-
return do_c_nodejs(args);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Clear the terminal screen in Git Bash.
|
|
131
|
-
*
|
|
132
|
-
* Uses the pure Node.js implementation. Git Bash uses MinTTY or Windows Terminal,
|
|
133
|
-
* both of which fully support ANSI escape sequences.
|
|
134
|
-
*
|
|
135
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
136
|
-
* @returns {Promise<void>}
|
|
137
|
-
*/
|
|
138
|
-
async function do_c_gitbash(args) {
|
|
139
|
-
return do_c_nodejs(args);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Main entry point - detects environment and executes appropriate implementation.
|
|
144
|
-
*
|
|
145
|
-
* The "c" command clears the terminal screen, providing a clean workspace.
|
|
146
|
-
* This is a common developer shortcut that replaces the longer `clear` command
|
|
147
|
-
* (or `cls` on Windows) with a single character.
|
|
148
|
-
*
|
|
149
|
-
* The implementation uses ANSI escape sequences which work identically on all
|
|
150
|
-
* platforms, making this one of the simplest cross-platform scripts: every
|
|
151
|
-
* platform function simply delegates to the pure Node.js implementation.
|
|
152
|
-
*
|
|
153
|
-
* @param {string[]} args - Command line arguments (unused)
|
|
154
|
-
* @returns {Promise<void>}
|
|
155
|
-
*/
|
|
156
|
-
async function do_c(args) {
|
|
157
|
-
const platform = os.detect();
|
|
158
|
-
|
|
159
|
-
const handlers = {
|
|
160
|
-
'macos': do_c_macos,
|
|
161
|
-
'ubuntu': do_c_ubuntu,
|
|
162
|
-
'debian': do_c_ubuntu,
|
|
163
|
-
'raspbian': do_c_raspbian,
|
|
164
|
-
'amazon_linux': do_c_amazon_linux,
|
|
165
|
-
'rhel': do_c_amazon_linux,
|
|
166
|
-
'fedora': do_c_ubuntu,
|
|
167
|
-
'linux': do_c_ubuntu,
|
|
168
|
-
'wsl': do_c_ubuntu,
|
|
169
|
-
'cmd': do_c_cmd,
|
|
170
|
-
'windows': do_c_cmd,
|
|
171
|
-
'powershell': do_c_powershell,
|
|
172
|
-
'gitbash': do_c_gitbash
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
const handler = handlers[platform.type];
|
|
176
|
-
if (!handler) {
|
|
177
|
-
// Fallback: ANSI escape sequences work on most terminals, so try anyway
|
|
178
|
-
console.error(`Note: Platform '${platform.type}' not explicitly supported, attempting to clear...`);
|
|
179
|
-
await do_c_nodejs(args);
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
await handler(args);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
module.exports = {
|
|
187
|
-
main: do_c,
|
|
188
|
-
do_c,
|
|
189
|
-
do_c_nodejs,
|
|
190
|
-
do_c_macos,
|
|
191
|
-
do_c_ubuntu,
|
|
192
|
-
do_c_raspbian,
|
|
193
|
-
do_c_amazon_linux,
|
|
194
|
-
do_c_cmd,
|
|
195
|
-
do_c_powershell,
|
|
196
|
-
do_c_gitbash
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
if (require.main === module) {
|
|
200
|
-
do_c(process.argv.slice(2));
|
|
201
|
-
}
|