@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/q.js
DELETED
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* q - Exit the current shell session (quick exit)
|
|
5
|
-
*
|
|
6
|
-
* Migrated from legacy dotfiles alias.
|
|
7
|
-
* Original: alias q="exit"
|
|
8
|
-
*
|
|
9
|
-
* IMPORTANT LIMITATION:
|
|
10
|
-
* The original `q` alias worked because shell aliases run in the same process
|
|
11
|
-
* as the shell itself. When you type `q` and it runs `exit`, the shell exits.
|
|
12
|
-
*
|
|
13
|
-
* However, this Node.js script runs as a CHILD PROCESS of your shell. When we
|
|
14
|
-
* call `process.exit()` here, it only exits THIS script's process - not your
|
|
15
|
-
* parent shell. There is no cross-platform way for a child process to force
|
|
16
|
-
* its parent process to terminate.
|
|
17
|
-
*
|
|
18
|
-
* WORKAROUND OPTIONS:
|
|
19
|
-
*
|
|
20
|
-
* 1. Use the native shell command directly:
|
|
21
|
-
* Just type `exit` in your terminal.
|
|
22
|
-
*
|
|
23
|
-
* 2. Create a shell alias (recommended for true `q` behavior):
|
|
24
|
-
* In your ~/.bashrc or ~/.zshrc:
|
|
25
|
-
* alias q="exit"
|
|
26
|
-
*
|
|
27
|
-
* In PowerShell $PROFILE:
|
|
28
|
-
* function q { exit }
|
|
29
|
-
*
|
|
30
|
-
* 3. Source this script's output (advanced):
|
|
31
|
-
* eval "$(q)" # This would work if the script printed "exit"
|
|
32
|
-
*
|
|
33
|
-
* This script provides informative guidance to users about this limitation.
|
|
34
|
-
*
|
|
35
|
-
* @module scripts/q
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
const os = require('../utils/common/os');
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Pure Node.js implementation that explains the exit limitation.
|
|
42
|
-
*
|
|
43
|
-
* Since exiting the parent shell is not possible from a child process,
|
|
44
|
-
* this function prints helpful information to the user.
|
|
45
|
-
*
|
|
46
|
-
* @param {string[]} args - Command line arguments
|
|
47
|
-
* @returns {Promise<void>}
|
|
48
|
-
*/
|
|
49
|
-
async function do_q_nodejs(args) {
|
|
50
|
-
// Check if user passed --help or -h
|
|
51
|
-
if (args.includes('--help') || args.includes('-h')) {
|
|
52
|
-
printHelp();
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Check if user wants shell-sourceable output (--eval or -e flag)
|
|
57
|
-
// Usage: eval "$(q --eval)" or eval "$(q -e)"
|
|
58
|
-
if (args.includes('--eval') || args.includes('-e')) {
|
|
59
|
-
// Print the exit command so it can be sourced/evaled by the parent shell
|
|
60
|
-
console.log('exit');
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Default behavior: inform the user about the limitation
|
|
65
|
-
console.log('To exit your shell, type: exit');
|
|
66
|
-
console.log('');
|
|
67
|
-
console.log('Note: The `q` command cannot exit your shell directly because');
|
|
68
|
-
console.log('it runs as a child process. For true `q` behavior, add this');
|
|
69
|
-
console.log('alias to your shell config:');
|
|
70
|
-
console.log('');
|
|
71
|
-
|
|
72
|
-
const platform = os.detect();
|
|
73
|
-
|
|
74
|
-
// Provide shell-specific guidance
|
|
75
|
-
if (platform.type === 'windows' || platform.type === 'powershell') {
|
|
76
|
-
console.log(' PowerShell (add to $PROFILE):');
|
|
77
|
-
console.log(' function q { exit }');
|
|
78
|
-
} else if (platform.type === 'cmd') {
|
|
79
|
-
console.log(' CMD (create a doskey alias or batch file):');
|
|
80
|
-
console.log(' doskey q=exit');
|
|
81
|
-
} else {
|
|
82
|
-
// Unix-like systems (macOS, Linux, Git Bash)
|
|
83
|
-
console.log(' Bash/Zsh (add to ~/.bashrc or ~/.zshrc):');
|
|
84
|
-
console.log(' alias q="exit"');
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
console.log('');
|
|
88
|
-
console.log('Alternatively, use: eval "$(q --eval)" to exit immediately.');
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Prints help information about the q command.
|
|
93
|
-
*
|
|
94
|
-
* @returns {void}
|
|
95
|
-
*/
|
|
96
|
-
function printHelp() {
|
|
97
|
-
console.log('q - Quick exit command');
|
|
98
|
-
console.log('');
|
|
99
|
-
console.log('Usage:');
|
|
100
|
-
console.log(' q Show exit instructions');
|
|
101
|
-
console.log(' q --eval Print "exit" for shell sourcing');
|
|
102
|
-
console.log(' q -e Same as --eval');
|
|
103
|
-
console.log(' q --help Show this help message');
|
|
104
|
-
console.log(' q -h Same as --help');
|
|
105
|
-
console.log('');
|
|
106
|
-
console.log('Examples:');
|
|
107
|
-
console.log(' # Show instructions');
|
|
108
|
-
console.log(' q');
|
|
109
|
-
console.log('');
|
|
110
|
-
console.log(' # Exit shell immediately (Bash/Zsh):');
|
|
111
|
-
console.log(' eval "$(q --eval)"');
|
|
112
|
-
console.log('');
|
|
113
|
-
console.log(' # Exit shell immediately (PowerShell):');
|
|
114
|
-
console.log(' Invoke-Expression (q --eval)');
|
|
115
|
-
console.log('');
|
|
116
|
-
console.log('Note: For true `q` behavior, create a shell alias instead.');
|
|
117
|
-
console.log('This script cannot exit the parent shell directly because');
|
|
118
|
-
console.log('it runs as a child process.');
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Exit guidance on macOS.
|
|
123
|
-
*
|
|
124
|
-
* On macOS, the default shell is Zsh (since Catalina) or Bash (older versions).
|
|
125
|
-
* Both support the `alias q="exit"` syntax.
|
|
126
|
-
*
|
|
127
|
-
* @param {string[]} args - Command line arguments
|
|
128
|
-
* @returns {Promise<void>}
|
|
129
|
-
*/
|
|
130
|
-
async function do_q_macos(args) {
|
|
131
|
-
return do_q_nodejs(args);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Exit guidance on Ubuntu.
|
|
136
|
-
*
|
|
137
|
-
* Ubuntu uses Bash by default. The `alias q="exit"` syntax works.
|
|
138
|
-
*
|
|
139
|
-
* @param {string[]} args - Command line arguments
|
|
140
|
-
* @returns {Promise<void>}
|
|
141
|
-
*/
|
|
142
|
-
async function do_q_ubuntu(args) {
|
|
143
|
-
return do_q_nodejs(args);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Exit guidance on Raspberry Pi OS.
|
|
148
|
-
*
|
|
149
|
-
* Raspberry Pi OS uses Bash by default. The `alias q="exit"` syntax works.
|
|
150
|
-
*
|
|
151
|
-
* @param {string[]} args - Command line arguments
|
|
152
|
-
* @returns {Promise<void>}
|
|
153
|
-
*/
|
|
154
|
-
async function do_q_raspbian(args) {
|
|
155
|
-
return do_q_nodejs(args);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Exit guidance on Amazon Linux.
|
|
160
|
-
*
|
|
161
|
-
* Amazon Linux uses Bash by default. The `alias q="exit"` syntax works.
|
|
162
|
-
*
|
|
163
|
-
* @param {string[]} args - Command line arguments
|
|
164
|
-
* @returns {Promise<void>}
|
|
165
|
-
*/
|
|
166
|
-
async function do_q_amazon_linux(args) {
|
|
167
|
-
return do_q_nodejs(args);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Exit guidance in Windows Command Prompt.
|
|
172
|
-
*
|
|
173
|
-
* CMD supports doskey macros or batch files for creating aliases.
|
|
174
|
-
* The `exit` command itself works directly in CMD.
|
|
175
|
-
*
|
|
176
|
-
* @param {string[]} args - Command line arguments
|
|
177
|
-
* @returns {Promise<void>}
|
|
178
|
-
*/
|
|
179
|
-
async function do_q_cmd(args) {
|
|
180
|
-
// Check for --eval flag
|
|
181
|
-
if (args.includes('--eval') || args.includes('-e')) {
|
|
182
|
-
console.log('exit');
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// Check for --help flag
|
|
187
|
-
if (args.includes('--help') || args.includes('-h')) {
|
|
188
|
-
printHelp();
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
console.log('To exit your shell, type: exit');
|
|
193
|
-
console.log('');
|
|
194
|
-
console.log('Note: The `q` command cannot exit your shell directly because');
|
|
195
|
-
console.log('it runs as a child process. For true `q` behavior, you can:');
|
|
196
|
-
console.log('');
|
|
197
|
-
console.log(' Create a doskey macro (temporary, for current session):');
|
|
198
|
-
console.log(' doskey q=exit');
|
|
199
|
-
console.log('');
|
|
200
|
-
console.log(' Or create a q.bat file in a PATH directory:');
|
|
201
|
-
console.log(' @echo off');
|
|
202
|
-
console.log(' exit');
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Exit guidance in Windows PowerShell.
|
|
207
|
-
*
|
|
208
|
-
* PowerShell supports functions for creating aliases to commands with arguments.
|
|
209
|
-
* The `exit` command works directly in PowerShell.
|
|
210
|
-
*
|
|
211
|
-
* @param {string[]} args - Command line arguments
|
|
212
|
-
* @returns {Promise<void>}
|
|
213
|
-
*/
|
|
214
|
-
async function do_q_powershell(args) {
|
|
215
|
-
// Check for --eval flag
|
|
216
|
-
if (args.includes('--eval') || args.includes('-e')) {
|
|
217
|
-
console.log('exit');
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
// Check for --help flag
|
|
222
|
-
if (args.includes('--help') || args.includes('-h')) {
|
|
223
|
-
printHelp();
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
console.log('To exit your shell, type: exit');
|
|
228
|
-
console.log('');
|
|
229
|
-
console.log('Note: The `q` command cannot exit your shell directly because');
|
|
230
|
-
console.log('it runs as a child process. For true `q` behavior, add this');
|
|
231
|
-
console.log('to your PowerShell profile ($PROFILE):');
|
|
232
|
-
console.log('');
|
|
233
|
-
console.log(' function q { exit }');
|
|
234
|
-
console.log('');
|
|
235
|
-
console.log('Alternatively, use: Invoke-Expression (q --eval)');
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Exit guidance in Git Bash.
|
|
240
|
-
*
|
|
241
|
-
* Git Bash is a Bash shell on Windows, so `alias q="exit"` works.
|
|
242
|
-
*
|
|
243
|
-
* @param {string[]} args - Command line arguments
|
|
244
|
-
* @returns {Promise<void>}
|
|
245
|
-
*/
|
|
246
|
-
async function do_q_gitbash(args) {
|
|
247
|
-
return do_q_nodejs(args);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Main entry point - detects environment and executes appropriate implementation.
|
|
252
|
-
*
|
|
253
|
-
* The "q" command is a quick shorthand for "exit" to leave the current shell.
|
|
254
|
-
* Due to process isolation, this script cannot directly exit the parent shell,
|
|
255
|
-
* so it provides guidance on how to achieve the desired behavior.
|
|
256
|
-
*
|
|
257
|
-
* @param {string[]} args - Command line arguments
|
|
258
|
-
* @returns {Promise<void>}
|
|
259
|
-
*/
|
|
260
|
-
async function do_q(args) {
|
|
261
|
-
const platform = os.detect();
|
|
262
|
-
|
|
263
|
-
const handlers = {
|
|
264
|
-
'macos': do_q_macos,
|
|
265
|
-
'ubuntu': do_q_ubuntu,
|
|
266
|
-
'debian': do_q_ubuntu,
|
|
267
|
-
'raspbian': do_q_raspbian,
|
|
268
|
-
'amazon_linux': do_q_amazon_linux,
|
|
269
|
-
'rhel': do_q_amazon_linux,
|
|
270
|
-
'fedora': do_q_ubuntu,
|
|
271
|
-
'linux': do_q_ubuntu,
|
|
272
|
-
'wsl': do_q_ubuntu,
|
|
273
|
-
'cmd': do_q_cmd,
|
|
274
|
-
'windows': do_q_cmd,
|
|
275
|
-
'powershell': do_q_powershell,
|
|
276
|
-
'gitbash': do_q_gitbash
|
|
277
|
-
};
|
|
278
|
-
|
|
279
|
-
const handler = handlers[platform.type];
|
|
280
|
-
if (!handler) {
|
|
281
|
-
// Fallback to generic Node.js implementation
|
|
282
|
-
// This ensures the script works on unknown platforms too
|
|
283
|
-
await do_q_nodejs(args);
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
await handler(args);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
module.exports = {
|
|
291
|
-
main: do_q,
|
|
292
|
-
do_q,
|
|
293
|
-
do_q_nodejs,
|
|
294
|
-
do_q_macos,
|
|
295
|
-
do_q_ubuntu,
|
|
296
|
-
do_q_raspbian,
|
|
297
|
-
do_q_amazon_linux,
|
|
298
|
-
do_q_cmd,
|
|
299
|
-
do_q_powershell,
|
|
300
|
-
do_q_gitbash
|
|
301
|
-
};
|
|
302
|
-
|
|
303
|
-
if (require.main === module) {
|
|
304
|
-
do_q(process.argv.slice(2));
|
|
305
|
-
}
|
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* refresh-files - Copy matching files from source to target directory
|
|
5
|
-
*
|
|
6
|
-
* Migrated from legacy dotfiles alias.
|
|
7
|
-
* Original bash function (see research/dotfiles/src/shell/bash_functions):
|
|
8
|
-
*
|
|
9
|
-
* refresh-files SOURCE_FOLDER [TARGET_FOLDER]
|
|
10
|
-
*
|
|
11
|
-
* Compares files in the target directory with a source directory and copies
|
|
12
|
-
* over files that exist in both locations from the source. Skips node_modules
|
|
13
|
-
* and bower_components directories.
|
|
14
|
-
*
|
|
15
|
-
* This script compares files in a target directory with a source directory
|
|
16
|
-
* and copies over files that exist in BOTH locations from the source.
|
|
17
|
-
* This is useful for:
|
|
18
|
-
* - Refreshing vendor source files from a stable/reference project
|
|
19
|
-
* - Syncing configuration files with a known-good copy
|
|
20
|
-
* - Keeping critical files in sync with a master copy
|
|
21
|
-
*
|
|
22
|
-
* The script does NOT add new files to the target. It only updates files
|
|
23
|
-
* that already exist in the target directory if they also exist in the source.
|
|
24
|
-
*
|
|
25
|
-
* @module scripts/refresh-files
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
const os = require('../utils/common/os');
|
|
29
|
-
const fs = require('fs');
|
|
30
|
-
const path = require('path');
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Directories to skip when walking the target directory tree.
|
|
34
|
-
* These are typically large dependency directories that should not be refreshed.
|
|
35
|
-
*/
|
|
36
|
-
const SKIP_DIRECTORIES = ['node_modules', 'bower_components', '.git'];
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Recursively find all files in a directory, skipping certain directories.
|
|
40
|
-
* Returns absolute paths to all files found.
|
|
41
|
-
*
|
|
42
|
-
* @param {string} dirPath - Absolute path to the directory to search
|
|
43
|
-
* @param {string[]} skipDirs - Array of directory names to skip
|
|
44
|
-
* @returns {string[]} Array of absolute file paths
|
|
45
|
-
*/
|
|
46
|
-
function findFilesRecursively(dirPath, skipDirs) {
|
|
47
|
-
const results = [];
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Inner recursive function to walk the directory tree.
|
|
51
|
-
* @param {string} currentDir - Current directory being examined
|
|
52
|
-
*/
|
|
53
|
-
function walk(currentDir) {
|
|
54
|
-
let entries;
|
|
55
|
-
|
|
56
|
-
try {
|
|
57
|
-
entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
58
|
-
} catch (err) {
|
|
59
|
-
// Cannot read directory (permission denied, etc.) - skip it
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
for (const entry of entries) {
|
|
64
|
-
const fullPath = path.join(currentDir, entry.name);
|
|
65
|
-
|
|
66
|
-
if (entry.isDirectory()) {
|
|
67
|
-
// Skip directories in our skip list
|
|
68
|
-
if (skipDirs.includes(entry.name)) {
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
// Recurse into other directories
|
|
72
|
-
walk(fullPath);
|
|
73
|
-
} else if (entry.isFile()) {
|
|
74
|
-
// Add file to results
|
|
75
|
-
results.push(fullPath);
|
|
76
|
-
}
|
|
77
|
-
// Skip symlinks and other special entries
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
walk(dirPath);
|
|
82
|
-
return results;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Copy a file from source to destination, creating parent directories if needed.
|
|
87
|
-
* This function overwrites the destination file if it exists.
|
|
88
|
-
*
|
|
89
|
-
* @param {string} sourcePath - Absolute path to the source file
|
|
90
|
-
* @param {string} destPath - Absolute path to the destination file
|
|
91
|
-
* @returns {boolean} True if copy succeeded, false otherwise
|
|
92
|
-
*/
|
|
93
|
-
function copyFile(sourcePath, destPath) {
|
|
94
|
-
try {
|
|
95
|
-
// Read the source file
|
|
96
|
-
const content = fs.readFileSync(sourcePath);
|
|
97
|
-
// Write to the destination (this overwrites if exists)
|
|
98
|
-
fs.writeFileSync(destPath, content);
|
|
99
|
-
return true;
|
|
100
|
-
} catch (err) {
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Check if a file exists at the given path.
|
|
107
|
-
*
|
|
108
|
-
* @param {string} filePath - Absolute path to check
|
|
109
|
-
* @returns {boolean} True if file exists and is a regular file
|
|
110
|
-
*/
|
|
111
|
-
function fileExists(filePath) {
|
|
112
|
-
try {
|
|
113
|
-
const stats = fs.statSync(filePath);
|
|
114
|
-
return stats.isFile();
|
|
115
|
-
} catch (err) {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Check if a directory exists at the given path.
|
|
122
|
-
*
|
|
123
|
-
* @param {string} dirPath - Absolute path to check
|
|
124
|
-
* @returns {boolean} True if directory exists
|
|
125
|
-
*/
|
|
126
|
-
function directoryExists(dirPath) {
|
|
127
|
-
try {
|
|
128
|
-
const stats = fs.statSync(dirPath);
|
|
129
|
-
return stats.isDirectory();
|
|
130
|
-
} catch (err) {
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Pure Node.js implementation that works on any platform.
|
|
137
|
-
* This function contains the cross-platform logic using only Node.js APIs.
|
|
138
|
-
*
|
|
139
|
-
* The function walks through all files in the target directory, and for each
|
|
140
|
-
* file it checks if a corresponding file exists in the source directory
|
|
141
|
-
* (at the same relative path). If it does, the source file is copied over
|
|
142
|
-
* the target file, effectively "refreshing" it.
|
|
143
|
-
*
|
|
144
|
-
* @param {string[]} args - Command line arguments
|
|
145
|
-
* @param {string} args[0] - Source folder path (required)
|
|
146
|
-
* @param {string} [args[1]] - Target folder path (defaults to current directory)
|
|
147
|
-
* @returns {Promise<void>}
|
|
148
|
-
*/
|
|
149
|
-
async function do_refresh_files_nodejs(args) {
|
|
150
|
-
// Parse arguments
|
|
151
|
-
const sourceArg = args[0];
|
|
152
|
-
const targetArg = args[1];
|
|
153
|
-
|
|
154
|
-
// Validate source argument is provided
|
|
155
|
-
if (!sourceArg) {
|
|
156
|
-
console.error('Error: Source folder not supplied.');
|
|
157
|
-
console.error('');
|
|
158
|
-
console.error('USAGE: refresh-files SOURCE_FOLDER [TARGET_FOLDER]');
|
|
159
|
-
console.error('');
|
|
160
|
-
console.error('This command compares files in the target directory with the source');
|
|
161
|
-
console.error('directory and copies over files that exist in both locations from');
|
|
162
|
-
console.error('the source. Files are only updated, never added or removed.');
|
|
163
|
-
console.error('');
|
|
164
|
-
console.error('Arguments:');
|
|
165
|
-
console.error(' SOURCE_FOLDER Path to the reference/stable project');
|
|
166
|
-
console.error(' TARGET_FOLDER Path to update (defaults to current directory)');
|
|
167
|
-
process.exit(1);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Resolve paths to absolute paths
|
|
171
|
-
const sourcePath = path.resolve(sourceArg);
|
|
172
|
-
const targetPath = targetArg ? path.resolve(targetArg) : process.cwd();
|
|
173
|
-
|
|
174
|
-
// Validate source directory exists
|
|
175
|
-
if (!directoryExists(sourcePath)) {
|
|
176
|
-
console.error(`Error: Source folder does not exist: ${sourcePath}`);
|
|
177
|
-
process.exit(1);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// Validate target directory exists
|
|
181
|
-
if (!directoryExists(targetPath)) {
|
|
182
|
-
console.error(`Error: Target folder does not exist: ${targetPath}`);
|
|
183
|
-
process.exit(1);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// Print operation header
|
|
187
|
-
console.log('Refreshing files...');
|
|
188
|
-
console.log(`FROM: ${sourcePath}`);
|
|
189
|
-
console.log(`TO : ${targetPath}`);
|
|
190
|
-
console.log('-----');
|
|
191
|
-
|
|
192
|
-
// Find all files in the target directory (excluding node_modules, etc.)
|
|
193
|
-
const targetFiles = findFilesRecursively(targetPath, SKIP_DIRECTORIES);
|
|
194
|
-
|
|
195
|
-
// Track statistics
|
|
196
|
-
let refreshedCount = 0;
|
|
197
|
-
let failedCount = 0;
|
|
198
|
-
const failedFiles = [];
|
|
199
|
-
|
|
200
|
-
// For each file in target, check if it exists in source and copy if so
|
|
201
|
-
for (const targetFile of targetFiles) {
|
|
202
|
-
// Calculate the relative path from target root
|
|
203
|
-
const relativePath = path.relative(targetPath, targetFile);
|
|
204
|
-
|
|
205
|
-
// Construct the corresponding source file path
|
|
206
|
-
const sourceFile = path.join(sourcePath, relativePath);
|
|
207
|
-
|
|
208
|
-
// Check if this file exists in the source directory
|
|
209
|
-
if (fileExists(sourceFile)) {
|
|
210
|
-
// File exists in both locations - copy from source to target
|
|
211
|
-
const success = copyFile(sourceFile, targetFile);
|
|
212
|
-
|
|
213
|
-
if (success) {
|
|
214
|
-
// Use forward slashes for display (matches original bash output)
|
|
215
|
-
const displayPath = relativePath.split(path.sep).join('/');
|
|
216
|
-
console.log(displayPath);
|
|
217
|
-
refreshedCount++;
|
|
218
|
-
} else {
|
|
219
|
-
failedCount++;
|
|
220
|
-
failedFiles.push(relativePath);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
// If file doesn't exist in source, we simply skip it (no output)
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// Print summary
|
|
227
|
-
console.log('-----');
|
|
228
|
-
console.log(`Files refreshed: ${refreshedCount}`);
|
|
229
|
-
|
|
230
|
-
// Report any failures
|
|
231
|
-
if (failedCount > 0) {
|
|
232
|
-
console.log('');
|
|
233
|
-
console.log(`Failed to refresh ${failedCount} file${failedCount === 1 ? '' : 's'}:`);
|
|
234
|
-
for (const file of failedFiles) {
|
|
235
|
-
console.log(` - ${file}`);
|
|
236
|
-
}
|
|
237
|
-
console.log('');
|
|
238
|
-
console.log('Tip: Check file permissions on the above files.');
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Refresh files from source to target directory on macOS.
|
|
244
|
-
* Uses the pure Node.js implementation since file operations work identically.
|
|
245
|
-
*
|
|
246
|
-
* @param {string[]} args - Command line arguments
|
|
247
|
-
* @returns {Promise<void>}
|
|
248
|
-
*/
|
|
249
|
-
async function do_refresh_files_macos(args) {
|
|
250
|
-
return do_refresh_files_nodejs(args);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Refresh files from source to target directory on Ubuntu.
|
|
255
|
-
* Uses the pure Node.js implementation since file operations work identically.
|
|
256
|
-
*
|
|
257
|
-
* @param {string[]} args - Command line arguments
|
|
258
|
-
* @returns {Promise<void>}
|
|
259
|
-
*/
|
|
260
|
-
async function do_refresh_files_ubuntu(args) {
|
|
261
|
-
return do_refresh_files_nodejs(args);
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
/**
|
|
265
|
-
* Refresh files from source to target directory on Raspberry Pi OS.
|
|
266
|
-
* Uses the pure Node.js implementation since file operations work identically.
|
|
267
|
-
*
|
|
268
|
-
* @param {string[]} args - Command line arguments
|
|
269
|
-
* @returns {Promise<void>}
|
|
270
|
-
*/
|
|
271
|
-
async function do_refresh_files_raspbian(args) {
|
|
272
|
-
return do_refresh_files_nodejs(args);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Refresh files from source to target directory on Amazon Linux.
|
|
277
|
-
* Uses the pure Node.js implementation since file operations work identically.
|
|
278
|
-
*
|
|
279
|
-
* @param {string[]} args - Command line arguments
|
|
280
|
-
* @returns {Promise<void>}
|
|
281
|
-
*/
|
|
282
|
-
async function do_refresh_files_amazon_linux(args) {
|
|
283
|
-
return do_refresh_files_nodejs(args);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* Refresh files from source to target directory on Windows Command Prompt.
|
|
288
|
-
* Uses the pure Node.js implementation since file operations work identically.
|
|
289
|
-
*
|
|
290
|
-
* @param {string[]} args - Command line arguments
|
|
291
|
-
* @returns {Promise<void>}
|
|
292
|
-
*/
|
|
293
|
-
async function do_refresh_files_cmd(args) {
|
|
294
|
-
return do_refresh_files_nodejs(args);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* Refresh files from source to target directory on Windows PowerShell.
|
|
299
|
-
* Uses the pure Node.js implementation since file operations work identically.
|
|
300
|
-
*
|
|
301
|
-
* @param {string[]} args - Command line arguments
|
|
302
|
-
* @returns {Promise<void>}
|
|
303
|
-
*/
|
|
304
|
-
async function do_refresh_files_powershell(args) {
|
|
305
|
-
return do_refresh_files_nodejs(args);
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* Refresh files from source to target directory on Git Bash.
|
|
310
|
-
* Uses the pure Node.js implementation since file operations work identically.
|
|
311
|
-
*
|
|
312
|
-
* @param {string[]} args - Command line arguments
|
|
313
|
-
* @returns {Promise<void>}
|
|
314
|
-
*/
|
|
315
|
-
async function do_refresh_files_gitbash(args) {
|
|
316
|
-
return do_refresh_files_nodejs(args);
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Main entry point - detects environment and executes appropriate implementation.
|
|
321
|
-
*
|
|
322
|
-
* Compares files in the target directory with a source directory and copies
|
|
323
|
-
* over files that exist in BOTH locations from the source. This is useful for
|
|
324
|
-
* refreshing project files from a stable/reference copy.
|
|
325
|
-
*
|
|
326
|
-
* Key behavior:
|
|
327
|
-
* - Only updates files that already exist in the target
|
|
328
|
-
* - Does NOT add new files to the target
|
|
329
|
-
* - Does NOT remove files from the target
|
|
330
|
-
* - Skips node_modules, bower_components, and .git directories
|
|
331
|
-
*
|
|
332
|
-
* Usage:
|
|
333
|
-
* refresh-files /path/to/source # Refresh current directory
|
|
334
|
-
* refresh-files /path/to/source /path/to/target # Refresh specific directory
|
|
335
|
-
*
|
|
336
|
-
* Example scenario:
|
|
337
|
-
* You have a "golden" project with known-good configuration files.
|
|
338
|
-
* You want to update your working project with those configurations.
|
|
339
|
-
* Running refresh-files will copy only files that exist in both places.
|
|
340
|
-
*
|
|
341
|
-
* @param {string[]} args - Command line arguments
|
|
342
|
-
* @returns {Promise<void>}
|
|
343
|
-
*/
|
|
344
|
-
async function do_refresh_files(args) {
|
|
345
|
-
const platform = os.detect();
|
|
346
|
-
|
|
347
|
-
const handlers = {
|
|
348
|
-
'macos': do_refresh_files_macos,
|
|
349
|
-
'ubuntu': do_refresh_files_ubuntu,
|
|
350
|
-
'debian': do_refresh_files_ubuntu,
|
|
351
|
-
'raspbian': do_refresh_files_raspbian,
|
|
352
|
-
'amazon_linux': do_refresh_files_amazon_linux,
|
|
353
|
-
'rhel': do_refresh_files_amazon_linux,
|
|
354
|
-
'fedora': do_refresh_files_ubuntu,
|
|
355
|
-
'linux': do_refresh_files_ubuntu,
|
|
356
|
-
'wsl': do_refresh_files_ubuntu,
|
|
357
|
-
'cmd': do_refresh_files_cmd,
|
|
358
|
-
'windows': do_refresh_files_cmd,
|
|
359
|
-
'powershell': do_refresh_files_powershell,
|
|
360
|
-
'gitbash': do_refresh_files_gitbash
|
|
361
|
-
};
|
|
362
|
-
|
|
363
|
-
const handler = handlers[platform.type];
|
|
364
|
-
if (!handler) {
|
|
365
|
-
console.error(`Platform '${platform.type}' is not supported for this command.`);
|
|
366
|
-
console.error('');
|
|
367
|
-
console.error('Supported platforms:');
|
|
368
|
-
console.error(' - macOS');
|
|
369
|
-
console.error(' - Ubuntu, Debian, and other Linux distributions');
|
|
370
|
-
console.error(' - Raspberry Pi OS');
|
|
371
|
-
console.error(' - Amazon Linux, RHEL, Fedora');
|
|
372
|
-
console.error(' - Windows (CMD, PowerShell, Git Bash)');
|
|
373
|
-
process.exit(1);
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
await handler(args);
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
module.exports = {
|
|
380
|
-
main: do_refresh_files,
|
|
381
|
-
do_refresh_files,
|
|
382
|
-
do_refresh_files_nodejs,
|
|
383
|
-
do_refresh_files_macos,
|
|
384
|
-
do_refresh_files_ubuntu,
|
|
385
|
-
do_refresh_files_raspbian,
|
|
386
|
-
do_refresh_files_amazon_linux,
|
|
387
|
-
do_refresh_files_cmd,
|
|
388
|
-
do_refresh_files_powershell,
|
|
389
|
-
do_refresh_files_gitbash
|
|
390
|
-
};
|
|
391
|
-
|
|
392
|
-
if (require.main === module) {
|
|
393
|
-
do_refresh_files(process.argv.slice(2));
|
|
394
|
-
}
|