@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/ccurl.js
DELETED
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* ccurl - Fetch a URL expecting JSON and pretty-print the output
|
|
5
|
-
*
|
|
6
|
-
* Migrated from legacy dotfiles alias.
|
|
7
|
-
* Original:
|
|
8
|
-
* ccurl() {
|
|
9
|
-
* if [ -z "$1" ]; then
|
|
10
|
-
* echo "Usage: ccurl <URL>"
|
|
11
|
-
* return 1
|
|
12
|
-
* fi
|
|
13
|
-
* curl -s -H "Accept: application/json" "$1" | jq
|
|
14
|
-
* }
|
|
15
|
-
*
|
|
16
|
-
* This script fetches a URL with an Accept: application/json header and
|
|
17
|
-
* pretty-prints the JSON response with syntax highlighting (if supported).
|
|
18
|
-
* Unlike the original bash version that required curl and jq to be installed,
|
|
19
|
-
* this Node.js implementation uses the built-in fetch() API and JSON methods,
|
|
20
|
-
* making it work on any system with Node.js 22+ without external dependencies.
|
|
21
|
-
*
|
|
22
|
-
* @module scripts/ccurl
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
const os = require('../utils/common/os');
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Pretty-prints JSON with indentation.
|
|
29
|
-
*
|
|
30
|
-
* Takes a parsed JSON object and returns a formatted string with 2-space
|
|
31
|
-
* indentation. This replicates what jq does by default without any arguments.
|
|
32
|
-
*
|
|
33
|
-
* @param {any} data - The parsed JSON data to format
|
|
34
|
-
* @returns {string} The formatted JSON string
|
|
35
|
-
*/
|
|
36
|
-
function prettyPrintJson(data) {
|
|
37
|
-
return JSON.stringify(data, null, 2);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Pure Node.js implementation using the built-in fetch() API.
|
|
42
|
-
*
|
|
43
|
-
* This implementation works on ALL platforms because Node.js 22+ includes
|
|
44
|
-
* fetch() natively. There is no need for platform-specific code - we can
|
|
45
|
-
* make HTTP requests and parse JSON entirely within Node.js.
|
|
46
|
-
*
|
|
47
|
-
* Key differences from the original bash version:
|
|
48
|
-
* - Uses native fetch() instead of shelling out to curl
|
|
49
|
-
* - Uses JSON.parse() and JSON.stringify() instead of jq
|
|
50
|
-
* - Works on any platform with Node.js 22+ without external tools
|
|
51
|
-
* - Provides better error handling and clearer error messages
|
|
52
|
-
*
|
|
53
|
-
* @param {string[]} args - Command line arguments
|
|
54
|
-
* @param {string} args.0 - URL to fetch (required)
|
|
55
|
-
* @returns {Promise<void>}
|
|
56
|
-
*/
|
|
57
|
-
async function do_ccurl_nodejs(args) {
|
|
58
|
-
// Check if a URL was provided
|
|
59
|
-
const url = args[0];
|
|
60
|
-
if (!url) {
|
|
61
|
-
console.error('Usage: ccurl <URL>');
|
|
62
|
-
console.error('');
|
|
63
|
-
console.error('Fetches a URL expecting JSON and pretty-prints the response.');
|
|
64
|
-
console.error('');
|
|
65
|
-
console.error('Examples:');
|
|
66
|
-
console.error(' ccurl https://api.github.com/users/octocat');
|
|
67
|
-
console.error(' ccurl https://jsonplaceholder.typicode.com/posts/1');
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Validate that the URL looks reasonable
|
|
72
|
-
// Note: We don't use URL constructor validation because the user might
|
|
73
|
-
// provide a URL without a protocol, and we want a helpful error message
|
|
74
|
-
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
|
75
|
-
console.error(`Error: Invalid URL format: ${url}`);
|
|
76
|
-
console.error('');
|
|
77
|
-
console.error('URL must start with http:// or https://');
|
|
78
|
-
console.error('');
|
|
79
|
-
console.error('Example: ccurl https://api.example.com/data');
|
|
80
|
-
process.exit(1);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
try {
|
|
84
|
-
// Make the HTTP request with Accept: application/json header
|
|
85
|
-
// This mimics the original: curl -s -H "Accept: application/json" "$1"
|
|
86
|
-
const response = await fetch(url, {
|
|
87
|
-
headers: {
|
|
88
|
-
'Accept': 'application/json',
|
|
89
|
-
// Include a User-Agent to avoid being blocked by some APIs
|
|
90
|
-
'User-Agent': 'ccurl/1.0 (devutils-cli)'
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
// Check if the response was successful
|
|
95
|
-
if (!response.ok) {
|
|
96
|
-
console.error(`Error: HTTP ${response.status} ${response.statusText}`);
|
|
97
|
-
// Try to get the response body for more context
|
|
98
|
-
try {
|
|
99
|
-
const errorBody = await response.text();
|
|
100
|
-
if (errorBody) {
|
|
101
|
-
// Try to parse and pretty-print if it's JSON
|
|
102
|
-
try {
|
|
103
|
-
const errorJson = JSON.parse(errorBody);
|
|
104
|
-
console.error('Response body:');
|
|
105
|
-
console.error(prettyPrintJson(errorJson));
|
|
106
|
-
} catch {
|
|
107
|
-
// Not JSON, just print the raw text (truncated if too long)
|
|
108
|
-
const truncated = errorBody.length > 500
|
|
109
|
-
? errorBody.substring(0, 500) + '...'
|
|
110
|
-
: errorBody;
|
|
111
|
-
console.error('Response body:');
|
|
112
|
-
console.error(truncated);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
} catch {
|
|
116
|
-
// Could not read response body, that's okay
|
|
117
|
-
}
|
|
118
|
-
process.exit(1);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Get the response body as text first
|
|
122
|
-
const responseText = await response.text();
|
|
123
|
-
|
|
124
|
-
// Check if we got any content
|
|
125
|
-
if (!responseText || responseText.trim() === '') {
|
|
126
|
-
console.log('(empty response)');
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// Try to parse the response as JSON
|
|
131
|
-
let jsonData;
|
|
132
|
-
try {
|
|
133
|
-
jsonData = JSON.parse(responseText);
|
|
134
|
-
} catch (parseError) {
|
|
135
|
-
// Response is not valid JSON
|
|
136
|
-
console.error('Error: Response is not valid JSON');
|
|
137
|
-
console.error('');
|
|
138
|
-
console.error('Content-Type:', response.headers.get('content-type') || 'not specified');
|
|
139
|
-
console.error('');
|
|
140
|
-
console.error('Raw response (first 500 chars):');
|
|
141
|
-
const truncated = responseText.length > 500
|
|
142
|
-
? responseText.substring(0, 500) + '...'
|
|
143
|
-
: responseText;
|
|
144
|
-
console.error(truncated);
|
|
145
|
-
process.exit(1);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Pretty-print the JSON output
|
|
149
|
-
// This replicates what jq does by default
|
|
150
|
-
console.log(prettyPrintJson(jsonData));
|
|
151
|
-
|
|
152
|
-
} catch (error) {
|
|
153
|
-
// Handle network errors, DNS failures, etc.
|
|
154
|
-
if (error.cause && error.cause.code === 'ENOTFOUND') {
|
|
155
|
-
console.error(`Error: Could not resolve hostname for ${url}`);
|
|
156
|
-
console.error('');
|
|
157
|
-
console.error('Check that the URL is correct and you have network connectivity.');
|
|
158
|
-
} else if (error.cause && error.cause.code === 'ECONNREFUSED') {
|
|
159
|
-
console.error(`Error: Connection refused for ${url}`);
|
|
160
|
-
console.error('');
|
|
161
|
-
console.error('The server is not accepting connections on the specified port.');
|
|
162
|
-
} else if (error.cause && error.cause.code === 'ETIMEDOUT') {
|
|
163
|
-
console.error(`Error: Connection timed out for ${url}`);
|
|
164
|
-
console.error('');
|
|
165
|
-
console.error('The server took too long to respond.');
|
|
166
|
-
} else if (error.name === 'TypeError' && error.message.includes('fetch')) {
|
|
167
|
-
console.error(`Error: Invalid URL: ${url}`);
|
|
168
|
-
console.error('');
|
|
169
|
-
console.error('Make sure the URL is properly formatted.');
|
|
170
|
-
} else {
|
|
171
|
-
console.error(`Error fetching ${url}:`);
|
|
172
|
-
console.error(error.message || error);
|
|
173
|
-
}
|
|
174
|
-
process.exit(1);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Fetch JSON from URL on macOS.
|
|
180
|
-
*
|
|
181
|
-
* Uses the pure Node.js implementation since fetch() works identically
|
|
182
|
-
* on all platforms. No macOS-specific code is needed.
|
|
183
|
-
*
|
|
184
|
-
* @param {string[]} args - Command line arguments
|
|
185
|
-
* @returns {Promise<void>}
|
|
186
|
-
*/
|
|
187
|
-
async function do_ccurl_macos(args) {
|
|
188
|
-
return do_ccurl_nodejs(args);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Fetch JSON from URL on Ubuntu.
|
|
193
|
-
*
|
|
194
|
-
* Uses the pure Node.js implementation since fetch() works identically
|
|
195
|
-
* on all platforms. No Ubuntu-specific code is needed.
|
|
196
|
-
*
|
|
197
|
-
* @param {string[]} args - Command line arguments
|
|
198
|
-
* @returns {Promise<void>}
|
|
199
|
-
*/
|
|
200
|
-
async function do_ccurl_ubuntu(args) {
|
|
201
|
-
return do_ccurl_nodejs(args);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Fetch JSON from URL on Raspberry Pi OS.
|
|
206
|
-
*
|
|
207
|
-
* Uses the pure Node.js implementation since fetch() works identically
|
|
208
|
-
* on all platforms. No Raspbian-specific code is needed.
|
|
209
|
-
*
|
|
210
|
-
* @param {string[]} args - Command line arguments
|
|
211
|
-
* @returns {Promise<void>}
|
|
212
|
-
*/
|
|
213
|
-
async function do_ccurl_raspbian(args) {
|
|
214
|
-
return do_ccurl_nodejs(args);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Fetch JSON from URL on Amazon Linux.
|
|
219
|
-
*
|
|
220
|
-
* Uses the pure Node.js implementation since fetch() works identically
|
|
221
|
-
* on all platforms. No Amazon Linux-specific code is needed.
|
|
222
|
-
*
|
|
223
|
-
* @param {string[]} args - Command line arguments
|
|
224
|
-
* @returns {Promise<void>}
|
|
225
|
-
*/
|
|
226
|
-
async function do_ccurl_amazon_linux(args) {
|
|
227
|
-
return do_ccurl_nodejs(args);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* Fetch JSON from URL on Windows Command Prompt.
|
|
232
|
-
*
|
|
233
|
-
* Uses the pure Node.js implementation since fetch() works identically
|
|
234
|
-
* on all platforms. No Windows CMD-specific code is needed.
|
|
235
|
-
*
|
|
236
|
-
* @param {string[]} args - Command line arguments
|
|
237
|
-
* @returns {Promise<void>}
|
|
238
|
-
*/
|
|
239
|
-
async function do_ccurl_cmd(args) {
|
|
240
|
-
return do_ccurl_nodejs(args);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* Fetch JSON from URL on Windows PowerShell.
|
|
245
|
-
*
|
|
246
|
-
* Uses the pure Node.js implementation since fetch() works identically
|
|
247
|
-
* on all platforms. No PowerShell-specific code is needed.
|
|
248
|
-
*
|
|
249
|
-
* @param {string[]} args - Command line arguments
|
|
250
|
-
* @returns {Promise<void>}
|
|
251
|
-
*/
|
|
252
|
-
async function do_ccurl_powershell(args) {
|
|
253
|
-
return do_ccurl_nodejs(args);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Fetch JSON from URL on Git Bash.
|
|
258
|
-
*
|
|
259
|
-
* Uses the pure Node.js implementation since fetch() works identically
|
|
260
|
-
* on all platforms. No Git Bash-specific code is needed.
|
|
261
|
-
*
|
|
262
|
-
* @param {string[]} args - Command line arguments
|
|
263
|
-
* @returns {Promise<void>}
|
|
264
|
-
*/
|
|
265
|
-
async function do_ccurl_gitbash(args) {
|
|
266
|
-
return do_ccurl_nodejs(args);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Main entry point - detects environment and executes appropriate implementation.
|
|
271
|
-
*
|
|
272
|
-
* The "ccurl" command fetches a URL expecting JSON and pretty-prints the output.
|
|
273
|
-
* This is useful for quickly inspecting API responses from the command line.
|
|
274
|
-
*
|
|
275
|
-
* Since this functionality is implemented entirely in Node.js using the built-in
|
|
276
|
-
* fetch() API, it works identically on all platforms. The platform detection is
|
|
277
|
-
* included for consistency with other scripts in this project, but all platforms
|
|
278
|
-
* delegate to the same Node.js implementation.
|
|
279
|
-
*
|
|
280
|
-
* Usage:
|
|
281
|
-
* ccurl <URL>
|
|
282
|
-
*
|
|
283
|
-
* Examples:
|
|
284
|
-
* ccurl https://api.github.com/users/octocat
|
|
285
|
-
* ccurl https://jsonplaceholder.typicode.com/posts/1
|
|
286
|
-
* ccurl https://httpbin.org/get
|
|
287
|
-
*
|
|
288
|
-
* @param {string[]} args - Command line arguments
|
|
289
|
-
* @returns {Promise<void>}
|
|
290
|
-
*/
|
|
291
|
-
async function do_ccurl(args) {
|
|
292
|
-
const platform = os.detect();
|
|
293
|
-
|
|
294
|
-
const handlers = {
|
|
295
|
-
'macos': do_ccurl_macos,
|
|
296
|
-
'ubuntu': do_ccurl_ubuntu,
|
|
297
|
-
'debian': do_ccurl_ubuntu,
|
|
298
|
-
'raspbian': do_ccurl_raspbian,
|
|
299
|
-
'amazon_linux': do_ccurl_amazon_linux,
|
|
300
|
-
'rhel': do_ccurl_amazon_linux,
|
|
301
|
-
'fedora': do_ccurl_ubuntu,
|
|
302
|
-
'linux': do_ccurl_ubuntu,
|
|
303
|
-
'wsl': do_ccurl_ubuntu,
|
|
304
|
-
'cmd': do_ccurl_cmd,
|
|
305
|
-
'windows': do_ccurl_cmd,
|
|
306
|
-
'powershell': do_ccurl_powershell,
|
|
307
|
-
'gitbash': do_ccurl_gitbash
|
|
308
|
-
};
|
|
309
|
-
|
|
310
|
-
const handler = handlers[platform.type];
|
|
311
|
-
if (!handler) {
|
|
312
|
-
console.error(`Platform '${platform.type}' is not supported for this command.`);
|
|
313
|
-
console.error('');
|
|
314
|
-
console.error('Supported platforms:');
|
|
315
|
-
console.error(' - macOS');
|
|
316
|
-
console.error(' - Ubuntu, Debian, and other Linux distributions');
|
|
317
|
-
console.error(' - Raspberry Pi OS');
|
|
318
|
-
console.error(' - Amazon Linux, RHEL, Fedora');
|
|
319
|
-
console.error(' - Windows (CMD, PowerShell, Git Bash)');
|
|
320
|
-
process.exit(1);
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
await handler(args);
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
module.exports = {
|
|
327
|
-
main: do_ccurl,
|
|
328
|
-
do_ccurl,
|
|
329
|
-
do_ccurl_nodejs,
|
|
330
|
-
do_ccurl_macos,
|
|
331
|
-
do_ccurl_ubuntu,
|
|
332
|
-
do_ccurl_raspbian,
|
|
333
|
-
do_ccurl_amazon_linux,
|
|
334
|
-
do_ccurl_cmd,
|
|
335
|
-
do_ccurl_powershell,
|
|
336
|
-
do_ccurl_gitbash
|
|
337
|
-
};
|
|
338
|
-
|
|
339
|
-
if (require.main === module) {
|
|
340
|
-
do_ccurl(process.argv.slice(2));
|
|
341
|
-
}
|