@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.
Files changed (331) hide show
  1. package/README.md +32 -150
  2. package/package.json +5 -82
  3. package/bin/dev.js +0 -16
  4. package/files/README.md +0 -0
  5. package/files/claude/.claude/commands/setup-context.md +0 -3
  6. package/files/monorepos/_archive/README.md +0 -36
  7. package/files/monorepos/_legacy/README.md +0 -36
  8. package/files/monorepos/ai-docs/README.md +0 -33
  9. package/files/monorepos/apps/README.md +0 -24
  10. package/files/monorepos/docs/README.md +0 -40
  11. package/files/monorepos/packages/README.md +0 -25
  12. package/files/monorepos/research/README.md +0 -29
  13. package/files/monorepos/scripts/README.md +0 -24
  14. package/src/cli.js +0 -72
  15. package/src/commands/README.md +0 -41
  16. package/src/commands/configure.js +0 -199
  17. package/src/commands/identity.js +0 -1630
  18. package/src/commands/ignore.js +0 -247
  19. package/src/commands/install.js +0 -526
  20. package/src/commands/setup.js +0 -246
  21. package/src/commands/status.js +0 -223
  22. package/src/commands/update.js +0 -142
  23. package/src/commands/version.js +0 -100
  24. package/src/completion.js +0 -284
  25. package/src/constants.js +0 -45
  26. package/src/ignore/claude-code.txt +0 -10
  27. package/src/ignore/docker.txt +0 -18
  28. package/src/ignore/linux.txt +0 -23
  29. package/src/ignore/macos.txt +0 -36
  30. package/src/ignore/node.txt +0 -55
  31. package/src/ignore/terraform.txt +0 -37
  32. package/src/ignore/vscode.txt +0 -18
  33. package/src/ignore/windows.txt +0 -35
  34. package/src/index.js +0 -0
  35. package/src/installs/README.md +0 -399
  36. package/src/installs/adobe-creative-cloud.js +0 -546
  37. package/src/installs/adobe-creative-cloud.md +0 -605
  38. package/src/installs/appcleaner.js +0 -321
  39. package/src/installs/appcleaner.md +0 -699
  40. package/src/installs/apt-transport-https.js +0 -390
  41. package/src/installs/apt-transport-https.md +0 -678
  42. package/src/installs/atomicparsley.js +0 -642
  43. package/src/installs/atomicparsley.md +0 -795
  44. package/src/installs/aws-cli.js +0 -797
  45. package/src/installs/aws-cli.md +0 -727
  46. package/src/installs/balena-etcher.js +0 -710
  47. package/src/installs/balena-etcher.md +0 -761
  48. package/src/installs/bambu-studio.js +0 -1143
  49. package/src/installs/bambu-studio.md +0 -780
  50. package/src/installs/bash-completion.js +0 -575
  51. package/src/installs/bash-completion.md +0 -833
  52. package/src/installs/bash.js +0 -417
  53. package/src/installs/bash.md +0 -993
  54. package/src/installs/beyond-compare.js +0 -603
  55. package/src/installs/beyond-compare.md +0 -813
  56. package/src/installs/brave-browser.js +0 -968
  57. package/src/installs/brave-browser.md +0 -650
  58. package/src/installs/build-essential.js +0 -529
  59. package/src/installs/build-essential.md +0 -977
  60. package/src/installs/ca-certificates.js +0 -618
  61. package/src/installs/ca-certificates.md +0 -937
  62. package/src/installs/caffeine.js +0 -508
  63. package/src/installs/caffeine.md +0 -839
  64. package/src/installs/camtasia.js +0 -596
  65. package/src/installs/camtasia.md +0 -762
  66. package/src/installs/chatgpt.js +0 -476
  67. package/src/installs/chatgpt.md +0 -814
  68. package/src/installs/chocolatey.js +0 -456
  69. package/src/installs/chocolatey.md +0 -661
  70. package/src/installs/chrome-canary.js +0 -419
  71. package/src/installs/chrome-canary.md +0 -641
  72. package/src/installs/chromium.js +0 -667
  73. package/src/installs/chromium.md +0 -838
  74. package/src/installs/claude-code.js +0 -576
  75. package/src/installs/claude-code.md +0 -1173
  76. package/src/installs/cloudflare-warp.js +0 -900
  77. package/src/installs/cloudflare-warp.md +0 -1047
  78. package/src/installs/comet-browser.js +0 -588
  79. package/src/installs/comet-browser.md +0 -731
  80. package/src/installs/curl.js +0 -379
  81. package/src/installs/curl.md +0 -714
  82. package/src/installs/cursor.js +0 -579
  83. package/src/installs/cursor.md +0 -970
  84. package/src/installs/dbeaver.js +0 -924
  85. package/src/installs/dbeaver.md +0 -939
  86. package/src/installs/dbschema.js +0 -692
  87. package/src/installs/dbschema.md +0 -925
  88. package/src/installs/dependencies.md +0 -453
  89. package/src/installs/development-tools.js +0 -600
  90. package/src/installs/development-tools.md +0 -977
  91. package/src/installs/docker.js +0 -1029
  92. package/src/installs/docker.md +0 -1109
  93. package/src/installs/drawio.js +0 -1019
  94. package/src/installs/drawio.md +0 -795
  95. package/src/installs/elmedia-player.js +0 -347
  96. package/src/installs/elmedia-player.md +0 -556
  97. package/src/installs/ffmpeg.js +0 -889
  98. package/src/installs/ffmpeg.md +0 -852
  99. package/src/installs/file.js +0 -464
  100. package/src/installs/file.md +0 -987
  101. package/src/installs/gemini-cli.js +0 -811
  102. package/src/installs/gemini-cli.md +0 -1153
  103. package/src/installs/git.js +0 -400
  104. package/src/installs/git.md +0 -907
  105. package/src/installs/gitego.js +0 -949
  106. package/src/installs/gitego.md +0 -1172
  107. package/src/installs/go.js +0 -931
  108. package/src/installs/go.md +0 -958
  109. package/src/installs/google-antigravity.js +0 -913
  110. package/src/installs/google-antigravity.md +0 -1075
  111. package/src/installs/google-chrome.js +0 -833
  112. package/src/installs/google-chrome.md +0 -862
  113. package/src/installs/gpg.js +0 -480
  114. package/src/installs/gpg.md +0 -1056
  115. package/src/installs/homebrew.js +0 -1028
  116. package/src/installs/homebrew.md +0 -988
  117. package/src/installs/imageoptim.js +0 -968
  118. package/src/installs/imageoptim.md +0 -1119
  119. package/src/installs/installers.json +0 -4032
  120. package/src/installs/installers.json.tmp +0 -3953
  121. package/src/installs/jq.js +0 -400
  122. package/src/installs/jq.md +0 -809
  123. package/src/installs/keyboard-maestro.js +0 -719
  124. package/src/installs/keyboard-maestro.md +0 -825
  125. package/src/installs/kiro.js +0 -864
  126. package/src/installs/kiro.md +0 -1015
  127. package/src/installs/latex.js +0 -789
  128. package/src/installs/latex.md +0 -1095
  129. package/src/installs/lftp.js +0 -356
  130. package/src/installs/lftp.md +0 -907
  131. package/src/installs/lsb-release.js +0 -346
  132. package/src/installs/lsb-release.md +0 -814
  133. package/src/installs/messenger.js +0 -847
  134. package/src/installs/messenger.md +0 -900
  135. package/src/installs/microsoft-office.js +0 -568
  136. package/src/installs/microsoft-office.md +0 -760
  137. package/src/installs/microsoft-teams.js +0 -801
  138. package/src/installs/microsoft-teams.md +0 -886
  139. package/src/installs/moom.js +0 -326
  140. package/src/installs/moom.md +0 -570
  141. package/src/installs/node.js +0 -904
  142. package/src/installs/node.md +0 -1153
  143. package/src/installs/nordpass.js +0 -716
  144. package/src/installs/nordpass.md +0 -921
  145. package/src/installs/nordvpn.js +0 -892
  146. package/src/installs/nordvpn.md +0 -1052
  147. package/src/installs/nvm.js +0 -995
  148. package/src/installs/nvm.md +0 -1057
  149. package/src/installs/ohmyzsh.js +0 -529
  150. package/src/installs/ohmyzsh.md +0 -1094
  151. package/src/installs/openssh.js +0 -804
  152. package/src/installs/openssh.md +0 -1056
  153. package/src/installs/pandoc.js +0 -662
  154. package/src/installs/pandoc.md +0 -1036
  155. package/src/installs/parallels-desktop.js +0 -431
  156. package/src/installs/parallels-desktop.md +0 -446
  157. package/src/installs/pinentry.js +0 -510
  158. package/src/installs/pinentry.md +0 -1142
  159. package/src/installs/pngyu.js +0 -869
  160. package/src/installs/pngyu.md +0 -896
  161. package/src/installs/postman.js +0 -799
  162. package/src/installs/postman.md +0 -940
  163. package/src/installs/procps.js +0 -425
  164. package/src/installs/procps.md +0 -851
  165. package/src/installs/safari-tech-preview.js +0 -374
  166. package/src/installs/safari-tech-preview.md +0 -533
  167. package/src/installs/sfnt2woff.js +0 -658
  168. package/src/installs/sfnt2woff.md +0 -795
  169. package/src/installs/shellcheck.js +0 -481
  170. package/src/installs/shellcheck.md +0 -1005
  171. package/src/installs/slack.js +0 -741
  172. package/src/installs/slack.md +0 -865
  173. package/src/installs/snagit.js +0 -585
  174. package/src/installs/snagit.md +0 -844
  175. package/src/installs/software-properties-common.js +0 -372
  176. package/src/installs/software-properties-common.md +0 -805
  177. package/src/installs/spotify.js +0 -877
  178. package/src/installs/spotify.md +0 -901
  179. package/src/installs/studio-3t.js +0 -823
  180. package/src/installs/studio-3t.md +0 -918
  181. package/src/installs/sublime-text.js +0 -804
  182. package/src/installs/sublime-text.md +0 -914
  183. package/src/installs/superwhisper.js +0 -706
  184. package/src/installs/superwhisper.md +0 -630
  185. package/src/installs/tailscale.js +0 -745
  186. package/src/installs/tailscale.md +0 -1100
  187. package/src/installs/tar.js +0 -389
  188. package/src/installs/tar.md +0 -946
  189. package/src/installs/termius.js +0 -798
  190. package/src/installs/termius.md +0 -844
  191. package/src/installs/terraform.js +0 -779
  192. package/src/installs/terraform.md +0 -899
  193. package/src/installs/tfenv.js +0 -778
  194. package/src/installs/tfenv.md +0 -1091
  195. package/src/installs/tidal.js +0 -771
  196. package/src/installs/tidal.md +0 -864
  197. package/src/installs/tmux.js +0 -346
  198. package/src/installs/tmux.md +0 -1030
  199. package/src/installs/tree.js +0 -411
  200. package/src/installs/tree.md +0 -833
  201. package/src/installs/unzip.js +0 -460
  202. package/src/installs/unzip.md +0 -879
  203. package/src/installs/vim.js +0 -421
  204. package/src/installs/vim.md +0 -1040
  205. package/src/installs/vlc.js +0 -821
  206. package/src/installs/vlc.md +0 -927
  207. package/src/installs/vscode.js +0 -843
  208. package/src/installs/vscode.md +0 -1002
  209. package/src/installs/wget.js +0 -420
  210. package/src/installs/wget.md +0 -791
  211. package/src/installs/whatsapp.js +0 -729
  212. package/src/installs/whatsapp.md +0 -854
  213. package/src/installs/winpty.js +0 -352
  214. package/src/installs/winpty.md +0 -620
  215. package/src/installs/woff2.js +0 -553
  216. package/src/installs/woff2.md +0 -977
  217. package/src/installs/wsl.js +0 -572
  218. package/src/installs/wsl.md +0 -699
  219. package/src/installs/xcode-clt.js +0 -520
  220. package/src/installs/xcode-clt.md +0 -351
  221. package/src/installs/xcode.js +0 -560
  222. package/src/installs/xcode.md +0 -573
  223. package/src/installs/yarn.js +0 -824
  224. package/src/installs/yarn.md +0 -1074
  225. package/src/installs/yq.js +0 -654
  226. package/src/installs/yq.md +0 -944
  227. package/src/installs/yt-dlp.js +0 -701
  228. package/src/installs/yt-dlp.md +0 -946
  229. package/src/installs/yum-utils.js +0 -297
  230. package/src/installs/yum-utils.md +0 -648
  231. package/src/installs/zoom.js +0 -759
  232. package/src/installs/zoom.md +0 -884
  233. package/src/installs/zsh.js +0 -455
  234. package/src/installs/zsh.md +0 -1008
  235. package/src/scripts/README.md +0 -617
  236. package/src/scripts/STATUS.md +0 -208
  237. package/src/scripts/afk.js +0 -411
  238. package/src/scripts/backup-all.js +0 -746
  239. package/src/scripts/backup-source.js +0 -727
  240. package/src/scripts/brewd.js +0 -389
  241. package/src/scripts/brewi.js +0 -520
  242. package/src/scripts/brewr.js +0 -527
  243. package/src/scripts/brews.js +0 -477
  244. package/src/scripts/brewu.js +0 -504
  245. package/src/scripts/c.js +0 -201
  246. package/src/scripts/ccurl.js +0 -341
  247. package/src/scripts/certbot-crontab-init.js +0 -504
  248. package/src/scripts/certbot-init.js +0 -657
  249. package/src/scripts/ch.js +0 -355
  250. package/src/scripts/claude-danger.js +0 -268
  251. package/src/scripts/clean-dev.js +0 -435
  252. package/src/scripts/clear-dns-cache.js +0 -541
  253. package/src/scripts/clone.js +0 -435
  254. package/src/scripts/code-all.js +0 -437
  255. package/src/scripts/count-files.js +0 -211
  256. package/src/scripts/count-folders.js +0 -211
  257. package/src/scripts/count.js +0 -264
  258. package/src/scripts/d.js +0 -219
  259. package/src/scripts/datauri.js +0 -389
  260. package/src/scripts/delete-files.js +0 -380
  261. package/src/scripts/docker-clean.js +0 -426
  262. package/src/scripts/dp.js +0 -442
  263. package/src/scripts/e.js +0 -390
  264. package/src/scripts/empty-trash.js +0 -513
  265. package/src/scripts/evm.js +0 -444
  266. package/src/scripts/fetch-github-repos.js +0 -456
  267. package/src/scripts/get-channel.js +0 -345
  268. package/src/scripts/get-course.js +0 -399
  269. package/src/scripts/get-dependencies.js +0 -306
  270. package/src/scripts/get-folder.js +0 -799
  271. package/src/scripts/get-tunes.js +0 -426
  272. package/src/scripts/get-video.js +0 -367
  273. package/src/scripts/git-backup.js +0 -577
  274. package/src/scripts/git-clone.js +0 -493
  275. package/src/scripts/git-pup.js +0 -319
  276. package/src/scripts/git-push.js +0 -396
  277. package/src/scripts/h.js +0 -622
  278. package/src/scripts/hide-desktop-icons.js +0 -499
  279. package/src/scripts/hide-hidden-files.js +0 -538
  280. package/src/scripts/install-dependencies-from.js +0 -456
  281. package/src/scripts/ips.js +0 -663
  282. package/src/scripts/iso.js +0 -370
  283. package/src/scripts/killni.js +0 -577
  284. package/src/scripts/ll.js +0 -467
  285. package/src/scripts/local-ip.js +0 -325
  286. package/src/scripts/m.js +0 -524
  287. package/src/scripts/map.js +0 -309
  288. package/src/scripts/mkd.js +0 -351
  289. package/src/scripts/ncu-update-all.js +0 -457
  290. package/src/scripts/nginx-init.js +0 -718
  291. package/src/scripts/npmi.js +0 -382
  292. package/src/scripts/o.js +0 -511
  293. package/src/scripts/org-by-date.js +0 -338
  294. package/src/scripts/p.js +0 -224
  295. package/src/scripts/packages.js +0 -330
  296. package/src/scripts/path.js +0 -225
  297. package/src/scripts/ports.js +0 -597
  298. package/src/scripts/q.js +0 -305
  299. package/src/scripts/refresh-files.js +0 -394
  300. package/src/scripts/remove-smaller-files.js +0 -516
  301. package/src/scripts/rename-files-with-date.js +0 -533
  302. package/src/scripts/resize-image.js +0 -539
  303. package/src/scripts/rm-safe.js +0 -669
  304. package/src/scripts/s.js +0 -540
  305. package/src/scripts/set-git-public.js +0 -365
  306. package/src/scripts/show-desktop-icons.js +0 -475
  307. package/src/scripts/show-hidden-files.js +0 -472
  308. package/src/scripts/tpa.js +0 -280
  309. package/src/scripts/tpo.js +0 -280
  310. package/src/scripts/u.js +0 -505
  311. package/src/scripts/vpush.js +0 -437
  312. package/src/scripts/y.js +0 -283
  313. package/src/utils/README.md +0 -95
  314. package/src/utils/common/apps.js +0 -143
  315. package/src/utils/common/display.js +0 -157
  316. package/src/utils/common/network.js +0 -185
  317. package/src/utils/common/os.js +0 -294
  318. package/src/utils/common/package-manager.js +0 -301
  319. package/src/utils/common/privileges.js +0 -138
  320. package/src/utils/common/shell.js +0 -261
  321. package/src/utils/macos/apps.js +0 -228
  322. package/src/utils/macos/brew.js +0 -315
  323. package/src/utils/ubuntu/apt.js +0 -307
  324. package/src/utils/ubuntu/desktop.js +0 -292
  325. package/src/utils/ubuntu/snap.js +0 -344
  326. package/src/utils/ubuntu/systemd.js +0 -286
  327. package/src/utils/windows/choco.js +0 -465
  328. package/src/utils/windows/env.js +0 -246
  329. package/src/utils/windows/registry.js +0 -269
  330. package/src/utils/windows/shell.js +0 -240
  331. package/src/utils/windows/winget.js +0 -489
@@ -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
- }